20145211黃志遠《網絡對抗》Exp9 Web安全基礎實踐

20145211黃志遠《網絡對抗》Exp9 Web安全基礎實踐

基礎問題回答

  1. SQL注入攻擊原理,如何防護?
    • SQL注入攻擊就是利用輸入的機會構造本身指望的請求,好比破壞掉用戶名或者密碼驗證進行登陸,還有對數據庫增刪查改的基本操做。
    • 對於SQL注入攻擊的防範:
      • 利用輸入規則限制進行防護,不容許特殊字符輸入
      • 使用正則表達式過濾傳入的參數,對一些包含sql注入的關鍵字進行過濾;
      • 採用字符串過濾的方法;
      • jsp中調用該函數檢查是否包含非法字符,防止SQL從URL注入。
  2. XSS攻擊的原理,如何防護?
    • XSS又稱CSS,全稱Cross SiteScript,跨站腳本攻擊,XSS攻擊相似於SQL注入攻擊,將攻擊代碼寫在url或者數據庫存儲裏面,誘使別人訪問從而運行代碼。
    • XSS的防護能夠從如下兩方面來進行:
      • 對用戶的輸入進行處理,只容許輸入合法的值,其它值一律過濾掉。
  3. CSRF攻擊原理,如何防護?
    • 咱們知道XSS是是一種對網站的惡意利用,CSRF比XSS更具危險性。CSRF能夠劫持會話和cookie來冒名進行 一些操做,好比實驗中的轉帳。
    • 對於CSRF的防護也能夠從如下幾個方面入手:
      • 經過referer、token或者驗證碼來檢測用戶提交;
      • 儘可能不要在頁面的連接中暴露用戶隱私信息,對於用戶修改刪除等操做最好都使用post操做;
      • 避免全站通用的cookie,嚴格設置cookie的域。

實踐總結與體會

  • 寫着,寫着,就到了最後一次,也許之後,也會說一聲,很久不見,甚是想念。

關於WebGoat

  • WebGoat的安裝使用再也不贅述,開啓以下

     

  1. WebGoat使用8080端口,因此在瀏覽器上訪問localhost:8080/WebGoat,進入WebGoat以後,能夠看到有不少題目來讓咱們進行練習。web

 

Cross-Site Scripting(XSS)練習

Stored XSS Attacks

  • title無所謂,message輸入一段代碼便可(忘了截圖了)

Reflected XSS Attacks

  1. 將帶有攻擊性的URL做爲輸入源,例如輸入<script>alert("hzy attack succeed!");</script>,就會彈出對話框:正則表達式

  2.  雖然這個效果和上一個存儲型XSS實驗的效果相似,可是二者所用的原理不同,存儲型XSS是持久化的,代碼是存儲在服務器中。sql

Cross Site Request Forgery(CSRF)

  1. 這個實踐是利用cookie冒名登陸,用代碼僞造請求
  2. 咱們在message框中輸入這樣一串代碼:<img src="http://localhost:8080/WebGoat/attack?Screen=283&menu=900&transferFunds=4000"/>,注意這裏面的Screen和menu的值每一個人的電腦可能不同,能夠在當前頁面的右邊有個Parameters進行查看:
    數據庫

     

  3. 提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的4000元,從而達到CSRF攻擊的目的。瀏覽器

     

CSRF Prompt By-Pass

  1. 咱們依舊和上一個同樣要構造CSRF攻擊,不過此次其包括了兩個請求,一是轉帳請求,二是確認轉帳成功請求,即須要額外傳遞兩個參數給服務器(transferFunds=4000,transferFunds=CONFIRM)
  2. 在瀏覽器中手動輸入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=5000進入確認轉帳請求頁面:
    安全

     

  3. 以後看了一下網頁的源代碼,發現transferFunds的值變成了CONFIRM
    服務器

     

  4. 因而點擊了CONFIRM按鈕以後,再在瀏覽器中輸入URL:localhost:8080/WebGoat/attack?Screen=275&menu=900&transferFunds=CONFIRM,成功轉走了5000元:
    cookie

     

 

 

 

 

 

 

Injection Flaws練習

 

 

Command Injection

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

     

     

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

     

     

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

     

 

Numeric SQL Injection

  1. 關鍵是構造一個永真式:

     

     

 

Log Spoofing

  1. 利用換行符僞造一個假的日誌信息,在User Name文本框中輸入lxm%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:

     

  2. 如圖所示,攻擊成功:

     

String SQL Injection

  1. 仍是和以前同樣,在文本框中輸入' or 1=1 --

     

  2. Go,攻擊成功,全部用戶信息都被顯示出來:

     

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

  1. 以用戶Neville登陸,在密碼欄中輸入' or 1=1 --進行SQL注入,可是登陸失敗:

     

  2. 後面查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多隻容許輸入8個字符:

     

  3. 對字符長度進行修改,而後從新登陸,登陸成功:

     

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

  1. 咱們仍是用上一題的辦法先以用戶名Larry登陸,登陸以後看到瀏覽員工信息的按鈕是ViewProfile

     



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

Database Backdoors

  1. 先獲得該用戶的信息:

     

  2. 能夠發現輸入的語句沒有驗證,很容易進行SQL注入,輸入注入語句:101; update employee set salary=10000,成功把該用戶的工資漲到了10000:

     

  3. 接下來使用語句101;CREATE TRIGGER lxmBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145211@163.com' WHERE userid = NEW.userid建立一個後門,把表中全部的郵箱和用戶ID都設爲個人:

     

 

Blind Numeric SQL Injection

  1. 輸入語句101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') > 10000 );查看pin數值是否大於10000:

     

  2. 以後慢慢縮小範圍,設置好代理,選好攻擊位置後要設置載荷,因爲咱們要進行數字類型的暴力破解,因此選擇載荷類型爲Numbers,步長爲1,再設置從2000到2500進行,設置完成後開始攻擊:會發現2364的報文長度明顯和其餘不同,那這個值就應該就是2364
  3. 將這個值輸入到網頁中,成功:

相關文章
相關標籤/搜索