漏洞簡(jiǎn)介
為了兼容16位MS-DOS程序,Windows為文件名較長(zhǎng)的文件(和文件夾)生成了對(duì)應(yīng)的windows 8.3 短文件名
Windows下使用dir /x命令查看對(duì)應(yīng)的短文件名

1.png
短文件名特征:
- 只有前六位字符直接顯示,后續(xù)字符用~1指代。其中數(shù)字1還可以遞增,如果存在多個(gè)文件名類似的文件(名稱前6位必須相同,且后綴名前3位必須相同)。
- 后綴名最長(zhǎng)只有3位,多余的被截?cái)唷?br> 可以在啟用.net的IIS下暴力列舉短文件名,
漏洞成因:
訪問構(gòu)造的某個(gè)存在的短文件名,會(huì)返回 404
訪問構(gòu)造的某個(gè)不存在的短文件名,會(huì)返回 400
漏洞探測(cè):
漏洞的利用,需要使用到通配符。在windows中,可以匹配n個(gè)字符,n可以為0. 判斷某站點(diǎn)是否存在IIS短文件名暴力破解,構(gòu)造payload,分別訪問如下兩個(gè)URL:
A:www.test.com/~1****/a.aspx
B:www.test.com/wtest~1****/a.aspx
訪問 A 返回 404,訪問 B 返回 400,則站點(diǎn)存在漏洞
目錄猜解
- 訪問 www.test.com/a*~1****/a.aspx
如果返回 404,則證明存在以 a 開頭的文件或文件夾
以此來猜解出六位字符 - 例猜解完結(jié)果為:www.test.com/abcdef~1****/a.aspx
如果以 abcdef 開頭的是一個(gè)文件夾,則訪問 www.test.com/abcdef~1/a.aspx 返回 404
如果以 abcdef 開頭的是一個(gè)文件,則繼續(xù)猜解 www.test.com/abcdef~1g**/a.aspx
繼續(xù)猜解 g 位置的字符,返回 404 則代表存在。以此猜解完后綴名中的三個(gè)字符。
漏洞局限性
- 只能猜解前六位,以及擴(kuò)展名的前3位。
- 名稱較短的文件是沒有相應(yīng)的短文件名的。
- 需要 IIS 和 .net 兩個(gè)條件都滿足。
漏洞修復(fù)
- 通用有效方法
禁用windows系統(tǒng)中的短文件名功能。
打開注冊(cè)表并打開此目錄 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值為1 。
修改完成后,需要重啟系統(tǒng)生效。 - 簡(jiǎn)單有效方法:CMD命令
- Windows Server 2008 R2
查詢是否開啟短文件名功能:fsutil 8dot3name query
關(guān)閉該功能:fsutil 8dot3name set 1 - Windows Server 2003
關(guān)閉該功能:fsutil behavior set disable8dot3 1
- 手動(dòng)驗(yàn)證
新建文件夾并創(chuàng)建幾個(gè)文件,打開CMD進(jìn)入該文件夾呢執(zhí)行dir /x 檢測(cè),看不到有顯示短文件名則成功。
注: 1. Windows Server 2003修改后需要重啟服務(wù)器生效!
2. 已存在的文件短文件名不會(huì)取消,只對(duì)以后創(chuàng)建的文件有效!
3. WEB站點(diǎn)需要將內(nèi)容拷貝到另一個(gè)位置,
如D:\www到D:\www.back,然后刪除原文件夾D:\www,再重命名D:\www.back到D:\www。
如果不重新復(fù)制,已經(jīng)存在的短文件名則是不會(huì)消失的。