IIS PUT漏洞復現(MOVE方法 207 Multi-Status錯誤解決)
漏洞介紹
WebDAV(Web-based Distributed Authoring and Versioning) 是一種HTTP1.1的擴展協議。它擴展了HTTP 1.1,在GET、POST、HEAD等幾個HTTP標准方法以外添加了一些新的方法,使應用程序可對Web Server直接讀寫,並支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。這樣就可以像操作本地文件夾一樣操作服務器上的文件夾。當然該擴展也存在缺陷,可以被惡意攻擊者利用,直接上傳惡意文件。
漏洞復現
靶機環境:windows server2003 +IIS6 (192.168.1.99)
首先在靶機開啟的IIS服務器,使用IISPutScanner工具掃描,發現put方法未被允許。
我們將web服務擴展中的webDAV打開
完成之后用工具先驗證一下服務器當前是否允許PUT方法
可以看到PUT方法已經被允許了,然后我們需要復現input寫入shell,所以我們在目標網站的屬性中勾選“寫入”權限。
添加寫入權限之后,那么就用IIS寫權限利用工具來進一步利用,先通過options方法探查一下服務器支持哪些http方法
可以看到是支持put方法的,下面我們選擇PUT方法上傳一個asp的shell(asp.asp),保存為test.asp
這里注意我們直接上傳asp文件會提示失敗,我們可以通過先上傳txt文件的方式繞過
這里可以用MOVE方法將剛剛上傳的txt文件修改為asp文件,從而將文本文件變成可執行的腳本文件。MOVE協議不會更改文件內容。
發現無法成功修改,我們可以利用IIS目錄解析漏洞在文件后面加上;.txt或者;.jpg來繞過上傳。(其實PUT方法也可以直接使用這種方式直接繞過上傳,這里MOVE方法不知道為啥提示403錯誤)
我們看到shell文件成功寫入,使用菜刀鏈接shell(http://192.168.1.99/shell.asp;.txt) 成功。
MOVE方法沒有成功各種不爽,然后查資料發現網站屬性里面的主目錄下除了要勾選“寫入”選框之外還要勾選“腳本資源訪問”
然后使用MOVE方法成功修改txt為shell文件aa.asp
修復建議
通過整個漏洞復現過程我們也可以知道這個IIS PUT漏洞完全是因為管理員的一些不當配置導致的,所以想要修復只需要做到以下兩點即可
-
關閉WebDAV
-
關閉寫入權限