HTTP 파라미터 오염

HTTP parameter pollution

HTTP Parameter Pollution(HPP; HTTP 매개 변수 오염)은 이미 존재하는 매개 변수에 인코딩된 쿼리 문자열 구분 기호를 삽입하여 부정 이용하는 웹 응용 프로그램 취약성입니다.이 취약성은 사용자 입력이 웹 [1]응용 프로그램에 의해 출력되도록 올바르게 인코딩되지 않은 경우 발생합니다.이 취약성을 통해 웹 응용 프로그램에서 만든 URL에 매개 변수를 주입할 수 있습니다.2009년 OWASP EU09 [1]폴란드 회의에서 Stefano di Paola와 Luca Carlettoni에 의해 일반에 처음 소개되었습니다.이러한 취약성의 영향은 다양하며, "단순한 짜증"에서 웹 응용 프로그램의 의도된 동작을 완전히 중단하는 것까지 다양합니다.웹 응용 프로그램의 동작을 변경하기 위해 HTTP 매개 변수를 재정의하고 입력 및 액세스 유효성 검사점을 바이패스하는 것 및 기타 간접적인 취약성은 HPP [1]공격의 결과일 수 있습니다.

복수의 파라미터를 넘었을 경우의 대처에 관한 RFC 규격은 없습니다.채널 간 오염, CSRF 보호 바이패스WAF 입력 검증 [2]체크에 HPP를 사용할 수 있습니다.

행동

같은 이름의 여러 파라미터를 전달한 경우 백엔드는 다음과 같이 [3]동작합니다.

행동
테크놀로지 해석 결과
ASP.NET/IIS 모든 항목이 쉼표로 연결되어 있습니다. param=val1,val2
ASP/IIS 모든 항목이 쉼표로 연결되어 있습니다. param=val1,val2
PHP/Apache 마지막 오카렌스만 param=val2
PHP/Zeus 마지막 오카렌스만 param=val2
JSP, Servlet/Apache Tomcat 최초 발생만 param=val1
JSP, Servlet/Oracle 애플리케이션 서버 최초 발생만 param=val1
JSP, 서블릿/제티 최초 발생만 param=val1
IBM Lotus Domino 마지막 오카렌스만 param=val2
IBM HTTP 서버 최초 발생만 param=val1
mod_perl,libapreq2/Apache 최초 발생만 param=val1
Perl CGI/Apache 최초 발생만 param=val1
mod_wsgi(Python)/아파시 최초 발생만 param=val1
Python/Zope 목록(배열)의 모든 항목 param=['val1', val2']

종류들

클라이언트측

  • 퍼스트 오더/반영 HPP[4]
  • 2차 주문/저장된[4] HPP
  • 서드 오더 / DOM HPP[4]

서버측

  • 표준[4] HPP
  • 2차 주문[4] HPP

예방

HPP [5]상의 웹 테크놀로지에 대한 적절한 입력 검증 및 인식은 HTTP 파라미터 오염으로부터 보호하는 것입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c Balduzi et al. 2011, 페이지 2
  2. ^ "HTTP Parameter Pollution Vulnerabilities in Web Applications" (PDF). 2011.
  3. ^ "WSTG - Latest:Testing for HTTP Parameter Pollution".
  4. ^ a b c d e Luca Carettoni and Stefano Di Paola. "HTTP Parameter Pollution" (PDF).{{cite web}}: CS1 maint: 작성자 파라미터 사용(링크)
  5. ^ "How to Detect HTTP Parameter Pollution Attacks".

참고 문헌