IIS短文件名泄露漏洞修復

1、漏洞的成因

爲了兼容16位MS-DOS程序,Windows爲文件名較長的文件(和文件夾)生成了對應的windows 8.3 短文件名。
在Windows下查看對應的短文件名,能夠使用命令 dir /xweb

圖片描述

如上圖,aegis_inst.exe對應的短文件名爲aegis_~1.exe。根據此特性,咱們可以經過訪問短文件名間接訪問它對應的文件。sql

因爲短文件名的長度固定(xxxxxx~xxxx),所以黑客可直接對短文件名進行暴力破解 ,從而訪問對應的文件。數據庫

舉個例子,有一個數據庫備份文件 backup_www.abc.com_20150101.sql ,它對應的短文件名是 backup~1.sql 。所以黑客只要暴力破解出backup~1.sql便可下載該文件,而無需破解完整的文件名。windows

該短文件名有如下特徵:服務器

  1. 只有前六位字符直接顯示,後續字符用~1指代。其中數字1還能夠遞增,若是存在多個文件名相似的文件(名稱前6位必須相同,且後綴名前3位必須相同)。spa

  2. 後綴名最長只有3位,多餘的被截斷。
    咱們能夠在啓用.net的IIS下暴力列舉短文件名,緣由是:.net

  3. 訪問構造的某個存在的短文件名,會返回404code

  4. 訪問構造的某個不存在的短文件名,會返回400blog

2、 漏洞的利用

漏洞的利用,須要使用到通配符。在windows中,能夠匹配n個字符,n能夠爲0. 判斷某站點是否存在IIS短文件名暴力破解,構造payload,分別訪問以下兩個URL:圖片

1. http://www.target.com/*~1****/a.aspx
2. http://www.target.com/l1j1e*~1****/a.aspx

圖片描述
圖片描述

這裏我使用了4個星號,主要是爲了程序自動化猜解,逐個猜解後綴名中的3個字符,實際上,一個星號與4個星號沒有任何區別(上面已經提到,*號能夠匹配空)。

若是訪問第一個URL,返回404,
而訪問第二個URL,返回400,
則目標站點存在漏洞。

判斷漏洞存在後,繼續猜解目錄下是否存在一個a開頭的文件或文件夾,訪問:

http://www.target.com/a*~1****/a.aspx

若是存在,將返回404。 如此反覆,不斷向下猜解完全部的6個字符。
猜解完以後,獲得的序列應該相似:

http://www.target.com/abcdef*~1****/a.aspx

到了這一步,須要考慮兩種狀況,若是以abcdef開頭的是一個文件夾,則

http://www.target.com/abcdef*~1/a.aspx

將返回404.
若是abcdef開頭的是一個文件,則自動提交

http://www.target.com/abcdef*~1*g**/a.aspx

用a-z的26個字母替換上述g的位置,應該能獲得多個404頁面。(記住一點,404表明的是存在。)若是下面的地址返回404,

http://www.target.com/abcde*~1*g**/a.aspx

則表明擴展名中確定存在g。
按照上面的思路,繼續猜解g後面的字符,直到後綴名中的3個字符都猜解完,就能夠了。

以上介紹了怎麼手工猜解,這個漏洞的意義何在:

1. 猜解後臺地址
2. 猜解敏感文件,例如備份的rar、zip、.bak、.SQL文件等。
3. 在某些情形下,甚至能夠經過短文件名web直接下載對應的文件。好比下載備份SQL文件。

3、漏洞的侷限性

這個漏洞的侷限有幾點:
1) 只能猜解前六位,以及擴展名的前3位。
2) 名稱較短的文件是沒有相應的短文件名的。
3)須要IIS和.net兩個條件都知足。

4、漏洞的修復

1)通用有效方法:

禁用windows系統中的短文件名功能。
打開註冊表並打開此目錄 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改 NtfsDisable8dot3NameCreation 的值爲1 。
修改完成後,須要重啓系統生效。

2)簡單有效方法:CMD命令

Windows Server 2008 R2
查詢是否開啓短文件名功能:fsutil 8dot3name query
關閉該功能:fsutil 8dot3name set 1

Windows Server 2003
關閉該功能:fsutil behavior set disable8dot3 1

3)手動驗證
新建文件夾並建立幾個文件,打開CMD進入該文件夾呢執行dir /x 檢測,看不到有顯示短文件名則成功。

注: 1.Windows Server 2003修改後須要重啓服務器生效!
       2.已存在的文件短文件名不會取消,只對之後建立的文件有效!
       3.WEB站點須要將內容拷貝到另外一個位置,
         如D:\www到D:\www.back,而後刪除原文件夾D:\www,再重命名D:\www.back到D:\www。
         若是不從新複製,已經存在的短文件名則是不會消失的。
相關文章
相關標籤/搜索