IIS短文件名漏洞原理與挖掘思路


首先來幾個網址先了解一下

https://www.jb51.net/article/166405.htm

https://www.freebuf.com/articles/web/172561.html

總結:

一、漏洞描述:
此漏洞實際是由HTTP請求中舊DOS 8.3名稱約定(SFN)的代字符(~)波浪號引起的。它允許遠程攻擊者在Web根目錄下公開文件和文件夾名稱(不應該可被訪問)。攻擊者可以找到通常無法從外部直接訪問的重要文件,並獲取有關應用程序基礎結構的信息。

二、漏洞原理
==》IIS短文件名漏洞原理:
IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400。
==》漏洞成因:
為了兼容16位MS-DOS程序,Windows為文件名較長的文件(和文件夾)生成了對應的windows 8.3短文件名。
在Windows下查看對應的短文件名,可以使用命令dir /x
==》短文件名特征:
1.只顯示前6位的字符,后續字符用~1代替。其中數字1是可以遞增。如果存在文件名類似的文件,則前面的6個字符是相同的,后面的數字進行遞增
2.后綴名最長只有3位,超過3位的會生成短文件名,且后綴多余的部分會截斷。
3.所有小寫字母均轉換成大寫的字母
4.長文件名中包含多個”.”的時候,以文件最后一個”.”作為短文件名的后綴
5.長文件名前綴/文件夾名字符長度符合0-9和A-Z、a-z范圍且需要大於等於9位才會生成短文件名,如果包含空格或者其他部分特殊字符,不論長度均會生成短文件。

三、漏洞環境搭建及漏洞復現
1、測試環境為windows server 2003 r2,開啟webdav服務和net服務。

四、防御
1、升級.net framework
2、修改注冊表鍵值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改NtfsDisable8dot3NameCreation為1。修改完成后,需要重啟系統生效。注:此方法只能禁止NTFS8.3格式文件名創建,已經存在的文件的短文件名無法移除,需要重新復制才會消失。如果不重新復制,已經存在的短文件名則是不會消失的
2.1重啟系統之后,在網站根目錄(C:\Inetpub\wwwroot)下創建hhhhhhhhhhhhhhhhhhhh.txt,然后查看是否會生成短文件名。下圖可以看到,沒有生成短文件名,說明防御生效。
2.2、將wwwroot目錄下文件復制到另一個back文件下,然后刪除原wwwroot目錄下所有內容,再把back下的內容重新復制到wwwroot目錄下,這時重新查看,則不存在短文件名了

五、總結
該漏洞的意義:
1、 猜解后台地址
2、 猜解敏感文件,例如備份的rar、zip、.bak、.sql文件等。
3、 在某些情形下,甚至可以通過短文件名web直接下載對應的文件。
該漏洞的局限性:
1、 只能猜解前六位,以及擴展名的前三位。
2、 名稱較短的文件是沒有相應的短文件名的。
3、 不支持中文文件名
4、 如果文件名前6位帶空格,8.3格式的短文件名會補進,和真實文件名不匹配
5、 需要IIS和.net兩個條件都滿足。

好的,上面全是復制粘貼,大概了解一下了吧

下面開始實戰:

首先github有開源工具 https://github.com/lijiejie/IIS_shortname_Scanner,可以直接下載,需要python2環境【因為p2和p3語法有比較大的差距,使用py3需要修改源碼語法,沒有必要】。

①環境搭建:

這里選取window2003的IIS6來復現IIS短文件名漏洞,攻擊機使用kali,不用win7是因為裝了python3,懶得重新安裝python2環境了。開時Web服務器的三個配置,訪問cms網站成功,開時操作。

      

在網站的根目錄 c:\inetpub\wwroot下使用 dir /x命令,可見確實有短文件名存在。

②攻擊靶機

kali ip為192.168.3.110,windows2003是192.168.3.48,kali ping 2003服務器成功,證明兩者連通性,在github下載的工具目錄下執行:python2 iis_shortname_Scan.py 192.168.3.48,報錯,137行 if not s.isvul():

 

查看下載的配置文件 iis_shortname_Scan.py,使用編輯器打開,vi iis_shortname_Scan.py,查看137行的if not s.isvul(),根據參數target可以看到應該是傳參錯誤,上面有個參考,前面+http://

重新再來,python2 iis_shortname_Scan.py http://192.168.3.48 

  

可以看見上面,py腳本成功執行,也猜解正確了短文件名。

③ 實戰環境,開啟代理

1.拿到一個XX市XX單位站點,必須為為IIS+asp服務器,網站XXX

使用Payload開擼:python2 iis_shortname_Scan.py http://目標網站

失敗!哪有一帆風順的事情,看到剛才源代碼,這是139行的print,Server is not vulunerable 證明無此漏洞,繼續。

2.再戰,paylaod: python2 iis_shortname_Scan.py 目標站點

 

確實有上面短文件名,證明該網站IIS短文件名漏洞真實存在。

 

修復建議:參考最前面的文檔說明。

特別聲明:

由於傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,我不為此承擔任何責任。

作者有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經作者的允許,不得任意修改或者增減此文章內容,不得以任何方式將其用於商業目的。 切勿用於非法,僅供學習參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM