20164305 徐廣皓《網絡對抗》Exp9 Web安全基礎實踐

 

1.WebGoat實踐

(1)wegoat安裝javascript

  • 下載 webgoat-container-7.0.1-war-exec.jar ,開啓WebGoat,在終端中輸入命令 java -jar webgoat-container-7.0.1-war-exec.jar 

  • 在火狐中輸入 http://localhost:8080/WebGoat 進入WebGoat登陸界面

(2)攻擊列表java

  • Stored XSS Attacks

  • Cross Site Request Forgery(CSRF)

  • CSRF Prompt By-Pass

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

  • Command Injection

  • Numeric SQL Injection

  • Log Spoofing

  • String SQL Injection

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

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

Stored XSS Attacks

  1. 將帶有攻擊性的URL做爲輸入源,輸入<script>alert("1");</script>,彈出對話框1web

Cross Site Request Forgery(CSRF)

  1. 利用cookie冒名登陸,用代碼僞造請求
  2. 在message框中輸入:<img src="http://localhost:8080/WebGoat/attack?Screen=288&menu=900&transferFunds=4305"/>,注意這裏面的Screen和menu的值與右邊Parameters一致正則表達式

  3. 提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的4305元,攻擊成功。

CSRF Prompt By-Pass

  1. 構造兩次CSRF攻擊,一是轉帳請求,二是確認轉帳成功請求,即transferFunds=4305,transferFunds=CONFIRM
  2. 在瀏覽器中手動輸入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=4305進入確認轉帳請求頁面sql

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

Command Injection

  1. 這個題是要求可以在目標主機上執行系統命令,咱們能夠經過火狐瀏覽器下的一個擴展Firebug(就是右上角的小蟲的標誌)對源代碼進行修改,例如在BackDoors.help旁邊加上"& netstat -an & ipconfig"數據庫

          2.以後在下拉菜單中能看到咱們修改後的值瀏覽器

            

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

          

          

Numeric SQL Injection

         1.構造一個永真式就完事了服務器

         

          

         

Log Spoofing

  1. 利用換行符僞造一個假的日誌信息,在User Name文本框中輸入xgh%0d%0aLogin Succeeded for username: admin,(%0d是回車,%0a是換行符)cookie

         

         2.如圖所示,攻擊成功

         

String SQL Injection

  1. 在文本框中輸入' or 1=1 --

         

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

         

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

  1. 以用戶Neville登陸,在密碼欄中輸入'or 1=1--進行SQL注入成功

         

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

  1. 以用戶名Larry登陸,登陸以後看到瀏覽員工信息的按鈕是ViewProfile

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

2.實驗問題

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

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

SQL注入攻擊是黑客對數據庫進行攻擊的經常使用手段之一。

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

防護:

1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,能夠經過正則表達式,雙"-"進行轉換等。

2.永遠不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。

3.永遠不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。

4.不要把祕密信息直接存放,加密或者hash掉密碼和敏感的信息。

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

XSS攻擊:跨站腳本攻擊。

XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略。

防護:

基於特徵的防護:

傳統XSS防護多采用特徵匹配方式,在全部提交的信息中都進行匹配檢查。對於這種類型的XSS攻擊,採用的模式匹配方法通常會須要對「javascript」這個關鍵字進行檢索,一旦發現提交信息中包含「javascript」,就認定爲XSS攻擊。

基於代碼修改的防護:

步驟一、對全部用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其餘的一概過濾。

步驟二、實現Session標記(session tokens)、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。

步驟三、確認接收的的內容被妥善的規範化,僅包含最小的、安全的Tag(沒有javascript),去掉任何對遠程內容的引用(尤爲是樣式表和javascript),使用HTTP only的cookie。

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

CSRF即跨站請求僞造。借用用戶的身份,向web server發送請求,由於該請求不是用戶本意,因此稱爲「跨站請求僞造」。

CSRF通常的攻擊過程是,攻擊者向目標網站注入一個惡意的CSRF攻擊URL地址(跨站url),當(登陸)用戶訪問某特定網頁時,若是用戶點擊了該URL,那麼攻擊就觸發了。

防護

referer

由於僞造的請求通常是從第三方網站發起的,因此第一個防護方法就是判斷 referer 頭,若是不是來自本網站的請求,就斷定爲CSRF攻擊。可是該方法只能防護跨站的csrf攻擊,不能防護同站的csrf攻擊(雖然同站的csrf更難)。

使用驗證碼

每個重要的post提交頁面,使用一個驗證碼,由於第三方網站是沒法得到驗證碼的。還有使用手機驗證碼,好比轉帳是使用的手機驗證碼。

使用token

每個網頁包含一個web server產生的token, 提交時,也將該token提交到服務器,服務器進行判斷,若是token不對,就斷定位CSRF攻擊。

將敏感操做又get改成post,而後在表單中使用token. 儘可能使用post也有利於防護CSRF攻擊。

 3.實驗總結與體會

 還有15分鐘就不能交做業了,因此就少作點。。。感受仍是挺好玩的,要是在ctf比賽前做就更好了。最後一次實驗就結束了,終於不用寫博客了O(∩_∩)O哈哈~

相關文章
相關標籤/搜索