N%)dt^ Web應用程序是通過2種方式來判斷和跟蹤不同用戶的:Cookie或者Session(也叫做會話型Cookie)。其中Cookie是存儲在本地計算 機上的,過期時間很長,所以針對Cookie的攻擊手段一般是盜取用戶Cookie然後偽造Cookie冒充該用戶;而Session由於其存在於服務 端,隨著會話的註銷而失效(很快過期),往往難於利用。所以一般來說Session認證較之Cookie認證安全。 
}{lq8]|,  
RpP?!:m '   當然啦,Session難於利用並不等於不能利用,本文將通過一個小小的例子實現一次簡單的HTTP會話劫持。 
^1}\EW&  
b+vfKHN\    還是以ASP為例,ASP程序是如何得到客戶端Session的呢?通過抓包可以發現HTTP請求的Cookie字段有個 ASPSESSIONIDXXXXXXXX(X是隨機的字母)值,ASP程序就是通過這個值判斷Session的。如果我們得到管理員的 ASPSESSIONIDXXXXXXXX及其值,並在這次會話結束之前提交到服務器,那麼我們的身份就是管理員啦! 
v  Ijbosr  
)e~PmUT@Z   那怎麼得到Session呢?答案是跨站。因為JavaScript的document.cookie()方法會把Cookie讀出來,當然也包括會話型Cookie。 
,b�D>RY.  
u3he43.I   如果你關注Web安全,相信你一定看到過記錄跨站得到Cookie的腳本程序,我們也需要一個類似的程序,但功能不是記錄,而是立即轉發(因為當前會話隨時可能由於管理員退出而失效)。這個程序可以用ASP、PHP、Perl甚至C來實現,我還是用ASP吧J 
2ma<sQ9f  
UADV`m 5   要寫這個程序,你還必須對要攻擊的程序相當瞭解,因為你要提交各種請求。那現在先看看本例中被跨站的程序吧。 
Ut0'F^O[  
rq_U }Q&   很榮幸,我選中了WebAdmin 1.4,嘿嘿,自己寫的程序自己肯定最清楚哪裡有漏洞啊。呵呵,簡要介紹一下,WebAdmin是一個ASP.Net下的webshell,使用的Session認證方式,1.4版本的跨站存在於目錄瀏覽的URL。 
`;]W3mc-+  
 y�^]Z;w   所以我就在src中構造這樣的路徑:「E: 」。這段代碼就是把當前cookie作為參數提交給www.0x54.org/test/cc.asp文件。 
[! =bZ:  
:igFMe"k   cc.asp文件內容如下: 
7tr\uf7  
R _o[>{X]Y    該文件目的是獲取管理員Session並利用WebAdmin的文件編輯功能查看222.210.115.125(被攻擊的Web服務器,其實是我本機 啦)的E:\MyWeb\webadmin.aspx文件內容並把內容保存到本地的a.txt文件中。數據的提交使用的是ServerXMLHTTP組 件,它與XMLHTTP有相似之處,也有異同,具體的可以看看《ServerXMLHTTP vs XMLHTTP》。 
eu >"X}e9,  
4 8, A {   準備就緒,先登陸WebAdmin然後再訪問構造好的跨站URL,呵呵,然後去看http://www.***.org/test/a.txt。 
JtqICTc}o  
//�u}5   你也可以試試直接訪問cc.asp,呵呵,生成的a.txt將是一個登陸界面的源文件。 
xrVnAWxl  
Nv:>q`U"|   哈哈,現在熱烈慶祝一下本次HTTP會話劫持測試勝利閉幕,總的來說實行一次這樣的攻擊難度還是很大的,不過話又說回來,在技術這塊領域,除了Copy人家的代碼,還有不需要努力就能做好的事情嗎?

資料來源 http://bbs.security.ccidnet.com/read.php?tid=542627
By smtk
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivan0914 的頭像
    ivan0914

    I'n Blog 之萬象真藏

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