#HTTP Method
#HTTP 헤더
#XST
#Cross-site Tracing
#세션탈취
#HttpOnly
#HttpOnly 우회
#AJAX
#XMLHttpRequest
#취약점해설
TRACE와 XST(Cross-site Tracing) 공격
웹 취약점 스캐너들이 TRACE 메소드는 XST에 취약하다고 쏟아낸다 (TRACE 메소드 수동점검 방법도 참조).
다음 예는 nikto 웹취약점탐색기의 XST 점검항목이다.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
[ ↑ Nikto의 HTTP TRACE method 탐지 사례 ]
Apache의 TRACE 비활성화 방법
- Apache 1.3.34 이상, Apache2 2.0.55 이상
TraceEnable off
아파치 웹서버 설정 파일인 httpd.conf 또는 apache2.conf 파일에
TraceEnable off 한줄을 추가하고 아파치 웹서버를 재시작하면 된다.
최근에 배포되는 Apache 웹 서버나 Apache Tomcat의 경우에는 기본적으로 TRACE가 비활성화되어 있다.
TRACE를 이용한 XST(Cross-site Tracing) 공격 개요
2002년에 MS가 자사의 인터넷 익스플로러 6.0 SP1에 HttpOnly 라는
개념을 도입하여 XSS 공격에 의한 세션탈취를 방지하였다.
세션쿠키(또는 세션ID)에 HttpOnly라는 속성을 부여하면 HTTP 통신에서만 이 쿠키를 사용하게 함으로써
자바스크립트나 기타 클라이언트 측 프로그램이 해당 쿠키를 접근할 수 없도록 차단하는 방법이다.
간단하면서도 효과적인 세션탈취 방어책이다.
그런데 2003년에 TRACE 메소드를 허용하는 웹서버에서는 이 HttpOnly 방어책을
우회할 수 있는 방법이 발견되었다(Jeremiah Grossman의 Cross-site Tracing 최초 보고서).
TRACE 메소드는 웹 브라우저가 보내는 HTTP 통신을 반사하는 역할을 한다.
그런데 HTTP 통신 상에는 클라이언트가 보내는 쿠키가 포함되므로 이 통신을 가로채면
HttpOnly로 선언된 쿠키값도 탈취를 할 수 있다.
root@kali:~# curl -v --cookie "PHPSESSID=dgklrb9cmv44lad6tbti706mv7" -X TRACE http://www.memozee.com/
* Trying 222.237.78.13...
* Connected to www.memozee.com (222.237.78.13) port 80 (#0)
> TRACE / HTTP/1.1
> Host: www.memozee.com
> User-Agent: curl/7.47.0
> Accept: */*
> Cookie: PHPSESSID=dgklrb9cmv44lad6tbti706mv7
>
< HTTP/1.1 200 OK
< Date: Fri, 11 Nov 2016 05:52:01 GMT
< Server: Apache
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: message/http
<
TRACE / HTTP/1.1
Host: www.memozee.com
User-Agent: curl/7.47.0
Accept: */*
Cookie: PHPSESSID=dgklrb9cmv44lad6tbti706mv7
* Closing connection 0
root@kali:~#
http://www.memozee.com/ 은
현재 TRACE 메소드가 허용되고 있는 누리집이다.
위와 같이 curl을 이용하여 접속하면 웹브라우저가 보내는 모든 값(<주황색)이 서버의 응답 내용에 포함되어
반환(주황색)되는 것을 볼 수 있다.
PHPSESSID 가 HttpOnly로 선언되었다고 하더라도 TRACE 메소드의 서버응답에는 사용자의 쿠키가
노출된다.
이것을 자바스크립트로 읽어서 공격자에게 보내면 결국 세션탈취에 성공하게 된다.
[ ↑ www.memozee.com의 쿠키정보: PHPSESSID에 대해서 HttpOnly 선언됨 ]
위의 그림은 FireFox로 http://www.memozee.com/에 접속한 화면이다. 파이어폭스의 부가기능인 FireBug를
이용하여 쿠키를 살펴볼 수 있다.
그림에서 볼 수 있듯이 PHPSESSID 는 HttpOnly 로 선언되어 있다.
[ ↑ OWASP-ZPA 프록시로 www.memozee.com에 대한 TRACE 메소드를 실행한 화면 ]
http://www.memozee.com/에 재접속하면서 OWASP-ZAP을 이용하여 GET 메소드를
TRACE 로 변경하여 보았다.
클라이언트의 요청 값 모두가 서버 응답의 본문(BODY)에 그대로 출력되는 것을 관찰할 수 있다.
Jeremiah Grossman은 이러한 점을 이용하여 HttpOnly로 선언된 쿠키를 탈취할 수 있는 방법을 제시하였다.
다음과 같이 AJAX에서 XMLHttpRequest 로 TRACE 메소드를 보내고
그 결과를 alert() 창에 띄우는 것이 개념증명(PoC, Proof of Concept)의 요점이다.
<script type="text/javascript">
<!--
function sendTrace () {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("TRACE", "http://foo.bar",false);
xmlHttp.send();
xmlDoc=xmlHttp.responseText;
alert(xmlDoc);
}
//-->
</script>
<INPUT TYPE=BUTTON OnClick="sendTrace();" VALUE="Send Trace Request">
실제 공격이라면 위의 PoC에서 사용한 alert() 대신 공격자에게 그 값을 전달하도록 할 것이다.
XST 공격 시나리오
- 공격자가 표적 홈페이지의 XSS 취약점을 찾아낸다.
- 공격자가 XSS 취약점을 바탕으로 공격코드를 작성하여 관리자에게 메일을 보낸다.(게시판을 이용할 수도 있다.)
- 관리자는 -- 로그인한 상태에서 -- 메일에 포함된 공격코드 링크를 클릭한다. (클릭없이 자동으로 실행되게 할수도 있다.)
- 웹 브라우저는 XMLHttpRequest를 통해 서버에 TRACE로 접속하여 그 내용을 읽은 후 공격자에게 전송한다.
- 공격자는 전송받은 데이터에서 세션 쿠키를 추출하여 표적 홈페이지에 접속하면 관리자 권한을 획득한다.
공략가능성: 낮음
현재 많이 사용하는 거의 모든 웹 브라우저는 XHR(XMLHttpRequest)에서 TRACE를 실행하지 못하도록 제한하고 있다.
이 때문에 Jeremiah Grossman이 보여주었던 AJAX를 이용한 TRACE 공략법은 현재 불가능한 것으로 알려져 있다.
다만, 플래쉬(Flash)와 같은 다른 플러그인(Plug-in)에서 XST 취약점을 공략할 수 있는 가능성은 남아있다.
참고할만한 바깥고리
[처음 작성한 날: 2016.11.11]
[마지막으로 고친 날: 2016.11.11]
< 이전 글 : HTTP 세션 탈취와 IP보안 (2016.11.11)
> 다음 글 : 세션쿠키와 HttpOnly (2016.11.10)
이 저작물은 크리에이티브
커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.
잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다.
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ ..
...... ... ... ] .. [ .../ ..../ ......./ ..
./// ../ ... .. ...
.. -- -- | - .. .... | ... / .. .../ ... {] . .. .. .. ..| ...... .../ .../ .. ./// ../ ... .. ...
...| ..../ ./ ... / ..| ....| ........ / ... / ....
...... ... ... ] .. [ .../ ..../ ......./ .....| ..../ ./ ... / ..| ....| ........ / ... / ....
...| ..../ ./ ... / ..| ....| ........ / ... / ....
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|