What I learned while dealing with vulnerabilities
Background
BHI Security 팀에서 Internal VAPT 수행 시, 내가 관리하고 있는 smokeping* 서버에 TRACE Method가 열려있다는 문제가 발견되었고 이를 수정하기를 요청하였다.
* Smokeping은 네트워크 모니터링 툴
What is HTTP TRACE? And Why should we disable it?
TRACE Method의 사전적 정의는 아래와 같다.
TRACE is a HTTP request method used for debugging which echo’s back input back to the user.
즉, TRACE Method를 사용하면 서버에 루프백 메시지를 호출하여 쿠키 및 세션값을 얻을 수 있고, 이는 공격 포인트로 사용될 수 있기 때문에 비활성화 할 것을 권고한다.
How to check if a server provide TRACE Method?
너무나 명확하게 VAPT 결과로 TRACE Method를 사용한다고 보고 되었지만, 내 눈으로 직접 해당 서버에서 TRACE Method가 사용되는지 확인하고 싶었다.
찾아보니 curl, nmap, netcat, nikto 등을 사용할 수 있고, 나는 그 중에 가장 익숙한/만만한 curl을 사용해서 TRACE Method의 사용여부를 확인했다.
How to disable it?
그렇다면 어떻게 대응할 수 있을까?
일단 Apache 웹서버 버전에 따라 대응 방법이 다르다. 이 글에서는 apache 2.4.6 버전을 기준으로 한다.
Apache 2.4.6에서는 httpd.conf 파일에 옵션을 추가하여 대응할 수 있다.
/etc/httpd/conf/httpd.conf 파일에 아래 구문 추가 # Trace
TraceEnable Off
만일 해당 옵션이 없다면 그냥 수동으로 추가해주면 된다. 이걸 모르고 ‘나는 왜 저 구문이 없는가..’ 고민하면서 1시간 동안 헤매다가 수동으로 추가해주니 해결되었음. 😗
아 그리고 conf 파일 수정 후에는 반드시 apache 데몬을 재시작하여 변경사항을 반영해주어야 한다. ( systemctl reload/restart httpd
command 사용)
Result
다시 한번 curl로 확인해보면 ‘405 Method Not Allowed’ 코드가 날라오는 것을 확인할 수 있다.
_
🍰