為了相容16位ms-dos程式,windows為檔名較長的檔案(和資料夾)生成了對應的windows 8.3 短檔名。
在windows下檢視對應的短檔名,可以使用命令dir /x。
比如,我在d盤下建立了乙個名為aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html檔案:
d:\>dir /x
驅動器 d 中的卷是 data
卷的序列號是 3edf-2e00
d:\ 的目錄
2014/10/11 13:08 256,515,706 2014101.sql
2014/10/13 17:01 0 aaaaaa~1.htm aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html
2 個檔案 256,515,706 位元組
0 個目錄 107,017,154,560 可用位元組
觀察命令結果,可以看到,其對應的短檔名 aaaaaa~1.htm。該短檔名有以下特徵:
(1)只有前六位字元直接顯示,後續字元用~1指代。其中數字1還可以遞增,如果存在多個檔名類似的檔案(名稱前6位必須相同,且字尾名前3位必須相同)。
(2)字尾名最長只有3位,多餘的被截斷。
我們可以在啟用.net的iis下暴力列舉短檔名,原因是:
(1)訪問構造的某個存在的短檔名,會返回404;
(2)訪問構造的某個不存在的短檔名,會返回400。
【這個漏洞的意義何在】:
漏洞的利用,需要使用到萬用字元*。在windows中,*可以匹配n個字元,n可以為0。判斷某站點是否存在iis短檔名暴力破解,構造payload,分別訪問如下兩個url:
伺服器返回404。
這裡我使用了4個星號,主要是為了程式自動化猜解,逐個猜解字尾名中的3個字元,實際上,乙個星號與4個星號沒有任何區別(上面已經提到,*號可以匹配空)。
如果訪問第乙個url,返回404。而訪問第二個url,返回400。 則目標站點存在漏洞。
判斷漏洞存在後,繼續猜解目錄下是否存在乙個a開頭的檔案或資料夾,訪問:如果存在,將返回404。
如此反覆,不斷向下猜解完所有的6個字元。猜解完之後,得到的序列應該類似:
到了這一步,需要考慮兩種情況,如果以abcdef開頭的是乙個資料夾,則 將返回404。
如果abcdef開頭的是乙個檔案,則自動提交: 用a-z的26個字母替換上述g的位置,應該能得到多個404頁面。(記住一點,404代表的是存在。)如果下面的位址返回404, 則代表副檔名中肯定存在g。
按照上面的思路,繼續猜解g後面的字元,直到字尾名中的3個字元都猜解完,就可以了。
使用iis短檔名洩漏利用工具對漏洞進行利用:
漏洞修復以後:
漏洞的侷限
這個漏洞的侷限有幾點:
1、此漏洞只能確定前6個字元,如果後面的字元太長、包含特殊字元,很難猜解;
2、如果檔名本身太短(無短檔名)也是無法猜解的;
3、需要iis和.net兩個條件都滿足;
4、不支援中文檔名,包括中文檔案和中文資料夾。乙個中文相當於兩個英文本元,故超過4個中文字會產生短檔名,但是iis不支援中文猜測。
漏洞的修復
cmd關閉ntfs 8.3檔案格式的支援
舉例:(1代表關閉,0代表開啟)
windows server 2008 r2:
查詢是否開啟短檔名功能:fsutil 8dot3name query
關閉該功能:fsutil 8dot3name set 112
windows server 2003:
關閉該功能:fsutil beh**ior set disable8dot3 1
1不同系統關閉命令稍有區別,該功能預設是開啟的,對於大多數使用者來說無需開啟。
修改登錄檔禁用短檔名功能
快捷鍵win+r開啟命令視窗,輸入regedit開啟登錄檔視窗
找到路徑:
hkey_local_machine\system\currentcontrolset\control\filesystem,將其中的 ntfsdisable8dot3namecreation這一項的值設為 1,1代表不建立短檔名格式
修改完成後,需要重啟系統生效
注:此方法只能禁止ntfs8.3格式檔案名建立,已經存在的檔案的短檔名無法移除,需要重新複製才會消失。
以下兩種方法僅適用於緩解get 方法,其他方法依舊可以猜解。
關閉web服務擴充套件- asp.net
公升級netframework至4.0以上版本
漏洞修復 IIS短檔名洩露漏洞
internet information services iis,網際網路資訊服務 是由微軟公司提供的基於執行microsoft windows的網際網路基本服務。microsoft iis在實現上存在檔案列舉漏洞,攻擊者可利用此漏洞列舉網路伺服器根目錄中的檔案。危害 攻擊者可以利用 字元猜解或遍...
IIS短檔名洩露漏洞,請求方式OPTIONS
webconfig中加 另 詳細描述 internet information services iis,網際網路資訊服務 是由微軟公司提供的基於執行microsoft windows的網際網路基本服務。microsoft iis在實現上存在檔案列舉漏洞,攻擊者可利用此漏洞列舉網路伺服器根目錄中的檔...
獲取短檔名或路徑
一直在找.獲取短檔名或路徑的函式,可能自己笨沒有找到就自己寫了乙個.是通過呼叫winapi函式實現的.1.宣告getshortpathnamea dllimport kernel32.dll entrypoint getshortpathnamea private static extern int...