20164305 徐广皓《网络对抗》Exp9 Web安全基础实践
?
1.WebGoat實踐
(1)wegoat安裝
- 下載?webgoat-container-7.0.1-war-exec.jar?,開啟WebGoat,在終端中輸入命令?java -jar webgoat-container-7.0.1-war-exec.jar?
- 在火狐中輸入?http://localhost:8080/WebGoat?進入WebGoat登錄界面
(2)攻擊列表
-
Stored XSS Attacks
-
Cross Site Request Forgery(CSRF)
-
CSRF Prompt By-Pass
-
LAB:SQL Injection(Stage 3:Numeric SQL Injection)
-
Command Injection
-
Numeric SQL Injection
-
Log Spoofing
-
String SQL Injection
-
LAB:SQL Injection(Stage 1:String SQL Injection)
-
LAB:SQL Injection(Stage 3:Numeric SQL Injection)
Stored XSS Attacks
將帶有攻擊性的URL作為輸入源,輸入<script>alert("1");</script>,彈出對話框1
Cross Site Request Forgery(CSRF)
在message框中輸入:<img src="http://localhost:8080/WebGoat/attack?Screen=288&menu=900&transferFunds=4305"/>,注意這里面的Screen和menu的值與右邊Parameters一致
CSRF Prompt By-Pass
在瀏覽器中手動輸入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=4305進入確認轉賬請求頁面
Command Injection
這個題是要求能夠在目標主機上執行系統命令,我們可以通過火狐瀏覽器下的一個擴展Firebug(就是右上角的小蟲的標志)對源代碼進行修改,例如在BackDoors.help旁邊加上"& netstat -an & ipconfig":
? ? ? ? ? 2.之后在下拉菜單中能看到我們修改后的值
? ? ? ? ? ??
? ? ? ? ? ?3.選中修改后的值再點view,可以看到命令被執行,出現系統網絡連接情況
? ? ? ? ??
? ? ? ? ??
Numeric SQL Injection
? ? ? ? ?1.構造一個永真式就完事了
? ? ? ? ?
? ? ? ? ??
? ? ? ? ?
Log Spoofing
利用換行符偽造一個假的日志信息,在User Name文本框中輸入xgh%0d%0aLogin Succeeded for username: admin,(%0d是回車,%0a是換行符)
? ? ? ? ?
? ? ? ? ?2.如圖所示,攻擊成功
? ? ? ? ?
String SQL Injection
在文本框中輸入' or 1=1 --
? ? ? ? ?
? ? ? ? ?2.Go,攻擊成功,所有用戶信息都被顯示出來
? ? ? ? ?
LAB:SQL Injection(Stage 1:String SQL Injection)
以用戶Neville登錄,在密碼欄中輸入'or 1=1--進行SQL注入成功
? ? ? ? ?
LAB:SQL Injection(Stage 3:Numeric SQL Injection)
以用戶名Larry登錄,登錄之后看到瀏覽員工信息的按鈕是ViewProfile
2.實驗問題
(1)SQL注入攻擊原理,如何防御
SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
SQL注入攻擊是黑客對數據庫進行攻擊的常用手段之一。
SQL注入攻擊指的是就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
防御:
1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,雙"-"進行轉換等。
2.永遠不要使用動態拼裝sql,可以使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
3.永遠不要使用管理員權限的數據庫連接,為每個應用使用單獨的權限有限的數據庫連接。
4.不要把秘密信息直接存放,加密或者hash掉密碼和敏感的信息。
(2)XSS攻擊的原理,如何防御
XSS攻擊:跨站腳本攻擊。
XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略。
防御:
基于特征的防御:
傳統XSS防御多采用特征匹配方式,在所有提交的信息中都進行匹配檢查。對于這種類型的XSS攻擊,采用的模式匹配方法一般會需要對“javascript”這個關鍵字進行檢索,一旦發現提交信息中包含“javascript”,就認定為XSS攻擊。
基于代碼修改的防御:
步驟1、對所有用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度范圍內、采用適當格式、采用所預期的字符的內容提交,對其他的一律過濾。
步驟2、實現Session標記(session tokens)、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。
步驟3、確認接收的的內容被妥善的規范化,僅包含最小的、安全的Tag(沒有javascript),去掉任何對遠程內容的引用(尤其是樣式表和javascript),使用HTTP only的cookie。
(3)CSRF攻擊原理,如何防御
CSRF即跨站請求偽造。借用用戶的身份,向web server發送請求,因為該請求不是用戶本意,所以稱為“跨站請求偽造”。
CSRF一般的攻擊過程是,攻擊者向目標網站注入一個惡意的CSRF攻擊URL地址(跨站url),當(登錄)用戶訪問某特定網頁時,如果用戶點擊了該URL,那么攻擊就觸發了。
防御
referer
因為偽造的請求一般是從第三方網站發起的,所以第一個防御方法就是判斷?referer?頭,如果不是來自本網站的請求,就判定為CSRF攻擊。但是該方法只能防御跨站的csrf攻擊,不能防御同站的csrf攻擊(雖然同站的csrf更難)。
使用驗證碼
每一個重要的post提交頁面,使用一個驗證碼,因為第三方網站是無法獲得驗證碼的。還有使用手機驗證碼,比如轉賬是使用的手機驗證碼。
使用token
每一個網頁包含一個web server產生的token,?提交時,也將該token提交到服務器,服務器進行判斷,如果token不對,就判定位CSRF攻擊。
將敏感操作又get改為post,然后在表單中使用token.?盡量使用post也有利于防御CSRF攻擊。
?3.實驗總結與體會
?還有15分鐘就不能交作業了,所以就少做點。。。感覺還是挺好玩的,要是在ctf比賽前作就更好了。最后一次實驗就結束了,終于不用寫博客了O(∩_∩)O哈哈~
?
?
?
?
? ? ? ?
轉載于:https://www.cnblogs.com/zui-luo/p/10927825.html
總結
以上是生活随笔為你收集整理的20164305 徐广皓《网络对抗》Exp9 Web安全基础实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些路由交换命令
- 下一篇: IDEA 去掉 pom 文件标签名称下划