IIS檔名解析漏洞扼要分析

2021-12-29 16:31:49 字數 2732 閱讀 8885

概括: 從技術角度分析iis6檔名解析漏洞的原理與iis7的相關情況。

a.iis6錯誤解析檔案型別現象

1、當web目錄下,檔名以 ***.asp;***.*** 來進行命名的時候,此檔案將送交asp.dll解析(也就是執行指令碼)

2、當web目錄下,在訪問以 ***.asp 命名的目錄下的任意檔案時,此檔案將送交asp.dll解析(也就是執行指令碼)

通過對iis6的核心檔案型別解析相關檔案的逆向後,整理出下面的核心處理**。

//reverse code by golds7n with ida

int __thiscall url(void *this, char *urlstruct)

if ( stru::querycch(&url_fileextenname) == 4 )

}  if ( *((_dword *)pw3_url_info + 201)

|| (v10 = *((_dword *)pw3_url_info + 202), v10 == 3)

|| v10 == 2

|| (v11 = *(_dword *)(*((_dword *)pw3_url_info + 204) + 0xc4c),

v12 = stru::querystr(url_filename),

bsuccess = selectmimemappingforfileext(v12, v11, (char *)pw3_url_info + 756, (char *)pw3_url_info + 1012),

bsuccess >= 0) )

v8 = 0;

else

subend:

v8 = bsuccess;

stru::_stru(&url_fileextenname);

return v8;

}上述**中,作星號標記的是n1,n2,n3,分別檢測點號,反斜槓和分號。

大概流程為:

請求 /aaa.asp;***x.jpg

n1:從頭部查詢查詢 "."號,獲得 .asp;***x.jpg

n2:查詢";"號,如果有則記憶體截斷

n3:查詢"/",如果有則記憶體截斷

最終,將保留下來 .asp 字串,從meta_script_map指令碼對映表裡與副檔名匹配對比,並反饋給了asp.dll處理

b.iis7是否延續了漏洞

iis7的核心處理**:

//reverse code by golds7n with ida

const unsigned __int16 *__stdcall matchpathinurl(const unsigned __int16 *url_user, unsigned __int32 url_length, const unsigned __int16 *iis_map_wizard)

purl = url_user;

if ( *url_user == '/' )

label_6:

for ( i = purl; ; i += pchartemp )

isxinghao = 0;

if ( *p == '*' )

cwizard = *p;

if ( !*p )

break;

pwizard = p;

str2 = p;

if ( cwizard != '*' )

while ( *pwizard != '*' );

}if ( isxinghao )

}pchartemp = pwizard - p;

while ( _wcsncmp(i, p, pchartemp) )

}else

if ( !*purl )

return 0;

p = iis_map_wizard;

++purl;

url_user = purl;

goto label_6;}}

p = str2;

purl = url_user;

}if ( isxinghao )

while ( *i != '/' );

}if ( *i != '/' && *i )

goto label_30;

return i;

}  pcharuser = url_user;

dowhile ( bytechar );

return &url_user[pcharuser - (url_user + 1)];

}matchpathinurl(const unsigned __int16 *url_user, unsigned __int32 url_length, const unsigned __int16 *iis_map_wizard)

引數url_user是使用者提交的路徑引數,類似phost/default web site/aa.asp;***.jpg,由 服務/站點名稱/請求路徑 構成,iis_map_wizard是在管理器檔案對映裡的每個表項,譬如*.asp

比較的結果就是,拿aa.asp;***.jpg與*.asp進行匹配,顯然結果是不匹配的(/***.asp/***.jpg,是拿***.jpg和*.asp進行匹配)。

c.總結

iis6檔案對映配置圖

iis7檔案對映配置圖

從上面的關鍵分析和圖中,可以看出,iis6存在解析漏洞是由於其設計上的問題導致,iis6只簡單地根據副檔名來識別,而iis7是進行萬用字元匹配來定奪請求檔案是否是某指令碼型別,可見iis7糾正了錯誤機制,更加科學、健壯。

漏洞修復 IIS短檔名洩露漏洞

internet information services iis,網際網路資訊服務 是由微軟公司提供的基於執行microsoft windows的網際網路基本服務。microsoft iis在實現上存在檔案列舉漏洞,攻擊者可利用此漏洞列舉網路伺服器根目錄中的檔案。危害 攻擊者可以利用 字元猜解或遍...

IIS短檔名洩露漏洞,請求方式OPTIONS

webconfig中加 另 詳細描述 internet information services iis,網際網路資訊服務 是由微軟公司提供的基於執行microsoft windows的網際網路基本服務。microsoft iis在實現上存在檔案列舉漏洞,攻擊者可利用此漏洞列舉網路伺服器根目錄中的檔...

IIS短檔名洩露

為了相容16位ms dos程式,windows為檔名較長的檔案 和資料夾 生成了對應的windows 8.3 短檔名。在windows下檢視對應的短檔名,可以使用命令dir x。比如,我在d盤下建立了乙個名為aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html檔案 d dir x...