2017. 3. 4.

[웹 취약점] HTTP 메소드 -1


1. 불필요한 Method 지원여부 확인




1) Options Method
step 1)
#telnet test.go.kr 80

step 2)
OPTIONS /(또는 *) HTTP1.1

step 3)
결과 확인
예)
Server: Apache/2.2.6
Allow: GET, HEAD, POST, OPTIONS, TRACE
Content-Length: 304
Connection : close
Content-type : text/html

2) TRACE Method

c:\>telnet www.test.go.kr 80
TRACE / HTTP/1.1
HOST: www.nanum.info

3) PUT Method
C:\>telnet www.test.go.kr 80
PUT /test.txt HTTP/1.1
HOST: www.test.go.kr
Content-Length: 9

test1234(쓰고자하는 글 내용)

4) DELETE Method
C:\>telnet www.test.go.kr 80
DELETE /test.txt HTTP/1.1
HOST:www.test.go.kr

2. PUT 메소드 악용

HTTP 메소드는 GET, POST 등 데이터 전송 방식을 결정하는 요소이나 시스템 설정 및 불필요한 메소드 (PUT, DELETE 등) 악용을 통해 크로스 사이트 스크립팅 혹은 홈페이지 변조에 활용될 수 있다.

특히 PUT, DELETE 메소드로는 WebDAV 서비스와 함께 원격지 웹 서버에 파일을 생성하거나 삭제하는 FTP와 유사한 기능을 구현할 수 있다. 이는 웹 콘텐츠 디렉터리 및 httpext.dll 권한 할당 오류로 인해 인증 절차 없이 원격지 서버에 파일을 생성하거나 삭제할 수 있다.

기본적으로 웹 게시 폴더는 인터넷 사용자가 접근하는 폴더이기 때문에 게스트 계정을 가지는 웹 사용자는 쓰기 권한을 가진다. 그러나 웹 사용자가 웹을 통해 직접 내용을 쓰기 위해서는 HTTP의 확장된 기능인 WebDAV 기능이 지원되어야 한다. 따라서 WebDAV 서비스를 제공하는 파일인 httpext.dll에 인터넷 게스트 권한을 포함하는 Everyone이 모든 권한을 가지도록 할당하는 경우 인증없이 콘텐츠를 생성하거나 삭제할 수 있다.

** httpext.dll 파일은 \winnt\system32\system32\inetsrc\httpext.dll 에 존재하거나 \winddow\system32\inetserv\httpext.dll에 존재한다.

아래와 같이 PUT 메소드를 이용하여 /upload/Defacement.html 파일을 삽입하여 홈페이지 변조를 시도할 수 있다. 헤더에는 파일 생성위치를 넣고, body에는 파일 내용을 추가한다.


:: PUT 메소드

PUT /upload/Defacement.html HTTP/1.1
if-Modified-Since: Mon,
.
.
. (헤더 부분생략)

<HTML>
<p>
this is an HTML file that was loaded as a result of exploiting an existing vulnerability in the Web Application
</HTML>

** 참고로 공격자 입장에서 WebDAV 운영 여부를 확인하기 위해서 'PROPFIND /' 를 전송할 수 있다. 이때 응답코드 207번이 수신되면 WebDAV 서비스 사용을 의미하기 때문에 파일 삽입 을 요청하고 파일이 생성되었을 경우 201번이 수신된다.

:: PUT 악용 로그 샘플
2005-01-09 23:24:XX XXXX - 102.107.117.11 PROFIND / - 207
Microsoft+Data+Access+Internet+Publishing+Provider+DAV
2005-01-09 23:24:XX XXXX - 102.107.117.11 PUT /echo.htm - 201
Microsoft+Data+Access+Internet+Publishing+Provider+DAV  

3. 해결 방안

HTTP 메소드 중 필요한 메소드(GET, POST) 이외에는 모두 제거해야 한다. 또한 WebDAV
 서비스가 필요하지 않으면 기본적으로 비활성화 하여야 한다.