注:下文涉及一種Web入侵方式的古老方法,即利用Cookie冒充已登錄用戶。熟知此方法的朋友請退散。
我們在做Web應用時,習慣把用戶信息放到Session中,而這一舉措,實際上有較大的潛在危險性,如果別人知道了我們的session id,就可能利用它以我們的身份進入Web應用。因為session的數據雖然存在于服務器中,但識別客戶端各自的數據還是靠存放在客戶端的session Id的,如果有人以某個已登錄的用戶的session Id進入Web應用,那么他就會被當作那個用戶,下文將展示這一過程。
首先,我們讓某個用戶正常登錄一個位于Tomcat上的應用,注意右上角的用戶名的顯示:
再取得他的session Id。這一步實際上有很多途徑取到,比如url中有時帶有它,Struts做前端的e
Web應用就時常可見;本地cookie中可以找到它,這個用程序就能知道,用js也行(使用document.cookie);用嗅探器也可以獲得它,這個嗅探器可以放在想冒充用戶的機器或是網關上。下面使用了TCPMon得到其session id(具體使用方法請參考
http://www.tkk7.com/heyang/archive/2010/12/10/340294.html)。

上面高亮的文字部分就是“關羽”這個用戶的session id。
現在,url “http://localhost:8080/ProjectManager/GotoModifyUserPage.do” 和session id“4DC291FC36B2392BE440F70E5B3AA49D” 我們已經得到,接下來就是用它們來進入web應用了。
一般的瀏覽器沒有可供輸入 session id的地方,但從原理來看我們知道這并不復雜,因為http是基于文本的,只要有工具能把Url和cookie捏合起來成文本并發送就可以了,WebTool就是這樣的一款工具,你可以從
http://www.hackline.net/a/soft/tools/2010/0603/4198.html 來獲得它。
得到下載文件解開包,執行里面的WebTool 4.2.exe,點擊其菜單“設置”-->“自定義cookie瀏覽”,使其成為勾選狀態,然后在地址欄輸入http://localhost:8080/ProjectManager/GotoModifyUserPage.do,左下方的cookie處輸入4DC291FC36B2392BE440F70E5B3AA49D,然后點擊右上方的“Get”按鈕,你將看到以下畫面:
好了,看看其右上方把,用戶名“關羽”已經顯示出來了。我們這會不用得知關羽的密碼也能以他的身份開始操作了,這就是冒充session id做到的。
好了,感謝您看到這里。可見,常規Web應用還是比較脆弱的,但這種入侵方式也好防范,將協議改成改成https就可以了(請參考
http://www.tkk7.com/heyang/archive/2010/12/13/340500.html)。另希望有人不要把上文的技巧用到不該用的地方,去動本不該屬于自己的東西是危險而徒勞的。