一、漏洞的成因
為了兼容16位MS-DOS程序,Windows為文件名較長的文件(和文件夾)生成了對應的windows 8.3 短文件名。
在Windows下查看對應的短文件名,可以使用命令 dir /x
055.png)

如上圖,aegis_inst.exe對應的短文件名為aegis_~1.exe。根據(jù)此特性,我們能夠通過訪問短文件名間接訪問它對應的文件。
由于短文件名的長度固定(xxxxxx~xxxx),因此黑客可直接對短文件名進行暴力破解 ,從而訪問對應的文件。
舉個例子,有一個數(shù)據(jù)庫備份文件 backup_www.abc.com_20150101.sql ,它對應的短文件名是 backup~1.sql 。因此黑客只要暴力破解出backup~1.sql即可下載該文件,而無需破解完整的文件名。
該短文件名有以下特征:
只有前六位字符直接顯示,后續(xù)字符用~1指代。其中數(shù)字1還可以遞增,如果存在多個文件名類似的文件(名稱前6位必須相同,且后綴名前3位必須相同)。
后綴名最長只有3位,多余的被截斷。
我們可以在啟用.net的IIS下暴力列舉短文件名,原因是:
訪問構(gòu)造的某個存在的短文件名,會返回404
訪問構(gòu)造的某個不存在的短文件名,會返回400
二、 漏洞的利用
漏洞的利用,需要使用到通配符。在windows中,可以匹配n個字符,n可以為0. 判斷某站點是否存在IIS短文件名暴力破解,構(gòu)造payload,分別訪問如下兩個URL:
1. http://www.target.com/*~1****/a.aspx
2. http://www.target.com/l1j1e*~1****/a.aspx

055.png)
055.png)
055.png)
055.png)
這里我使用了4個星號,主要是為了程序自動化猜解,逐個猜解后綴名中的3個字符,實際上,一個星號與4個星號沒有任何區(qū)別(上面已經(jīng)提到,*號可以匹配空)。
如果訪問第一個URL,返回404,
而訪問第二個URL,返回400,
則目標站點存在漏洞。
判斷漏洞存在后,繼續(xù)猜解目錄下是否存在一個a開頭的文件或文件夾,訪問:
http:
如果存在,將返回404。 如此反復,不斷向下猜解完所有的6個字符。
猜解完之后,得到的序列應該類似:
http:
到了這一步,需要考慮兩種情況,如果以abcdef開頭的是一個文件夾,則
http:
將返回404.
如果abcdef開頭的是一個文件,則自動提交
http:
用a-z的26個字母替換上述g的位置,應該能得到多個404頁面。(記住一點,404代表的是存在。)如果下面的地址返回404,
http:
則代表擴展名中肯定存在g。
按照上面的思路,繼續(xù)猜解g后面的字符,直到后綴名中的3個字符都猜解完,就可以了。
以上介紹了怎么手工猜解,這個漏洞的意義何在:
1. 猜解后臺地址
2. 猜解敏感文件,例如備份的rar、zip、.bak、.SQL文件等。
3. 在某些情形下,甚至可以通過短文件名web直接下載對應的文件。比如下載備份SQL文件。
三、漏洞的局限性
這個漏洞的局限有幾點:
1) 只能猜解前六位,以及擴展名的前3位。
2) 名稱較短的文件是沒有相應的短文件名的。
3)需要IIS和.net兩個條件都滿足。
四、漏洞的修復
1)通用有效方法:
禁用windows系統(tǒng)中的短文件名功能。
打開注冊表并打開此目錄 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值為1 。
修改完成后,需要重啟系統(tǒng)生效。
2)簡單有效方法:CMD命令
Windows Server 2008 R2
查詢是否開啟短文件名功能:fsutil 8dot3name query
關(guān)閉該功能:fsutil 8dot3name set 1
Windows Server 2003
關(guān)閉該功能:fsutil behavior set disable8dot3 1
3)手動驗證
新建文件夾并創(chuàng)建幾個文件,打開CMD進入該文件夾呢執(zhí)行dir /x 檢測,看不到有顯示短文件名則成功。
注: 1.Windows Server 2003修改后需要重啟服務器生效!
2.已存在的文件短文件名不會取消,只對以后創(chuàng)建的文件有效!
3.WEB站點需要將內(nèi)容拷貝到另一個位置,
如D:\www到D:\www.back,然后刪除原文件夾D:\www,再重命名D:\www.back到D:\www。
如果不重新復制,已經(jīng)存在的短文件名則是不會消失的。
該文章在 2019/12/30 11:10:10 編輯過