KOROMOON

착한 사마리아인이 되고 싶습니다.

9/10/2025

[Root Me] WEB-Server_HTTP - Verb tampering


( 1 ) 문제 정보



Bypass the security establishment.


보안 시설을 우회합니다.




( 2 ) 문제 요점


기초적인 HTTP Verb Tampering 취약점 문제임.




( 3 ) HTTP Verb Tampering 취약점


HTTP Verb Tampering 취약점은 HTTP 동사(HTTP 메서드라고도 함) 인증 및 접근 제어 메커니즘의 취약점을 악용하는 공격임.

많은 인증 메커니즘은 가장 일반적인 HTTP 메서드에 대한 접근만 제한하여, 다른 HTTP 메서드가 제한된 리소스에 무단으로 접근할 수 있도록 허용함.


많은 웹서버 인증 메커니즘은 동사 기반 인증 및 접근 제어를 사용함.

이러한 보안 메커니즘에는 특정 HTTP 메서드를 사용하는 요청에 대한 접근 제어 규칙이 포함됨.

예를 들어, 관리자는 HTTP GET 요청을 사용하여 웹 페이지에 대한 무제한 접근을 허용하지만 POST 요청은 관리자에게만 허용하도록 웹 서버를 구성할 수 있음.

그러나 동사 기반 보안 메커니즘의 많은 구현은 보안 규칙을 안전하지 않은 방식으로 적용하여 HEAD와 같은 대체 HTTP 메서드나 임의 문자열을 사용하여 제한된 리소스에 대한 접근을 허용함.


예를 들어, Java Platform Enterprise Edition(Java EE)은 web.xml 구성 파일을 통해 동사 기반 인증 및 접근 제어를 지원함.

Java EE에서는 web.xml 에 다음을 추가하여 "admin" 사용자의 admin/  디렉터리 접근을 제한할 수 있음.


<security-constraint>

<web-resource-collection>

<url-pattern>/admin/*</url-pattern>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>admin</role-name>

</auth-constraint>

</security-constraint>


이러한 보안 규칙은 관리자가 아닌 사용자가 admin/ 디렉터리에 보내는 GET 또는 POST 요청을 차단함.

그러나 GET 또는 POST 요청이 아닌 admin/ 디렉터리에 보내는 HTTP 요청은 차단되지 않음.

관리자가 아닌 사용자가 보내는 GET 요청은 차단되지만, 같은 사용자가 보내는 HEAD 요청은 차단되지 않음.

관리자가 GET 및 POST 이외의 모든 메서드를 거부하도록 웹 서버를 명시적으로 구성하지 않는 한, 서버에서 지원하는 다른 메서드를 사용하는 것만으로도 접근 제어 메커니즘을 우회할 수 있음.

이 문제의 영향을 받는 다른 웹 서버로는 IIS 6.0, Apache 2.2.8, TomCat 6.0 등이 있음.


일부 웹 서버(예: Apache 2.2/PHP)에서는 HTTP 메서드에 임의의 문자열을 사용하여 접근 제어 메커니즘을 우회할 수도 있음.

이러한 웹 서버는 특정 HTTP 메서드에 바인딩되지 않은 요청에 대한 기본 처리기를 구현함.

doGet()이 정의된 경우에만 GET 요청이 처리되는 HTTP 서블릿과 달리, 일부 웹 서버는 알려지지 않은 메서드를 포함한 모든 메서드를 처리하려고 시도함.

따라서 합법적인 메서드를 임의의 메서드(GET 대신 MPRV)로 대체함으로써 공격자는 내부 처리 로직의 취약점을 악용하여 접근 제어 메커니즘을 우회할 수 있음.




( 4 ) flag 찾기


1. 프록시 툴로 HTTP 메서드를 변조함.

flag 값이 응답함.




참고 사이트 : 

https://www.imperva.com/learn/application-security/http-verb-tampering/


댓글 없음:

댓글 쓰기