IIS WebDAV安全配置
WebDAV是一種基于 HTTP 1.1協(xié)議的通信協(xié)議.它擴(kuò)展了HTTP 1.1,在GET、POST、HEAD等幾個(gè)HTTP標(biāo)準(zhǔn)方法以外添加了一些新的方法。
使應(yīng)用程序可直接對(duì)Web Server直接讀寫,并支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。
IIS實(shí)現(xiàn)Webdav是采用的其兩種接口CGI、ISAPI的ISAPI接口。
但因?yàn)槠錄](méi)有采用影射的方式,所以IIS的主程序w3svc.dll本身包含了Webdav的信息。
其識(shí)別出是Webdav的請(qǐng)求后就調(diào)用Webdav的處理模塊httpext.dll。
對(duì)于常見(jiàn)幾種請(qǐng)求方法GET、HEAD、POST等,因?yàn)槌R?jiàn)一些映射都支持。
所以不能以請(qǐng)求方法作為Webdav請(qǐng)求的判斷,w3svc.dll就根據(jù)請(qǐng)求頭的字段識(shí)別。
如果請(qǐng)求頭里面包含Translate:、If:、Lock-Token:中的一種,就認(rèn)為是Webdav的請(qǐng)求。
Translate:就是那個(gè)Translate:f的泄露源代碼的一個(gè)請(qǐng)求頭,其實(shí)設(shè)置別的兩個(gè)也是一樣的。
可能很多IDS是沒(méi)有這點(diǎn)知識(shí)的。W3svc.dll還內(nèi)置了幾個(gè)別的請(qǐng)求方法TRACK、TRACE等。
TRACK就是用于調(diào)試錯(cuò)誤的,如果收到這樣的請(qǐng)求頭,w3svc.dll會(huì)原樣返回請(qǐng)求數(shù)據(jù)。
相當(dāng)于我們常見(jiàn)的ping.exe。
IIS對(duì)TRACK請(qǐng)求沒(méi)有進(jìn)行LOG記錄,這點(diǎn)我們可以用于來(lái)獲得banner。
對(duì)于IIS將優(yōu)于大家習(xí)慣使用的HEAD。
如果上面的請(qǐng)求方法沒(méi)匹配,那么w3svc.dll就會(huì)認(rèn)為是Webdav的請(qǐng)求,交給httpext.dll處理了。
這些請(qǐng)求包含Webdav支持的PROPFIND、PROPPATCH、MKCOL、DELETE、PUT、COPY、MOVE、LOCK、UNLOCK等。
0x01 配置
為了安全上的考慮,IIS默認(rèn)并不會(huì)啟動(dòng)WebDAV的功能,因此必須另外來(lái)激活它。
通過(guò)啟動(dòng)“IIS管理器”,展開本地計(jì)算機(jī),選擇“Web服務(wù)擴(kuò)展”,選擇“允許”的途徑來(lái)啟動(dòng)WebDAV功能。
開啟WebDAV之后,IIS就支持PROPFIND、PROPPATCH、MKCOL、DELETE、PUT、COPY、MOVE、LOCK、UNLOCK等方法了。

當(dāng)IIS中的配置允許寫入的時(shí)候就可以直接PUT文件上去,由此可能引發(fā)非常嚴(yán)重的安全問(wèn)題,強(qiáng)烈建議禁制

當(dāng)開啟了WebDAV后,IIS中又配置了目錄可寫,便會(huì)產(chǎn)生很嚴(yán)重的問(wèn)題。 wooyun上由此配置產(chǎn)生的問(wèn)題很多,并且有老外黑了一群中國(guó)政府站有一部分就是由于此配置。 危害巨大,操作簡(jiǎn)單,直接批量掃描,上傳shell。
WooYun: 閃動(dòng)科技webserver配置不當(dāng)可取shell
WooYun: 瑞達(dá)信息安全產(chǎn)業(yè)股份有限公司IIS寫入漏洞
WooYun: 海航webdav漏洞導(dǎo)致服務(wù)器淪陷
WooYun: 阿里某郵件系統(tǒng)服務(wù)器配置不當(dāng)
WooYun: 國(guó)家某局某文件系統(tǒng)存在嚴(yán)重安全問(wèn)題
WooYun: 國(guó)內(nèi)某大型風(fēng)電工控系統(tǒng)應(yīng)用配置失誤
0x03 查找存在問(wèn)題的服務(wù)器
對(duì)服務(wù)器發(fā)送OPTION包:
OPTIONS / HTTP/1.1
Host: www.test.com
返回響應(yīng)頭如下:
HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL:
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
Cache-Control: private
當(dāng)ALLOW中包含如上方法時(shí),可以確定服務(wù)器開啟了WebDAV。
此時(shí)可以用PUT上傳文件,但是不可以直接上傳可執(zhí)行腳本文件,可以先上傳一個(gè)其他類型的文件,然后MOVE成腳本文件。
PUT /test.txt HTTP/1.1
Host: www.test.com
Content-Length: 23
啟用了“WebDAV”擴(kuò)展,并且復(fù)選了“寫入”,就可以寫入txt文件了。要想使用MOVE命令將其更名為腳本文件后綴,必須還復(fù)選上“腳本資源訪問(wèn)”。
但是發(fā)現(xiàn)利用IIS的解析漏洞,可以MOVE成test.asp;.jpg,然后就可以當(dāng)做shell來(lái)執(zhí)行了
MOVE /test.txt HTTP/1.1
Host: www.test.com
Destination: /Article/UploadPic/2013-7/201371910405176.jpg
有一個(gè)開源的DAV管理工具,使用工具直接查看:
http://www.davexplorer.org/download.html
0x03 修復(fù)方案
1 禁用WebDAV。
通常情況下網(wǎng)站不需要支持額外的方法,右鍵WebDAV,點(diǎn)擊禁用即可。
2 如果要使用WebDAV的話,加上權(quán)限驗(yàn)證。
如果選取“腳本資源訪問(wèn)”,則用戶將具備修改WebADV文件夾內(nèi)的腳本文說(shuō)明件(scriptfile)的功能。
除了此處的虛擬目錄權(quán)限外,還需要視NTFS權(quán)限,才可以決定用戶是否有權(quán)限來(lái)訪問(wèn)WebDAV文件夾內(nèi)的文件。
WebDAV文件夾的NTFS權(quán)限給予用戶適當(dāng)?shù)腘TFS權(quán)限。
首先請(qǐng)?jiān)O(shè)置讓Everyone組只有“讀取”的權(quán)限,然后再針對(duì)個(gè)別用戶給予“寫入”的權(quán)限,例如我們給予用戶“User”寫入的權(quán)限。
選擇驗(yàn)證用戶身份的方法啟動(dòng)“IIS管理器”,然后右擊WebDAV虛擬目錄,選擇“屬性”→“目錄安全性”,單擊“身份驗(yàn)證和訪問(wèn)控制”處的編輯按鈕。
不要選取“啟用匿名訪問(wèn)”,以免招致攻擊。選擇安全的驗(yàn)證方法,選擇“集成Windows身份驗(yàn)證”。
