讓我們看一個最常見的例子——會話劫持,如圖10-2所示,
誰動了我的琴弦——會話劫持腳本安全
。
圖10-2 會話劫持說明
如圖10-2所示,受害者Alice正常的登錄網(wǎng)站為www.buybook.com,此時她的Session ID是1234567,攻擊者Bob通過網(wǎng)絡(luò)嗅探獲得了Alice的Session ID和Cookie中的用戶登錄信息,這樣他就可以模仿Alice進(jìn)行登錄和操作了,而此時此刻Alice可能毫無所知。
最常見的獲取Session ID的方式就是我們前面講解的XSS。下面通過具體的步驟詳細(xì)地模擬會話劫持。
➊我們正常地登錄一個網(wǎng)站(這里用Google Chrome),登錄的用戶名是admin,記錄好登錄后的JSESSIONID,如圖10-3所示。
圖10-3 正常登錄的Session ID
➋我們打開另一個瀏覽器Firefox,我們嘗試訪問一個私密鏈接:http://localhost/ puzzlemall/private/viewprofile.jsp,這時瀏覽器會提示我們登錄,
電腦資料
《誰動了我的琴弦——會話劫持腳本安全》(http://m.clearvueentertainment.com)。這說明這個鏈接需要登錄以后才能觀看,如圖10-4所示。
圖10-4 我們在嘗試訪問一個私密鏈接
➌打開WebScrab并開啟Proxy中的“Intercept requests”功能,并把Firefox的代理設(shè)置成WebScrab的IP和端口(8008),然后再次訪問這個私密鏈接,這時WebScrab會截獲這個請求,然后修改JSESSIONID為上面admin用戶的JSESSIONID,如圖10-5所示,提交。
圖10-5 利用WebScrab抓取并修改請求
➍這時我們會發(fā)現(xiàn)進(jìn)入了admin用戶的個人信息(profile)頁面。這說明我們成功地以admin用戶的身份進(jìn)行了登錄,如圖10-6所示。當(dāng)然了,這個例子只是一個會話劫持的模擬,在實際的網(wǎng)絡(luò)中,JSESSIONID往往是通過XSS
泄露出去的(或者沒有走安全的協(xié)議而被嗅探)。
圖10-6 成功地利用別人的會話訪問了私密頁面
本文節(jié)選自《Web應(yīng)用安全威脅與防治——基于OWASP Top 10與ESAPI》