20145216史婧瑤《網絡對抗》Web安全基礎實踐
20145216史婧瑤《網絡對抗》Web安全基礎實踐
實驗問題回答
(1)SQL註入攻擊原理,如何防禦
- 攻擊原理: SQL註入攻擊指的是通過構建特殊的輸入作為參數傳入web應用程序,而這些輸入大都是SQL語法裏的一些組合,程序通過執行SQL語句進而執行攻擊者所要的操作。其主要原因是程序沒有細致的過濾用戶輸入的數據,致使非法數據侵入系統。
- 防禦方法:
- 對輸入的數據進行過濾,將常見的sql語句的關鍵詞:select or ‘ " 等字符進行過濾。
- 對在數據庫中對密碼進行加密,驗證登陸的時候先將密碼進行加密再與數據庫中加密的密碼進行對比,若此時一致則基本是安全的。
- 對數據庫中密碼采用常用的MD5加密時盡量在字符串的前邊和後邊加上指定字符後在進行加密,這樣即便是看到了數據庫也很難破解密碼。
(2)XSS攻擊的原理,如何防禦
- 攻擊原理: XSS攻擊是一種網站應用程序的安全漏洞攻擊,是代碼註入的一種。它允許惡意用戶將代碼註入到網頁上,其他用戶在觀看網頁時就會受到影響。
- 防禦方法:
- 當惡意代碼值被作為某一標簽的內容顯示:在不需要html輸入的地方對html標簽及一些特殊字符( ” < > & 等等 )做過濾,將其轉化為不被瀏覽器解釋執行的字符。
- 當惡意代碼被作為某一標簽的屬性顯示,通過用“將屬性截斷來開辟新的屬性或惡意方法:屬性本身存在的單引號和雙引號都需要進行轉碼;對用戶輸入的html標簽及標簽屬性做白名單過濾,也可以對一些存在漏洞的標簽和屬性進行專門過濾。
(3)CSRF攻擊原理,如何防禦
- 攻擊原理: CSRF跨站請求偽造是一種對網站的惡意利用,通過偽裝來自受信任用戶的請求來利用受信任的網站。
- 防禦方法:
- 通過referer、token或者驗證碼來檢測用戶提交。
- 盡量不要在頁面的鏈接中暴露用戶隱私信息。
- 對於用戶修改刪除等操作最好都使用post操作。
- 避免全站通用的cookie,嚴格設置cookie的域。
實驗總結與體會
這次實驗讓我知道了許多網絡攻擊技術,再次感嘆網絡的不安全性!比如僅僅只需要簡簡單單的一個輸入,攻擊者就可以讓程序執行他想要的操作。所以我們以後在設計網站的時候一定要謹慎啊,針對這些攻擊做出相應的防範措施,提高網絡的安全性。
實踐過程記錄
首先開啟webgoat:
SQL註入攻擊:
String SQL Injection(SQL字符串註入):
題目要求嘗試使用SQL註入,使得所有銀行卡都可以被展現。
首先按題目嘗試輸入Smith,發現查詢出來都是last_name是Smith的表單,分析後知道是需要WHERE這個條件語句失效,因此構造一個用真式‘or 1=‘1
。
Log Spoofing(日誌欺騙):
這道題大概意思是說,我們輸入的用戶名會被追加到日誌文件中。所以我們可以使用障眼法來使用戶名為“admin”的用戶在日誌中顯示“成功登錄”,例如在User Name文本框中輸入%0d%0aLogin succeeded !admin
,其中%0d是回車,%0a是換行符,結果就像登錄成功一樣。
Stage 1 String SQL Injection
字符串型註入,要求使用SQL註入繞過認證,實現無密碼登陸。
在密碼欄輸入‘ or 1 = 1 --
,發現輸入錯誤:
查看源代碼,原來最長只能輸入8位,把長度限定改為15,把文本框格式改為text,再次輸入‘ or 1 = 1 --
,成功。
Stage 3 Numeric SQL Injection
數字型註入,要求使用一個普通員工的賬戶,瀏覽其BOSS的賬戶信息。
首先通過Larry的賬戶登陸(密碼為larry),更改登錄後頁面源代碼value值為112 or 1=1 order by salary desc
。
點擊ViewProfile查看信息:
Blind Numeric SQL Injection(盲數字註入)
題目要求是得到一個存放在pins表中值pin的內容,行號cc_number=1111222233334444,是一個int型的數據。使用盲註方式,輸入101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 2500)
,顯示不合法:
再次輸入101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 2300)
顯示合法:
最後試出來值為2364,成功。
XSS攻擊
Phishing with XSS(跨站腳本釣魚攻擊)
關於一個頁面中存在XSS漏洞時,它如何支持釣魚攻擊。
在文本框裏面寫一個釣魚網站代碼就可以了,這裏我參考了其他同學的代碼,將代碼粘過去後登錄,成功。
Stored XSS Attacks
題目要求:要創建非法的消息內容,可以導致其他用戶訪問時載入非預期的頁面或內容。
直接在title裏隨便輸入,然後在message中輸入一串代碼,比如:<script>alert("20145216");</script>
提交後,再次點擊剛剛創建的帖子,成功彈出窗口,說明攻擊成功。
Reflected XSS Attacks
將帶有攻擊性的URL作為輸入源,比如<script>alert("20145216sjy");</script>
,就會彈出對話框:
這個看上去和上面的Stored XSS Attacks很相似,但是原理不同,上面的是存儲式的,這個是通過寫在url裏面達到的效果,裏面的腳本也可以改寫成其他惡意的內容。
CSRF攻擊
Cross SSite Request Forgery(CSRF)
題目要求:需要寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊。
在message裏面輸入<img src=‘attack?Screen=282&menu=900&transferFunds=10000‘ width=‘1‘ height=‘1‘>
,就會發出一個轉錢的請求,盜取錢財。
提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的錢,達到CSRF攻擊的目的。
CSRF Prompt By-Pass
這個就是利用CSRF進行冒名操作轉賬,不過這次包括了兩個請求,一是轉賬請求,二是確認轉賬成功請求,即需要額外傳遞兩個參數給服務器(transferFunds=5000,transferFunds=CONFIRM)。直接在message中寫入攻擊代碼,然後提交:
點擊CONFIRM按鈕,成功。
完成情況:
20145216史婧瑤《網絡對抗》Web安全基礎實踐