概括: 從技術角度分析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...