웹 서버는 일반적으로 보안을 위하여 GET, POST, OPTIONS, HEAD 메서드만을 사용하는 경우가 많다.
하지만 웹 서버 설정에 따라 다른 메서드를 허용하는 경우가 있다.
- PUT : 리소스를 서버에 업데이트
- DELETE : 리소스를 서버에서 삭제
위 두개의 메서드의 경우 웹 서버의 파일을 삽입, 삭제, 변조가 가능하다.
즉, 웹 서버의 서비스되는 페이지의 변조 뿐만이아니라 웹쉘 등과 같은 치명적인 악성 파일을 업로드 하는 것도 가능하다.
물론 이또한 설정을 통해 메서드는 허용되지만 위와같은 작업은 차단하는 경우도 있다.
다만 PUT과 DELETE 메서드를 허용하는 경우 이에 대한 점검은 해봐야 한다.
PUT과 DELETE보다 생소한 메서드인 TRACE에서도 취약점이 존재한다.
- TRACE : 요청 리소스가 수신되는 경로를 보여줌. 즉, 웹 헤더의 요청이 그대로 응답 내용에 포함되어 응답된다.
TRACE 헤더가 위험한 이유는 XSS와 연계되어서 쿠키값을 탈취 할 수 있다는점에 있다.
요청 헤더에서는 쿠키값이 포함되어있다. 그런데 헤더가 응답값에 포함되어 전달받기 때문에 이 웹 헤더가 포함된 내용을 공격자 서버로 전송하여 쿠키값을 탈취하는 것이다. 이것이 XST(cross-site traing) 공격이다.
그렇다면 의문이 하나 들것이다.
XSS가 가능하다면 document.cookie를 통해 바로 쿠키값을 탈취하면 되는것 아닌가.
물론 위 방법이 더 간단하다. 다만 쿠키값에 HTTPONLY 속성이 붙어있다면 script를 통한 쿠키 접근이 전부 거부된다.
이 경우세 사용 가능한것이 XST이다. XST의 경우는 script를 사용하여 쿠키에 접근하는것이 아닌 응답값(에 포함된 쿠키값)을 전송하는것이므로 공격이 가능하다.
아래는 XST 공격 스크립트 예시이다.
<script>
var xmlhttp = new XMLHttpRequest();
var url = '';
xmlhttp.withCredentials = true; //send cookie header
xmlhttp.open('TRACE', url, false);
xmlhttp.send();
</script>
다만 XST의 문제점도 분명하다. 현존하는 대부분의 브라우저가 보안 목적으로 TRACE 메서드 전송을 막아두었다.
따라서 위와같은 TRACE 메서드를 취약점이라고 볼 수도 있으나 관점에 따라 공격이 불가능한, 취약점이 아닌 부분이라고 생각 할 수도 있을 것이다.
'모의해킹 및 보안' 카테고리의 다른 글
OWASP TOP 10 ver.2021 (1) | 2024.09.02 |
---|---|
[금취분평] 이용자 입력 정보 보호 (0) | 2023.07.21 |
Iq Spoofing 웹사이트 Post-Exploit (0) | 2023.06.08 |
File Upload 시나리오 : webshell, shoutdown etc. (0) | 2023.06.03 |
Directory Traver Attack (0) | 2023.06.03 |