Exp9 Web安全基礎

1.實驗後回答問題

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

原理:html

  • SQL注入攻擊指的是經過構建特殊的輸入做爲參數傳入Web應用程序,而這些輸入大都是SQL語法裏的一些組合,經過執行SQL語句進而執行攻擊者所要的操做,其主要緣由是程序沒有細緻地過濾用戶輸入的數據,導致非法數據侵入系統。java

  • 根據相關技術原理,SQL注入能夠分爲平臺層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平臺的漏洞所致;後者主要是因爲程序員對輸入未進行細緻地過濾,從而執行了非法的數據查詢。git

防護:程序員

  • 永遠不要信任用戶的輸入。對用戶的輸入進行校驗,能夠經過正則表達式來操做。web

  • 永遠不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。正則表達式

  • 不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。數據庫

  • 應用的異常信息應該給出儘量少的提示。瀏覽器

(2)XSS攻擊的原理,如何防護.安全

原理:

  • XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。這些代碼包括HTML代碼和客戶端腳本。這種類型的漏洞因爲被駭客用來編寫危害性更大的phishing攻擊而變得廣爲人知。對於跨站腳本攻擊,黑客界共識是:跨站腳本攻擊是新型的「緩衝區溢出攻擊「,而JavaScript是新型的「ShellCode」。

防護:

  • 傳統XSS防護多采用特徵匹配方式,在全部提交的信息中都進行匹配檢查。對於這種類型的XSS攻擊,採用的模式匹配方法通常會須要對「javascript」這個關鍵字進行檢索,一旦發現提交信息中包含「javascript」,就認定爲XSS攻擊。

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

原理:

  • 能夠這麼理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF可以作的事情包括:以你名義發送郵件,發消息,盜取你的帳號,甚至於購買商品,虛擬貨幣轉帳......形成的問題包括:我的隱私泄露以及財產安全。

  • CSRF攻擊是源於WEB的隱式身份驗證機制!WEB的身份驗證機制雖然能夠保證一個請求是來自於某個用戶的瀏覽器,但卻沒法保證該請求是用戶批准發送的!

防護:

  • 經過 referer、token 或者 驗證碼 來檢測用戶提交。
  • 儘可能不要在頁面的連接中暴露用戶隱私信息。
  • 對於用戶修改刪除等操做最好都使用post 操做 。
  • 避免全站通用的cookie,嚴格設置cookie的域。

2.實驗總結與體會

  • 此次實驗使用webgoat來分別嘗試了XSS攻擊、CSRF攻擊、SQL注入攻擊,感觸仍是很深。之因此可以進行這些攻擊,不止是由於咱們的web設計自己就有漏洞!還有咱們在使用web的時候,太大意太疏忽了,沒有想到會有一些危險的狀況發生。我以爲,咱們應該多去學習一些關於網絡攻防的知識與技術,好比,如何可以進行XSS攻擊、各類類型的SQL注入攻擊等,這並非說咱們要去成爲一名黑客,去攻擊別人的網站,去盜取別人的信息,而是去了解有哪些XSS或SQL注入的攻擊場景,再發掘出產生該漏洞的緣由,從而去思考爲何會產生這個 bug,如何去修復這個 bug。網絡攻防是一門藝術,以一種攻與防的博弈,攻防雙方互相促進,我們的信息社會才得以更好的發展。

3.實踐過程記錄

關於webgoat

  • WebGoat運行在帶有java虛擬機的平臺之上,目前提供的訓練課程有不少,包含了XSS、線程安全、SQL注入等,咱們本次的實驗就是在WebGoat平臺上進行。根據老師給的實驗指導,來進行webgoat的安裝和登陸。

 

 

 

XSS攻擊

(1)Stored XSS Attacks

  • 該實驗目的是在新建帖子的message裏進行XSS攻擊。
  • 即隨意寫任何在瀏覽器中可被執行的代碼,建立成功後點擊寫好的帖子即被攻擊。
  • 寫入massage內容爲<script>alert("It's 20145326caixinyi~");</script>

 

 

 

(2)Reflected XSS Attacks

  • 該實驗一樣是在輸入框中輸入可執行代碼,提交後被攻擊。
  • 使用burpsuite發現,UpdateCart Purchase均以post提交數據。
  • Enter your credit card number:以及Enter your three digit access code:處的值均被post原樣返回,因此在此處構造js語言。
  • 這裏是在ACCESS CODE 框裏填入獲取COOKIE的javascript代碼<script>alert(document.cookie);</script>

 

  • 雖然這個實驗的效果和上一個存儲型XSS實驗的效果相似,可是二者所用的原理不同,存儲型XSS是持久化的,代碼是存儲在服務器中的。
  • 而反射型XSS攻擊是非持久化的,也就是說它的代碼是不存在於服務器中的,因此通常來講存儲型XSS攻擊危害更大。

(3)CSRF攻擊

  • 該實驗爲在新建郵件裏寫入能夠更改由題目要求的attack的src、menu的transferFunds數值參數
  • 可選用html裏的iframe模塊,自動鏈接打開所標示網頁
  • 這裏在message裏寫入的內容爲<iframe src="attack?Screen=284&menu=900&transferFunds=5000"></iframe>
  • 注意這裏面的Screen和menu的值在每一個人的電腦中可能不同,能夠在當前頁面的最下邊查看。
  • 提交後,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的5000元,從而達到CSRF攻擊的目的。

 

(4)CSRF Prompt By-Pass攻擊

  • 這裏在message裏寫入內容爲:

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

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

  • 該實驗與上個實驗相似,一樣是經過郵件的方式進行惡意請求。
  • 這裏不只是對transferFunds數值參數進行了變化,還對這個過程進行了請求確認,因此須要兩個iframe模塊。
  • url須要使用下面兩個參數:transferfunds=5000transferfunds=CONFIRM

 

SQL注入攻擊

 (1)Log Spoofing

  • 該實驗爲在用戶名處使用%0d%0a(回車換行)以及文字內容來迷惑他人,雖然有成功登錄的文字信息,但實質上是登陸失敗的。
  • 這裏的user name處寫入的內容是%0d%0aLogin succeeded !admin

 

 

(2)Numeric SQL Injection

  • 本來的功能是選擇一個地點,顯示一個地點的天氣情況。
  • 如今SQL注入後的功能是選擇一個地點,顯示全部地點的天氣狀況。
  • 在kail中可以使用burpsuite做爲網頁代理,對傳送的網頁內容進行編輯之後再發到服務器。
  • 打開burpsuite。綁定個人學號爲端口。address選擇本地。

 

 

 

 

(3)String SQL Injection

  • 該實驗和Numeric SQL Injection相似,本來只能查到某一我的的信息,如今經過SQL語句的注入使整張表都顯示出來。
  • 這裏的last name寫入的內容是' or 1=1;--,構造一個永真式。由於last name是字符型的,因此須要在開始加上單引號。

 

 

(4)XPATH Injection

  • 題乾的意思爲你的帳號及密碼爲Mike/test123。你的目標是嘗試查看其餘員工的數據。
  • 仍是須要構建永真式
  • cc' or 1=1 or 'a'='a

 

(5)Database Backdoors step1

  • 該實驗是要在user ID中實現多條SQL語句的注入,其中101是題目給的已存在的帳戶ID;
  • 將user ID輸入101 or 1=1;update employee set salary=53260;
  • 把用戶表的全部內容顯示出來同時把工資值變化了。

 

(6)Database Backdoors step2

  • 該實驗所要使用的SQL語句已經在題目中給出了。
  • 目的是使用該SQL語句,讓這個表一旦添加新用戶,就在用戶表裏將新用戶的郵箱改成題目固定的郵箱。

 

(7)Blind Numeric SQL Injection

  • 該實驗的目的是要找cc_number爲1111222233334444的pin大小。
  • 輸入正經常使用戶ID,判斷這個用戶是否存在。
  • 咱們首先測試下效果,101是題目給的已知用戶ID。

 

  • ID爲100的時候就不合法了。

 

  • 咱們知道pin是個數值,要知道cc_number對應的pin,則只有一個一個嘗試。

  • 使用<、>來大概肯定範圍,同and一塊兒,and前爲存在的用戶ID,例如101,一旦and後面的語句,即判斷pin的值大小成立,則下面就會顯示存在用戶,而後繼續縮小範圍進行查找,直到找到惟一肯定的。

  • 在numer框中輸入101 AND ((SELECT pin FROM pins WHERE cc_number='1111222233334444') = 2364 );

 

  • 以後慢慢縮小範圍,最終能夠肯定pin的值在2000到2500之間,而後打開BurpSuite,設置好代理,抓包,而後send to intruder進行暴力破解。具體參考lxm同窗的博客~關於這部分寫得很清楚。
  • 找到對應pin值後,將值輸入框中,該實驗即經過。

相關文章
相關標籤/搜索