當然啦,Session難於利用並不等於不能利用,本文將通過一個小小的例子實現一次簡單的HTTP會話劫持。
還是以ASP為例,ASP程序是如何得到客戶端Session的呢?通過抓包可以發現HTTP請求的Cookie字段有個 ASPSESSIONIDXXXXXXXX(X是隨機的字母)值,ASP程序就是通過這個值判斷Session的。如果我們得到管理員的 ASPSESSIONIDXXXXXXXX及其值,並在這次會話結束之前提交到服務器,那麼我們的身份就是管理員啦!
那怎麼得到Session呢?答案是跨站。因為JavaScript的document.cookie()方法會把Cookie讀出來,當然也包括會話型Cookie。
如果你關注Web安全,相信你一定看到過記錄跨站得到Cookie的腳本程序,我們也需要一個類似的程序,但功能不是記錄,而是立即轉發(因為當前會話隨時可能由於管理員退出而失效)。這個程序可以用ASP、PHP、Perl甚至C來實現,我還是用ASP吧J
要寫這個程序,你還必須對要攻擊的程序相當瞭解,因為你要提交各種請求。那現在先看看本例中被跨站的程序吧。
很榮幸,我選中了WebAdmin 1.4,嘿嘿,自己寫的程序自己肯定最清楚哪裡有漏洞啊。呵呵,簡要介紹一下,WebAdmin是一個ASP.Net下的webshell,使用的Session認證方式,1.4版本的跨站存在於目錄瀏覽的URL。
所以我就在src中構造這樣的路徑:「E: 」。這段代碼就是把當前cookie作為參數提交給www.0x54.org/test/cc.asp文件。
cc.asp文件內容如下:
該文件目的是獲取管理員Session並利用WebAdmin的文件編輯功能查看222.210.115.125(被攻擊的Web服務器,其實是我本機 啦)的E:\MyWeb\webadmin.aspx文件內容並把內容保存到本地的a.txt文件中。數據的提交使用的是ServerXMLHTTP組 件,它與XMLHTTP有相似之處,也有異同,具體的可以看看《ServerXMLHTTP vs XMLHTTP》。
準備就緒,先登陸WebAdmin然後再訪問構造好的跨站URL,呵呵,然後去看http://www.***.org/test/a.txt。
你也可以試試直接訪問cc.asp,呵呵,生成的a.txt將是一個登陸界面的源文件。
哈哈,現在熱烈慶祝一下本次HTTP會話劫持測試勝利閉幕,總的來說實行一次這樣的攻擊難度還是很大的,不過話又說回來,在技術這塊領域,除了Copy人家的代碼,還有不需要努力就能做好的事情嗎?
資料來源 http://bbs.security.ccidnet.com/read.php?tid=542627
By smtk
全站熱搜
留言列表