XX大學XX學院
《網絡攻擊與防御》
實驗報告
實驗報告撰寫要求
實驗操作是教學過程中理論聯系實際的重要環節,而實驗報告的撰寫又是知識系統化的吸收和升華過程,因此,實驗報告應該體現完整性、規范性、正確性、有效性。現將實驗報告撰寫的有關內容說明如下:
1、 實驗報告模板為電子版。
2、 下載統一的實驗報告模板,學生自行完成撰寫和打印。報告的首頁包含本次實驗的一般信息:
組 號:例如:2-5 表示第二班第5組。
實驗日期:例如:05-10-06 表示本次實驗日期。(年-月-日)……
實驗編號:例如:No.1 表示第一個實驗。
實驗時間:例如:2學時 表示本次實驗所用的時間。
實驗報告正文部分,從六個方面(目的、內容、步驟等)反映本次實驗的要點、要求以及完成過程等情況。模板已為實驗報告正文設定統一格式,學生只需在相應項內填充即可。續頁不再需要包含首頁中的實驗一般信息。
3、 實驗報告正文部分具體要求如下:
一、實驗目的
本次實驗所涉及並要求掌握的知識點。
1.跨站腳本攻擊(Cross Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。
它與SQL注入攻擊類似,SQL注入攻擊中以SQL語句作為用戶輸入,從而達到查詢/修改/刪除數據的目的,而在xss攻擊中,通過插入惡意腳本,實現對用戶游覽器的控制,獲取用戶的一些信息。
XSS的分類:
反射型XSS
存儲型XSS
基於DOM的XSS
2.HTML
3.JavaScript
二、實驗環境
實驗所使用的設備名稱及規格,網絡管理工具簡介、版本等。
一台windows7、安裝wampserver、火狐瀏覽器、Chrome瀏覽器
三、實驗內容與實驗要求
實驗內容、原理分析及具體實驗要求。
實驗內容:
1.反射型XSS,相對來說,危害較低,需要用戶點擊特定的鏈接才能觸發。
2.存儲型XSS,該類XSS會把攻擊代碼保存到數據庫,所以也叫持久型XSS,因為它存在的時間是比較長的。
3.DOM 型XSS,這類XSS主要通過修改頁面的DOM節點形成XSS,稱為DOM Based XSS。
原理分析:XSS攻擊,指通過在頁面注入惡意JAVASCRIPT代碼,從而在用戶瀏覽被注入惡意代碼的頁面時,控制用戶的瀏覽器行為的一種攻擊。
具體實驗要求:根據實驗指導書完成實驗與實驗報告
四、實驗過程與分析
根據具體實驗,記錄、整理相應命令、運行結果等,包括截圖和文字說明。
詳細記錄在實驗過程中發生的故障和問題,並進行故障分析,說明故障排除的過程及方法。
1、 反射型XSS
首先對反射性xss的網頁進行測試,輸入test測試並submit發現在網頁上顯示出test測試,如下圖所示:
圖1 反射性xss頁面測試
當在輸入框輸入入測試,測試XSS最常用的就是,如果頁面存在XSS,那么就會彈出“XSS”這個字符。觀察發現彈出xss字符,如下圖:
圖2 反射性xss插入字符測試
觀察頁面源碼,發現之所以我們輸入的xss沒有在輸入內容部分展示,是因為我們輸入的代碼被當成代碼解析,源代碼如下圖所示:
圖3 反射性xss頁面源代碼展示
我們可以輸入其他的JS代碼,來讓瀏覽器做其他的事,比如彈出用戶cookie,在輸入框中輸入,其中document.cookie可以用來獲取用戶的cookie。提交后發現彈出窗口為空(如下圖),這是因為因為訪問的這個頁面它沒有給我們設置cookie。
圖4 反射型xss獲取cookie測試
修改源代碼之后再次重復上述工作可以發現輸入cookie,如下圖所示:
圖5 反射型xss獲取cookie測試
我們可以通過JS,構造一個請求,來請求一個我們有權限的頁面,在構造請求的時候,把用戶的cookie當作參數傳過去,然后我們就可以在這個頁面里,接收傳過來的參數,然后再保存起來。所以首先需要寫一個接收cookie的頁面,它能夠接收某個參數,然后保存起來。通過構建url編碼的內容,我們輸入,可以在xss文件夾中的文件中獲得用戶的cookie,如下圖所示:
圖6 獲得用戶的cookie
2.存儲型xss
存儲型XSS一般發生在留言板等地方,因為它需要把用戶輸入的內容保存到數據庫,用戶向服務器提交的數據只是一次性的,如果不保存到數據庫,數據就會丟失。
隨便選擇一個輸入框,輸入xss的測試代碼,一般選擇留言的地方測試,因為相對來說,允許我們輸入的長度限制比較小,有的限制昵稱的長度只能為32字符等。我這里也選擇留言輸入框測試,測試結果如下圖:
圖7 存儲型xss測試結果
點擊確定后,可以看到留言內容出顯示空白。如下圖所示:
圖8 存儲型xss測試結果
我們模仿其他用戶訪問該頁面,打開Chrome,訪問該頁面,因為HTTP是無狀態協議,它依靠cookie來識別用戶身份,但是不同瀏覽器之間cookie不共享,所以2個瀏覽器可以模擬2個用戶的身份,因為2個瀏覽器訪問同一個頁面的話,產生的cookie不同,如果想要查看2個瀏覽器的cookie是否相同,可以在想要查看cookie的頁面打開開發者工具,然后在控制台輸入document.cookie就可以看到當前網站的cookie。可以發現一打開頁面就彈出了xss窗口。如下圖所示:
圖9 Chrome打開存儲型xss網頁
3. 基於DOM 的XSS
它通過修改頁面的DOM節點形成的XSS,所以稱為DOM based XSS。它和反射型XSS、存儲型XSS的差別在於,DOM XSS的XSS代碼並不需要服務器解析響應的直接參與,觸發XSS靠的就是瀏覽器端的DOM解析。
可以查看頁面的源代碼如下圖所示:
圖 10 基於DOM的XSS頁面源碼
我們要讓他沒有語法錯誤,就需要構造語句閉合一些標簽,所以,我們首先需要一個單引號來閉合 a標簽的href屬性。然后一個“>”來閉合a標簽的“<”。這樣構造以后,就變成了“在這里構造利用代碼'>xssDom”。所以我們可以構造如下語句:
'>
輸入后點擊測試,發現並沒有彈出提示窗,如下圖。審查元素后我們發現我們應該用一個事件來觸發行為:
圖11 基於DOM的XSS測試
構造如下數據: ' onclick=alert(/xss/) //此時頁面代碼就變成了:<a href='' onclick=alert(/xss/) //'>xssDom,再進行如上操作的時候就可以觸發彈窗了。
圖12 基於DOM的XSS測試
頁面在嘗試加載路徑為123 的圖片時,無法加載該圖片,所以觸發onerror函數。src屬性可以填任意錯誤的路徑。如果想要獲取用戶cookie,可以像步驟一一樣,在onerror事件中,插入JS代碼,通過JS網頁面插入節點等。我們使用hackbar這一工具將我們要插入的字符串轉成String.fromCharCode格式的,插入之后首先進入c:\wamp\www\xss目錄下,把cookies.txt刪除。輸入構造的語句后,點擊測試后,然后去c:\wamp\www\xss目錄下,可以看到cookies.txt又生成了,如下圖所示:
圖13 基於DOM的XSS測試cookie重新生成
要測試是沒有成功獲取到cookie還是沒設置cookie導致的該文件內容為空,可以在瀏覽器控制台執行document.cookie,看是否有輸出。觀察下圖我們發現已經設置了cookie:
圖14 觀察cookie是否設置
五、實驗結果總結
對實驗結果進行分析,完成思考題目,總結實驗的心得體會,並提出實驗的改進意見。
這一實驗主要根據實驗指導書完成了對於三種XSS的基本操作,其中反射型XSS最為簡單,但是也最容易被發現,效果也最差。而存儲型XSS和基於DOM的XSS的效果更好,相比而言也不容易被發現,危害也更大。反射型XSS,相對來說,危害較低,需要用戶點擊特定的鏈接才能觸發。存儲型XSS,該類XSS會把攻擊代碼保存到數據庫,所以也叫持久型XSS,因為它存在的時間是比較長的。DOM 型XSS,這類XSS主要通過修改頁面的DOM節點形成XSS,稱為DOM Based XSS。
思考題:
XSS除了盜取用戶COOKIE,還有什么其他用途?
- 界面劫持/偽造界面 偽造者可以重建一個和原網頁大致一樣的網頁,使用JavaScript的特性修改頁面的一些原有屬性。
- 重定向頁面
- CC攻擊
- 命令執行
- 通過hybrid app獲取手機通訊錄,短信,地理位置,相冊等敏感信息
如何擴大XSS的危害?
首先,CSRF漏洞就是攻擊者可以誘導受害者在他們自己的瀏覽器上點擊鏈接,以受害者的session執行一些敏感的操作。例如,假設下方的URL是某Web應用中用戶修改密碼的操作。https://www.example.com/profile/update_password?new_password=Welcome1
如果這個地方沒有做CSRF防護,那么攻擊者便可以發送如下鏈接給受害者:https://www.example.com/profile/update_password?new_password=HACKER
當受害者在 www.example.com站點已經是認證通過狀態,如果點擊了這個鏈接,那么修改密碼的請求便會以受害者的session數據發送到服務端。這將會導致受害者的密碼被修改為HACKER。因此較為簡單的擴大危害方式如下:
1.使用郵件的形式向某網站用戶發送URL,通過這個偽造的url對用戶進行攻擊
2.可以使用郵件等形式攻擊網站的管理員,攻擊成功后便可以執行許多惡意操作,例如竊取他的憑證。
心得體會:
通過這個實驗對於XSS攻擊有了初步的了解,也對於XSS攻擊的基本形式進行了實踐操作,基本理解如何通過一個url對用戶進行攻擊,獲得用戶cookie等惡意操作。從這個實驗中學習到了比課本上更加實際更加深入的知識,對於了解信息安全有重要的意義。
實驗改進意見:無