본문 바로가기

Hack The Box CBBH

CBBH - Web Attacks[Bypassing Security Filters]

다른 유형이면서도 더 흔한 HTTP Verb Tampering 취약점은 보안이 취약한 코딩으로 인한 발생한다. 이는 웹 애플리케이션 개발 과정에서 특정 기능에서 모든 HTTP Method를 고려하지 않았을 때 발생할 수 있다.

이러한 문제는 주로 악성 요청을 감지하는 보안 필터에서 발견된다.

예를 들어, 보안 필터가 POST 파라미터 $_POST['parameter'] 에서만 인젝션 취약점을 검사하도록 설정된 경우, 공격자는 요청 메서드를 GET으로 변경해 보안 필터를 우회할 가능성이 있다.

Identify

파일 관리 웹 애플리케이션에서 특수 문자가 포함된 새 이름 파일을 생성하려고 하면 다음과 같은 메시지를 받는다. 파일 이름을 test; 설정하면 Malicious Request Denied! 가 출력된다.

이 메시지를 통해 백엔드에서 특정 보안 필터를 사용해 인젝션 시도를 감지하고, 악성 요청을 차단하고 있음을 보여준다.

우리가 어떤 입력값을 시도하더라도, 웹 애플리케이션은 이를 적절히 차단하고 있어 인젝션 공격에 대해 안전해 보인다.

그러나 우리는 HTTP Verb Tampering을 시도해 보안 필터 자체를 완전히 우회할 수 있는지 확인할 수 있다.

Exploit

이 취약점을 악용하려면 Burp Suite에서 요청을 가로채고, Method 바꾸기 기능을 사용해 메서드를 변경할 수 있다.

이에 Malicious Request Denied! 메시지는 출력되지 않고, test 파일이 생성된 것을 확인할 수 있다.

이제, 보안 필터를 우회했는지 확인하기 위해 Command Injection 취약점이 가능한지 직접 테스트해볼 수 있다.

테스트를 위해 test1; whoami > test2; 명령어를 주입해봤다.

성공적으로 test2 파일이 생성된 것을 웹 페이지에서 확인할 수 있었고, 파일을 눌러보면 www-data 인 것을 확인할 수 있다.

이를 통해, 우리는 HTTP Verb Tampering 취약점을 이용해 보안 필터를 우회하고 Command Injection을 수행하는 데 성공했다. 만약 HTTP Verb Tampering 취약점이 존재하지 않으면 Command Injection 공격으로부터 안전했을 것이다. 그러나, 이 취약점으로 인해 보안 필터가 무력화되었으며, 공격자가 보호 기능을 우회할 수 있었다.