5.5 ASP漏洞攻擊
Microsoft Active Server Pages(ASP)是服務(wù)器端腳本編寫環(huán)境,使用它可以創(chuàng)建和運(yùn)行動(dòng)態(tài)、交互的Web服務(wù)器應(yīng)用程序。使用ASP可以組合HTML頁 、腳本命令和 ActiveX 組件以創(chuàng)建交互的Web頁和基于Web的功能強(qiáng)大的應(yīng)用程序。
現(xiàn)在很多網(wǎng)站特別是電子商務(wù)方面的網(wǎng)站,在服務(wù)器上大都用ASP來實(shí)現(xiàn)。以至于現(xiàn)ASP在網(wǎng)站應(yīng)用上很普遍。ASP是開發(fā)網(wǎng)站應(yīng)用的快速工具,但是有些網(wǎng)站管理員只看到ASP的快速開發(fā)能力,卻忽視了ASP安全問題。ASP從一開始就一直受到眾多漏洞,后門程序的困擾,包括查看ASP源程序密碼驗(yàn)證問題,IIS漏洞等等都一直使ASP網(wǎng)站開發(fā)人員心驚肉跳。
接下來將介紹幾個(gè)常見的ASP漏洞,并給出解決方法和建議。
1. 在ASP程序后加個(gè)特殊符號(hào),能看到ASP源程序
受影響的版本:IIS3.0
● 問題描述
這些特殊符號(hào)包括小數(shù)點(diǎn),%81, ::$DATA。比如:
http://someurl/somepage.asp.
http:// someurl/somepage.asp%81
http:// someurl/somepage.asp::$DATA
http:// someurl/somepage.asp %2e
http:// someurl/somepage %2e%41sp
http:// someurl/somepage%2e%asp
http:// someurl/somepage.asp %2e
http://someurl/msadc/samples/selector/showcode.asp?source=/msadc/samples/../../../../../../boot.ini(可以看到boot.ini的文件內(nèi)容)
那么在安裝有IIS3.0的瀏覽中就很容易看到somepage.asp的源程序。究竟是什么原因造成了這種可怕的漏洞呢?究其根源其實(shí)是 Windows NT 特有的文件系統(tǒng)在做怪。有一點(diǎn)常識(shí)的人都知道在Windows NT提供了一種完全不同于 FAT 的文件系統(tǒng):NTFS,這種被稱之為新技術(shù)文件系統(tǒng)的技術(shù)使得Windows NT具有了較高的安全機(jī)制,但也正是因?yàn)樗a(chǎn)生了不少令人頭痛的隱患。大家可能不知道, NTFS 支持包含在一個(gè)文件中的多數(shù)據(jù)流,而這個(gè)包含了所有內(nèi)容的主數(shù)據(jù)流被稱之為DATA。因此使得在瀏覽器里直接訪問 NTFS 系統(tǒng)的這個(gè)特性而輕易地捕獲在文件中的腳本程序成為了可能。然而直接導(dǎo)致向服務(wù)器提交::$DATA暴露ASP源程序的原因是由于 IIS 在解析文件名的時(shí)候出了問題,它沒有很好地規(guī)范文件名。
● 解決方法
如果是Winodws NT用戶,可以安裝IIS4.0或者IIS5.0(Windows2000不存在這個(gè)問題)。如果是Winows 95用戶,安裝Windows 98和PWS4.0。
2. code.asp文件會(huì)泄漏ASP代碼
● 問題描述
舉個(gè)很簡(jiǎn)單的例子,在微軟提供的 ASP1.0例程里有一個(gè) .asp 文件專門用來查看其他 .asp 文件的源代碼,該文件為 ASPSamp/Samples/code.asp。如果有人把這個(gè)程序上傳到服務(wù)器,而服務(wù)器端沒有任何防范措施的話,他就可以很容易地查看他人的程序。例如:
code.asp?source=/directory/file.asp
不過這是個(gè)比較舊的漏洞了,相信現(xiàn)在很少會(huì)出現(xiàn)這種漏洞。下面這命令是比較新的:
http://someurl/iissamples/exair/howitworks/code.asp?/lunwen/soushuo.asp=xxx.asp
最大的危害莫過于asa文件可以被上述方式讀出;數(shù)據(jù)庫密碼以明文形式暴露在入侵者眼前。
● 解決方法
對(duì)于IIS自帶的show asp code的asp程序文件,刪除該文件或者禁止訪問該目錄即可。
3. IIS4或者IIS5中安裝有Index Server服務(wù)會(huì)暴露ASP源程序
● 問題描述
在運(yùn)行IIS4或者IIS5的Index Server時(shí)輸入特殊的字符格式可以看到ASP源程序或者其他頁面的程序。甚至服務(wù)器添加了最新關(guān)于查看ASP源代碼的補(bǔ)丁程序程序的系統(tǒng),或者沒有.htw文件的系統(tǒng),一樣存在該問題。被入侵者獲得asp程序,甚至global.asa文件的源代碼,無疑對(duì)系統(tǒng)是一個(gè)非常重大的安全隱患。往往這些代碼中包含了用戶密碼和ID,以及數(shù)據(jù)庫的源路徑和名稱等。這對(duì)于入侵者收集系統(tǒng)信息,進(jìn)行下一步的入侵都是非常重要的。
通過構(gòu)建下面的特殊程序可以參看該程序源代碼:
http://202.116.26.38/null.htw?CiWebHitsFile=/default.asp&CiRestriction=none&CiHiliteType=Full
這樣只是返回一些html格式的文件代碼,但是當(dāng)添加%20到CiWebHitsFile的參數(shù)后面,如下:
http://someurl/null.htw?CiWebHitsFile=/default.asp%20&CiRestriction=none&CiHiliteType=Full
這將獲得該程序的源代碼。
注意:
/default.asp是Web的默認(rèn)首頁。如某站點(diǎn)的http:///welcome/welcome.asp。
那么對(duì)應(yīng)就是:
http://someurl/null.htw?CiWebHitsFile=/welcome/welcome.asp%20&CiRestriction=none&CiHiliteType=Full
null.htw文件并非真正的系統(tǒng)映射文件,只是一個(gè)儲(chǔ)存在系統(tǒng)內(nèi)存中的虛擬文件。哪怕已經(jīng)從系統(tǒng)中刪除了所有的真實(shí)的.htw文件,但是由于對(duì)null.htw文件的請(qǐng)求默認(rèn)是由webhits.dll來處理,所以IIS仍然受到該漏洞的威脅。
● 解決方法
如果該Webhits提供的功能是系統(tǒng)必須的,請(qǐng)下載相應(yīng)的補(bǔ)丁程序程序。如果沒必要,請(qǐng)用IIS的MMC管理工具簡(jiǎn)單移除.htw的映象文件。
補(bǔ)丁程序程序如下:
Index Server 2.0:
Intel:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17727
Alpha:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17728
Indexing Services for Windows 2000:
Intel:
http://www.microsoft.com/downloads/release.asp?ReleaseID=17726
4. NT iss4.0_AuthChangeUrl? 漏洞
● 問題描述
在NT iis4.0,當(dāng)輸入如下命令時(shí):
http://someurl/_AuthChangeUrl?<font%20size=7%20color=red>你好
這時(shí)就會(huì)看到<font size=7 color=red>被解釋成功,并出現(xiàn)了紅色的放大的“你好”字。
如果再向服務(wù)器提交以下的命令:
http://someurl/_AuthChangeUrl?<img%20src=file:\\\c:\ffhh.jpg>
上面的命令將顯示C:根目錄下的ffhh.jpg圖片,前提是ffhh.jpg存在。
http://someurl/_AuthChangeUrl?<a%20href=file:///c:/install.exe>
上面的命令將下載C:根目錄下的install.exe文件。
按照這種方法還能打開對(duì)方服務(wù)器上一個(gè)已經(jīng)知道的文本文件。
5. 繞過驗(yàn)證直接進(jìn)入ASP頁面
● 問題描述
如果用戶知道了一個(gè)ASP頁面的路徑和文件名,而這個(gè)文件又是要經(jīng)過驗(yàn)證才能進(jìn)去的,所以用戶直接輸入這個(gè)ASP頁面的文件名就有可能通過繞過驗(yàn)證。比如:在一些網(wǎng)站上進(jìn)行這樣的測(cè)試:首先關(guān)閉所有的瀏覽器窗口,然后輸入:
http://someurl/system_search.asp?page=1
就樣就可以看到只有系統(tǒng)員才能看到的頁面。當(dāng)然有些人為了防止這種情況也會(huì)在system_search.asp的開頭加個(gè)判斷,比如:判斷session(“system_name”),如果不為空時(shí)就能進(jìn)入,這樣上面的URL請(qǐng)求就不能直接進(jìn)入管理員頁面了。但是這種方法也有一個(gè)漏洞,如果攻擊者先用一個(gè)合法的賬號(hào),或者在本機(jī)上生成一個(gè)session,如session(“system_name”)=“admi”,那因?yàn)閟ession(“system_name”)不為空,這樣也能繞過密碼直接進(jìn)入管理員頁面。
● 解決方法
在需要驗(yàn)證的ASP頁面開頭處進(jìn)行相應(yīng)的處理。比如:在驗(yàn)證頁面上可跟蹤上一個(gè)頁面的文件名,只有從上一頁面轉(zhuǎn)進(jìn)來的會(huì)話才能讀取這個(gè)頁面。