%5c暴庫漏洞

今天在黑基又看到了關於%5c暴庫的文章。呵呵,這招真的很管用,大概10個網站裏會有一個會暴庫吧。。

關於這個漏洞。綠盟有相關的資料。


Microsoft IIS CGI文件名錯誤解碼漏洞

發佈日期:2001-05-15

CVE CAN ID:CVE-2001-0333

受影響的軟件及系統:
====================
- Microsoft IIS 4.0
- Microsoft IIS 5.0

未受影響的軟件及系統:
======================
- Windows IIS 4.0 (sp6/sp6a 沒有安裝其他新的hotfix)

綜述:
======
NSFOCUS安全小組發現微軟IIS 4.0/5.0在處理CGI程序文件名時存在一個安全漏洞,由於錯誤地對文件名進行了兩次解碼,攻擊者可能利用這個漏洞執行任意系統命令。

分析:
======
IIS在加載可執行CGI程序時,會進行兩次解碼。第一次解碼是對CGI文件名進行http解碼,然後判斷此文件名是否爲可執行文件,例如檢查後綴名是否爲".exe"或".com"等等。在文件名檢查通過之後,IIS會再進行第二次解碼。正常情況下,應該只對該CGI的參數進行解碼,然而,IIS錯誤地將已經解碼過的CGI文件名和CGI參數一起進行解碼。這樣,CGI文件名就被錯誤地解碼了兩次。

通過精心構造CGI文件名,攻擊者可以繞過IIS對文件名所作的安全檢查,例如對"../"或"./"的檢查,在某些條件下,攻擊者可以執行任意系統命令。

例如,對於'/'這個字符,正常編碼後是%5c。這三個字符對應的編碼爲:
'%' = %25
'5' = %35
'c' = %63

如果要對這三個字符再做一次編碼,就可以有多種形式,例如:
%255c
%%35c
%%35%63
%25%35%63
...

因此,"../"就可以表示成"..%255c"或"..%%35c"等等形式。

在經過第一次解碼之後,變成"..%5c"。IIS會認爲這是一個正常的字符串,不會違反安全規則檢查。而在第二次被解碼之後,就會變成"../"。因此攻擊者就可以使用"../"來進行目錄遍歷,執行web目錄之外的任意程序。

測試方法:
==========
例如,如果TARGET存在一個虛擬可執行目錄(scripts),並且它與windows系統在同一驅動器上。那麼提交類似下列請求:

http://target/scripts/..%5c..%5cwinnt/system32/cmd.exe?/c+dir+c:/

就會列出C:/的根目錄。

當然,對於'/'或者'.'做變換同樣可以達到上面的效果。
例如:"..%252f", ".%252e/"...

注意:攻擊者只能以IUSER_machinename用戶的權限執行命令。

解決方法:
==========
1、如果不需要可執行的CGI,可以刪除可執行虛擬目錄,例如 /scripts等等。
2、如果確實需要可執行的虛擬目錄,建議將可執行虛擬目錄單獨放在一個分區
3、將所有可被攻擊者利用的命令行工具移到另外一個目錄中並禁止GUEST組訪問。

廠商狀態:
==========
2001.3.27 我們將這個問題通報給了微軟公司。
2001.4.01 微軟告知重現了這個問題
2001.4.16 微軟提供了補丁程序供測試,測試發現此問題已被解決
2001.4.23 微軟請求我們延遲2個星期發佈公告以等待更完善的測試
2001.4.30 微軟告知我們還須再推遲一個星期發佈
2001.5.14 微軟已就此發佈了一個安全公告(MS01-026)以及相應補丁

您可以在下列地址看到微軟安全公告的詳細內容:

http://www.microsoft.com/technet/security/bulletin/ms01-026.asp

補丁程序可以在下列地址下載:

. Microsoft IIS 4.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29787

. Microsoft IIS 5.0:
http://www.microsoft.com/Downloads/Release.asp?ReleaseID=29764

呵呵。雖然這個我們這個漏洞呵暴庫關係不是很大, 但是明眼人還是看的出相關的地方,IIS 二次解碼。大家知道在 url中 "/" 和 "/"
是一樣的,也就是說url.gifhttp://www.example.com/abc/123.asp?id=5url.gifhttp://www.example.com/abc/123.asp?id=5 是一樣的。

url.gifhttp://www.example.com/abc%5c123.asp?id=5 經過一次解碼後變成url.gifhttp://www.example.com/abc/123.asp?id=5 這裏是不會出錯的。
而 經過 IIS 二次解碼後就變成url.gifhttp://www.example.com/abc%5c123.asp?id=5, 如果數據庫連接文件用的相對路徑的話。HOO, 找不到數據
庫文件,當然就出錯了。還很老實呢,連物理路徑都出來了。大家看。

Microsoft JET Database Engine 錯誤 '80004005'

'D:/wwwroot/hell/wwwroot/data/abc.asp'不是一個有效的路徑。 確定路徑名稱拼寫是否正確,以及是否連接到文件存放的服務器。

/blog/conn.asp,行29


這個是我暴 Oblog 暴出來的,這個月的黑防大家都有看吧。。(暈倒,早知道我也去投稿了。我發現的比他早多了,鬱悶。)

很多人都在分析成功的條件,就象itbbs裏的人討論的一樣。(itbbs最近我怎麼上不去啊,知道告訴偶.)

sykkk 認爲:

1,是數據庫連接中沒有加入容錯代碼 所以導致錯誤不能跳過而活生生的把數據文件連接暴出來

2, 對方的IIS沒有關閉錯誤提示 只要關了錯誤提示就算你怎麼暴也沒有用

3,不一定要2級目錄 但是肯定的是一級目錄是絕對不成功的 要是你成功了歡迎拿出來給大家分享 他文章說的自己夠造個noexists/..%C的2級目錄 個人認爲應該是錯誤的 至少我沒有成功過 有成功的歡迎留下網站測試

4,還有就是 要成功一定要調用到數據庫 不一定是5c1.asp?id=1 這種類別的 只要是提交或者檢測數據的基本都可以 非常多的六合採網站都是採用/XXX/CHECK.ASP來認證 找到認證位置 直接/XXX%5CCHECK。ASP同樣可以達到 暴庫的目的

其實我們 XST的老大ToToDoDo說的必要條件他忘了,數據庫要相對路徑,絕對路徑是暴不出來的。還有我補充一點 應該是 IIS 4.0 或者 IIS 5.0 ,IIS 6 應該是不行了。

關於二級目錄,我同意sykkk的看法,有的人說一定是二級目錄,呵呵,我可以告訴大家那是錯誤的。應該是最靠近的asp文件的那個 "/"改成
"%5c", 只有有調用數據庫都有可能暴庫。哈哈,還有當然對方要沒有屏蔽錯誤信息,要不然你是肯定看不到di

總結:%5c暴庫成功條件

1. 對方服務器用的是 IIS 4.0 或 IIS 5.0, 並且沒有屏蔽錯誤信息。


2. 是數據庫連接中沒有加入容錯代碼 所以導致錯誤不能跳過而活生生的把數據文件連接暴出來 (On Error Resume Next)

3.應該是Microsoft JET Database Engine 方式

4. 數據庫文件調用用的是相對路徑!!


不一定要求是二級目錄。三級也是可以的(我有成功過), 二級目錄反倒沒成功,呵呵。還有構造二級目錄,我是沒成功過,嘿嘿,應該是錯誤的。:)


隨便也告訴大家,aspx %5c 也有文章的,運用也很巧妙,想知道就知道google吧。^_^

個人見解,歡迎大家批評指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章