熱點推薦:
您现在的位置: 電腦知識網 >> 網絡技術 >> 正文

繞過MD5強取

2013-09-12 16:07:30  來源: 網絡技術 

  很多大蝦都是通過查看程序源代碼的方式來發現漏洞的。由於我剛開始學ASP,所以還沒有達到這種境界。說來蹊跷,盡管搜索漏洞不方便,但偏偏一些程序的漏洞就讓我給挖了出來。本文旨在提醒一些網管和站長,應加強網絡安全方面的意識。
  以前看過一個“動網upfile漏洞利用”的動畫教程(大家有興趣可以到Google裡搜索),使我對抓包修改有了初步了解。當時就感覺用途不只是上傳那麼簡單。於是愛死了Winsock Expert,經常有事沒事拿著它分析數據包。不經意間,有很大的收獲。最近利用它成功地繞過了MD5驗證,入侵了某個站點。
管理員自掘墳墓
  圖1是筆者入侵過的一個站點。該網站使用的是沸騰3AS流浪塵緣新聞系統(核心:塵緣雅境圖文系統)V0.45 Access版build 1程序。這次我抱著幫它檢測漏洞的心態,瞧瞧能不能再次入侵成功,並放個頁面上去。


 

圖1
  大家都知道塵緣雅境有個漏洞——Uploadfaceok.asp可以上傳ASP木馬。管理員似乎知道這裡有問題,已經進行了處理。幾經查找,默認數據庫地址已經不在了。
  不過轉來轉去,感覺這個站點有點讓人摸不著頭腦,就好像有人故意在留後門一樣。在浏覽信息的時候,發現它用的是ReadNews1.asp 這個文件,並沒有用原來的ReadNews.asp,隨手輸入一個“'”符號(引號不輸入),居然存在注入漏洞。Tw.wINgWIT.cOm
  http://lovefree.org/wenzhang/wenzhang/ReadNews1.asp?NewsID=173是個注入點,但是將文件名改為readnews.asp?newsid=173卻被過濾了。
  很顯然,這是管理員修改過文件的什麼地方。但肯定是由於不懂注入漏洞,所以看不出來源程序那段防止注入代碼的含義,最後自以為是地把原來用來防止注入的部分給去掉了。如此的誤操作,就造成了一個漏洞的存在。也就是說塵緣雅境系統本來不存在這個注入點,現在卻被無意中制造了一個。
  注入之後得到的密碼,即數據庫中的密碼值是MD5加密過的,這個“地球人都知道”。怎麼辦?MD5我破解不了。
用Winsock Expert查詢關鍵值
  MD5破解不開,我就想到了Winsock Expert抓包修改,因為我記得塵緣雅境這個程序在後台管理員修改密碼的時候,並沒有要求輸入原始密碼,而默認密碼框中的則是原始密碼的MD5值。就是說,如果你修改密碼,系統就會要求驗證舊的密碼的MD5值。現在既然拿到了MD5值,那麼自然就可以修改密碼了。
  有一點要注意,抓包的時候要看清楚包的內容,看看它除了要驗證舊密碼的MD5值以外,還會驗證什麼。
  我下載了這個版本的程序,准備看看後台有什麼可以經過修改拿到WebShell。
  在本機上打開IIS服務,訪問初始化程序的後台頁面。後台有個管理員修改密碼的地方,我猜想如果程序在修改後台密碼的時候使用Cookie驗證方式,那麼我們就可以直接提交相應的數據包,如果包中內容符合程序要求,程序就會認為合法,則執行修改管理員密碼的代碼。
  圖2是我在修改密碼的時候抓的數據包。主要是想看看修改密碼都需要什麼信息,需要符合包中哪些內容(我在本機上的IIS服務器IP地址為192.168.32.21)。下面就是需要驗證的Cookie內容 :


 

圖2
  Cookie:ASPSESSIONIDQSTCRBQS=IGCLHDBBPLKKLEAAPKGHCLPH;reglev
  el=;fullname=%D0%A1%B7%D1; purview=99999;KEY=super;UserName=base;Passwd=279d34fa1dfd71aa
  這些是需要的信息。我們只要知道有username、Passwd、purview、KEY、fullname這幾個值需要驗證就行了,下面要想辦法讓他們符合要求。再看看數據庫,它們都在Admin表下,也就是說,我們可以通過注入弄到它們。purview=99999和KEY=super這兩個值是說明它們為超級管理員的,不需要變更,最重要的就是剩下的三個值。
欺 騙
  通過NBSI工具注入,得到了Username=admin, Passwd=24a2b13f36f9f99c, fullname=doudou三個值,我們就用這些來欺騙。
  現在包對應的值有了,包內容如果現在提交,就會出現修改成功,這樣能把我在本機的初始塵緣雅境程序密碼改掉。但要改的可是被入侵的系統,怎樣做到呢?
  我們知道包內容裡面有被修改程序的IP地址,當然也可以改,可是改了以後還要計算並修改包大小值,這樣很麻煩。干脆這樣,就先欺騙自己的機子,讓它以為自己所架設的服務器IP地址就是域名lovefree.org;然後再抓包,讓自己的機子認為lovefree.org又指向原來的地方,那麼我們就不用再改動包的內容了。
  下面要做的是讓我自己的電腦認為站點http://lovefree.org/wenzhang/wenzhang/在我的IP上,而且對應的路徑就是我安裝的塵緣雅境初始化程序地址。修改E:\WINDOWS\system32\drivers\etc\下的hosts文件,加一行內容:192.168.32.21 lovefree.org(圖3)。


 

圖3
  然後設置IIS服務器,加上個虛擬目錄wenzhang/wenzhang,指向塵緣雅境在自己機子上的目錄。好了,現在在浏覽器上輸入http://lovefree.org/wenzhang/wenzhang就是我機子上的初始塵緣雅境了。
  這樣做的目的是抓到的包可以直接提交給真實的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: http://www.xijing.com.cn/admin/useredit.asp?id=1
  ……
  Content-Length: 110
  Connection: Keep-Alive
  Cache-Control: no-cache
  (下面是Cookie驗證內容)
  Cookie:NB796459377Vote1=1;ASPSES
  SIONIDQSTCRBQS=MGCLHDBBGDELLJG
  JGJHGKBML;reglevel=; fullname=doudou; KEY=super; UserName=admin; purview=99999; Passwd=24a2b13f36f9f99c
  (下面是修改信息)
  username=admin&passwd=abend&pass
  wd2=abend&fullname=doudou&depid=10&oskey=super&shenhe=1&cmdok=+%D0%DE+%B8%C4+
  看到了吧,包和真的一樣!簡直就像從它的服務器上抓來的。這樣我們要改的,就只有passwd的MD5值了,就是說,只要這個也匹配,真正的lovefree.org服務器就會認可。改為24a2b13f36f9f99c就是注入得到的密碼MD5值。
  現在把host文件的內容改回來之後,再輸入域名lovefree.org就能打開真實地址了。用NC命令提交(圖4)。


 

圖4
  哈哈!“恭喜您!您的資料已經修改成功! 2秒鐘後返回上頁!”
總 結
  現在密碼就是abend。用它來登錄後台,到網站屬性“上傳文件類型:”多加一個ASP,就可以上傳ASP木馬。
  其實還有很多程序都存在這樣的問題,如果你拿到了某站管理員的MD5值,不妨用這種方法試一下,也許有很大收獲!
小資料:什麼是MD5
  MD5的全稱是Message Digest Algorithm 5(信息摘要算法),在上世紀90年代初由Mit laboratory for computer science和Rsa data security inc及Ronald l. rivest開發出來,經MD2、MD3和MD4發展而來。
  1991年,在MD4的基礎上增加了“安全-帶子”(safety-belts)的概念。Rivest開發出技術上更為趨近成熟的MD5算法。雖然MD5比MD4稍微慢一些,但卻更為安全。由於MD5算法的使用不需要支付任何版權費用,所以在一般的情況下(非絕密應用領域,但即便是應用在絕密領域內,MD5也不失為一種非常優秀的中間技術),MD5怎麼都應該算得上是非常安全的了。
  MD5的典型應用是對一段信息(message)產生信息摘要(message digest),以防止被篡改。比如,在UNIX下有很多軟件在下載的時候都有一個文件名相同,文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結構如下:
  md5 (tanajiya.tar.gz) = 0ca175b9c0f726
  a831d895e269332461
  這就是tanajiya.tar.gz文件的數字簽名。MD5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產生了這個唯一的MD5信息摘要。
  MD5還廣泛用於加密和解密技術上。比如在UNIX系統中用戶的密碼就是以MD5(或其它類似的算法)經加密後存儲在文件系統中。當用戶登錄的時候,系統把用戶輸入的密碼計算成MD5值,然後再去和保存在文件系統中的MD5值進行比較,進而確定輸入的密碼是否正確。
  正是因為這個原因,現在黑客破解MD5密碼,使用最多的一種破譯密碼的方法就是一種被稱為“跑字典”的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用MD5程序計算出這些字典項的MD5值,然後再用目標的MD5值在這個字典中檢索。我們假設密碼的最大長度為8位字節(8 bytes),同時密碼只能是字母和數字,共26+26+10=62個字符,排列組合出的字典的項數則是p(62,1)+p(62,2)….+p(62,8),那也已經是一個天文數字了,存儲這個字典就需要TB級的磁盤陣列,而且采用這種方法還有一個前提,就是能獲得目標賬戶的密碼MD5值的情況下才可以。

 
From:http://tw.wingwit.com/Article/Network/201309/1048.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.