Parameter Pollution

파라미터 오염

HackTricks 지원하기

HTTP 파라미터 오염 (HPP) 개요

HTTP 파라미터 오염 (HPP)은 공격자가 HTTP 파라미터를 조작하여 웹 애플리케이션의 동작을 의도하지 않은 방식으로 변경하는 기술입니다. 이 조작은 HTTP 파라미터를 추가, 수정 또는 복제함으로써 이루어집니다. 이러한 조작의 효과는 사용자에게 직접적으로 보이지 않지만, 서버 측에서 애플리케이션의 기능을 상당히 변경할 수 있으며, 클라이언트 측에서 관찰 가능한 영향을 미칠 수 있습니다.

HTTP 파라미터 오염 (HPP) 예시

은행 애플리케이션 거래 URL:

  • 원본 URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

추가 from 파라미터를 삽입함으로써:

  • 조작된 URL: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

거래가 accountA가 아닌 accountC에 잘못 청구될 수 있으며, 이는 HPP가 거래 또는 비밀번호 재설정, 2FA 설정, API 키 요청과 같은 다른 기능을 조작할 수 있는 가능성을 보여줍니다.

기술별 파라미터 파싱

  • 파라미터가 파싱되고 우선순위가 매겨지는 방식은 기본 웹 기술에 따라 다르며, HPP가 어떻게 악용될 수 있는지에 영향을 미칩니다.

  • Wappalyzer와 같은 도구는 이러한 기술과 그 파싱 동작을 식별하는 데 도움을 줍니다.

PHP와 HPP 악용

OTP 조작 사례:

  • 맥락: 일회용 비밀번호(OTP)를 요구하는 로그인 메커니즘이 악용되었습니다.

  • 방법: Burp Suite와 같은 도구를 사용하여 OTP 요청을 가로채고, 공격자는 HTTP 요청에서 email 파라미터를 복제했습니다.

  • 결과: 최초 이메일을 위한 OTP가 조작된 요청에서 지정된 두 번째 이메일 주소로 전송되었습니다. 이 결함은 의도된 보안 조치를 우회하여 무단 접근을 허용했습니다.

이 시나리오는 OTP 생성을 위해 첫 번째 email 파라미터를 처리했지만, 전달을 위해 마지막 것을 사용한 애플리케이션의 백엔드에서의 중요한 간과를 강조합니다.

API 키 조작 사례:

  • 시나리오: 애플리케이션이 사용자가 프로필 설정 페이지를 통해 API 키를 업데이트할 수 있도록 허용합니다.

  • 공격 벡터: 공격자는 POST 요청에 추가 api_key 파라미터를 추가함으로써 API 키 업데이트 기능의 결과를 조작할 수 있음을 발견합니다.

  • 기술: Burp Suite와 같은 도구를 사용하여 공격자는 하나의 합법적인 api_key 파라미터와 하나의 악의적인 api_key 파라미터를 포함하는 요청을 작성합니다. 서버는 마지막 발생만 처리하여 공격자가 제공한 값으로 API 키를 업데이트합니다.

  • 결과: 공격자는 피해자의 API 기능을 제어하게 되어, 무단으로 개인 데이터에 접근하거나 수정할 수 있습니다.

이 예시는 API 키 관리와 같은 중요한 기능에서 안전한 파라미터 처리가 필요함을 더욱 강조합니다.

파라미터 파싱: Flask vs. PHP

웹 기술이 중복 HTTP 파라미터를 처리하는 방식은 다르며, HPP 공격에 대한 취약성에 영향을 미칩니다:

  • Flask: 쿼리 문자열 a=1&a=2에서 a=1과 같은 첫 번째 파라미터 값을 채택하여 초기 인스턴스를 후속 중복보다 우선시합니다.

  • PHP (Apache HTTP 서버에서): 반대로, 마지막 파라미터 값을 우선시하여 주어진 예에서 a=2를 선택합니다. 이 동작은 공격자가 조작한 파라미터를 원본보다 우선시함으로써 HPP 악용을 무심코 촉진할 수 있습니다.

참고 문헌

HackTricks 지원하기

Last updated