19、SQL注入之SQLMAP繞過WAF

目錄

    • 邏輯層
      • 1、邏輯問題
      • 2、性能問題
    • 白名單
      • 方式一:IP白名單
      • 方式二:靜態資源
      • 方式三:url白名單
      • 方式四: 爬蟲白名單

sqlmap在測試漏洞的時候,選擇了no,它就不會去測試其它的了,我們一般選擇yes,為了保證正確性。因為我們也不知道它是否就真的就是那個注入點、數據庫類型,或者就是那個注入類型

在攻防實戰中,往往需要掌握一些特性,比如服務器、數據庫、應用層、WAF層等,以便我們更靈活地去構造Payload,從而可以和各種WAF進行對抗,甚至繞過安全防御措施進行漏洞利用

邏輯層

1、邏輯問題

(1)云waf防護,一般我們會嘗試通過查找站點的真實IP,從而繞過CDN防護
(2)當提交GET、POST同時請求時,進入POST邏輯,而忽略了GET請求的有害參數輸入,可嘗試Bypass
(3)HTTP和HTTPS同時開放服務,沒有做HTTP到HTTPS的強制跳轉,導致HTTPs有WAF防護,HTTP沒有防護,直接訪問HTTP站點繞過防護
(4)特殊符號%00,部分waf遇到%00截斷,只能獲取到前面的參數,無法獲取到后面的有害參數輸入,從而導致Bypass。比如: id=1%00and 1=2 union select1,2,column_name from information_schema.columns

2、性能問題

猜想1:在設計WAF系統時,考慮自身性能問題,當數據量達到一定層級,不檢測這部分數據。只要不斷的填充數據,當數據達到一定數目之后,惡意代碼就不會被檢測了。

猜想2:不少WAF是C語言寫的,而c語言自身沒有緩沖區保護機制,因此如果WAF在處理測試向量時超出了其緩沖區長度就會引發bug,從而實現統過。

例子1:
?id=1 and (select 1)=(Select0xA1000)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),
8,9
ps:0xA
1000指0xA后面"A"重復1000次,一般來說對應用軟件構成緩沖區溢出都需要較大的測試長度,這里1000只做參考也許在有些情況下可能不需要這么長也能溢出。

例子2:
?a0=0&a1=1&…&a100=100&id=1 union select 1,schema_name,3 from INFORMATTON_SCHEMA.schemata
備注:獲取請求參數,只獲取前100個參數,第101個參數并沒有獲取到,導致SQL注入繞過。

白名單

方式一:IP白名單

從網絡層獲取的ip,這種一般偽造不來,如果是獲取客戶端的IP,這樣就可能存在偽造IP繞過的情況。
測試方法:修改http的header來bypass waf
x-forwarded-for
x-remote-IP
x-orginating-IP
x-remote-addr
X-Real-ip

IP白名單在實戰中意義不是很大,因為它的條件實在是很多,很難去滿足;一個是獲取IP是不是通過腳本去獲取,如果是的話,可以去偽造IP,通過tcp/udp網絡層方式獲取的,那是沒有辦法偽造的

方式二:靜態資源

特定的靜態資源后綴請求,常見的靜態文件(.js .jpg .swf .css等等),類似白名單機制,waf為了檢測效率,不去檢測這樣一些靜態文件名后綴的請求
http://10.9.9.201/sql.php?id=1
http://10.9.9.201/sql.php/1.js?id=1
備注:Aspx/php只識別到前面的.aspx/.php 后面基本不識別

有些WAF過濾是基于腳本過濾的參數,是針對腳本去過濾,針對某些其它格式就不會去過濾,比如圖片格式、文本格式,因為圖片格式、文本格式一般不會帶參數,或者說圖片格式、文本格式造成不了危害,只有腳本里面有代碼,文本和圖片的代碼是沒有什么作用的

http://10.9.9.201/sql.php/x.txt?id=1

我們這樣去訪問之后,網站并不會受到結果上的影響,數據還能夠正常接收;waf認為注入的參數是建立在x.txt文件上面的,所以waf有可能放心這個注入,x.txt是一個很正常的文本文件,即使傳參數,也不會造成很大的影響。但是網站這樣子訪問,參數并不是給了x.txt,而是給了.php
以前老版本的WAF可以通過這個方式直接繞過,但是現在不行了,但是我們還是要對這個東西進行了解

方式三:url白名單

正常文件涉及到敏感的操作,那我們在訪問正常文件的時候,就會被攔截了,這個時候為了讓正常的攔截去訪問的話,它會對這個文件進行白名單設置

為了防止誤攔,部分waf內置默認的白名單列表,如admin/manager/system等管理后臺。只要url中存在白名單的字符串,就作為白名單不進行檢測。常見的url構造姿勢:
http://10.9.9.201/sql.php/admin.php?id=1
http://10.9.9.201/sgl.php?a=/manager/&b=…/etc/passwd
http://10.9.9.201/…/…/…/manager/…/sql.asp?id=2
waf通過/manage/進行比較,只要uri中存在/manage/就作為白名單不進行檢測,這樣我們可以通過/sql.php?a=/manage/&b=…/etc/passwd 繞過防御規則。

可以結合靜態資源展開攻擊,有的waf是不行的,但是我們還是要去學一下

方式四: 爬蟲白名單

部分waf有提供爬蟲白名單的功能,識別爬蟲的技術一般有兩種:
1、根據UserAgent 2、通過行為來判斷
UserAgent可以很容易欺騙,我們可以偽裝成爬蟲嘗試繞過。
User Agent Switcher (Firefox 附加組件),下載地址:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/
這個方式不是講注入繞過,他是講掃描繞過,這個方式我們經常用到

我們在服務器上創建自己網站之后,那么百度、google、搜狗等搜索引擎會對我們的網站頁面進行收錄,在搜索相關資料的時候會請求到我們的網站上來。
爬蟲白名單就是偽造搜索引擎,當我們對網站部署waf之后,我們會發現我們對網站訪問速度過快、請求過多的話,會攔截

搜索引擎會對我們的網站進行爬取,因為它的收錄就是對我們的網站采取爬蟲技術,而且速度很快,也是符合攔截規則的,但是WAF卻不會去攔截,因為WAF會去識別你這個是用戶訪問,還是搜索引擎爬取,所以我們可以通過數據包的偽造,偽造成搜索引擎,對目標的網站進行訪問,這個時候waf肯定會放行,因為它覺得這個是搜索引擎的訪問,是正常的、官方的一種收錄行為,不會是用戶的攻擊行為

我們對網站的后臺進行目錄爆破,我們發現爆出了很多結果,但是我們去驗證的時候,發現這些東西壓根都不存在,全部是誤報
這里有兩類問題,一個是請求速度過快,觸發了規則;一個是掃描結果是個錯誤
偽造成官方搜索引擎的爬蟲,去對網站進行掃描,就不會觸發它的規則,因為它是白名單
dirsearch 爆破后臺目錄的數據包的UA可以使用搜索引擎爬蟲的UA

我們學習的是繞過WAF的方法,不是學習某個工具,方法最重要

/*!50001 select * from test */

這里的50001表示,假如數據庫是5.00.01以上版本,該語句才會被推行,反之就不行

50001會干擾WAF的識別,但是在數據庫當中會被正常執行,這種繞過方式只針對mysql

%20union%20a11%23%0a%20select%201,2,3%23

寫與不寫all都會執行,不會影響任何結果,但是all能夠繞過匹配規則里面的union select的一個結合, 因為中間有個all
總之來說,繞過WAF的匹配就是防止他們匹配到,我們要學FUZZ的話,就需要去學寫腳本

我們在實際的工作當中,不可能全部用到手工注入,肯定是要借助檢測工具

sqlmap自帶繞過WAF的腳本,但是這些腳本肯定是不能夠繞過常見WAF的,是用來繞過CTF比賽的,因為是比賽,所以WAF不會寫的很死,肯定是存在問題的,就可以用這些腳本來繞過。

因為用自帶的腳本繞不了,我們只能自己去編寫,可以在sqlmap腳本的基礎上去改,把注釋刪掉便于查看。
只要在if payload這個地方換就可以了,把符合WAF匹配規則的給替換掉,例如

if payload:payload = payload.replace("union","%23a%oaunion")payload = payload.replace("select","/*!44575select*/")payload = payload.replace("%20","%23a%0a")payload = payload.replace(" ",%23a%0a")payload = payload.replace( "database()","database%23a%0a()")
return payload

我們所有的步驟都做對了,但是我們就是被攔截了,這個時候我們可以通過代理,把完整的數據包抓到BP上面去看一下,看一下數據包里面是不是有問題

WAF可以通過數據包的指紋,發現我們使用了sqlmap這個工具在搞事情,所以被攔截了,不是因為我們的繞過腳本沒搞好,才被攔截的

當我們在使用工具進行檢測的時候,我們首先要解決一個問題,那就是工具會不會被攔截的問題。因為每個作者在寫工具的時候,都有一個初衷,他在對網站進行掃描,會有一個數據包體系,這個數據包肯定會有他的特征,比如特定的指紋頭,其實就是我們常說的指紋庫,通過這個指紋庫,我們可以識別出他使用的工具,不同的瀏覽器對網站進行訪問是不一樣的,因為他們的內核不同,所以他可以通過這些判斷出你是人為的,還是工具掃描的,從而進行攔截

sqlmap的訪問量會觸發WAF的CC流量攔截,這個時候,就跟我們的注入沒有關系了,我們可以采取延遲、代理池,爬蟲白名單三種方式繞過

搜索引擎爬蟲 http 指紋頭——》獲取搜索引擎爬蟲 http 指紋頭——》sqlmap user-agent注入——》更改sqlmap的請求頭,用來繞過WAF或者使用–user-agent=""來自定義
隨機是模擬用戶的訪問,我們可以通過–user-agent來模擬搜索引擎的訪問
sqlmap只要是一直在跑,那他就是正常的,只要一旦停下來,那就遇到問題了
我們可以通過刷新網站來判斷我們是否被封堵

delay延遲,按照我們延遲的時間,隔一段時間,發送一個數據包。正常訪問網站的時候,就會速度過快,導致被封堵,隔一秒發一個。

代理池涉及到的東西比較復雜,我們現在也講不到,代理池就是隨機刷IP,我們需要學完python的安全開發,然后再去寫一個;或者我們用網上現成的工具和腳本改一下,結合sqlmap去跑一下。

只要涉及到流量檢測,基本上就會用到代理池。

我們要去學開發,我們要去學Python,因為python簡單容易上手,工具大都是python開發的,我們可以直接拿別人的工具二次開發,也可以直接用Python寫二次開發,現在的安全形式,如果你不懂代碼那是不行的

中轉腳本,本地寫個腳本(請求遠程地址數據包可以自定義編寫),這個腳本去請求遠程注入地址,sqlmap去注入本地的腳本地址

<?php
$url='http://xxxx/job_bystjb/yjs_byszjs.asp?id=';
$payload=base64_encode($_GET['x']);
echo $payload;
$urs=$ur1.$payload;
file_get _contents($urls);
echo $urls;
?>

php發送http請求的幾種方法

https://blog.csdn.net/qq_34827048/article/details/78892700

繞過waf不是單純的,除了技術上的,還可能是因為檢測工具的原因;出了問題要去抓包看看,不要一直在代碼上面找問題;分析是很重要的,那些繞過的方法,網上去找資料,多試幾遍,用fuzz就完了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Deep Learning With Pytorch - 最基本的感知機、貫序模型/分類、擬合

文章目錄 如何利用pytorch創建一個簡單的網絡模型&#xff1f;Step1. 感知機&#xff0c;多層感知機&#xff08;MLP&#xff09;的基本結構Step2. 超平面 ω T ? x b 0 \omega^{T}xb0 ωT?xb0 or ω T ? x b \omega^{T}xb ωT?xb感知機函數 Step3. 利用感知機進行決策…

SpringBoot整合Minio

SpringBoot整合Minio 在企業開發中&#xff0c;我們經常會使用到文件存儲的業務&#xff0c;Minio就是一個不錯的文件存儲工具&#xff0c;下面我們來看看如何在SpringBoot中整合Minio POM pom文件指定SpringBoot項目所依賴的軟件工具包 <?xml version"1.0" …

Ubuntu上安裝RabbitMQ

在Ubuntu上安裝RabbitMQ并設置管理員用戶為"admin"&#xff0c;密碼為"123456"&#xff0c;并開啟開機自啟 更新系統軟件包列表。在終端中執行以下命令&#xff1a; sudo apt update安裝RabbitMQ服務器軟件包。運行以下命令&#xff1a; sudo apt insta…

DaVinci Resolve Studio 18 for Mac 達芬奇調色

DaVinci Resolve Studio 18是一款專業的視頻編輯和調色軟件&#xff0c;適用于電影、電視節目、廣告等各種視覺媒體的制作。它具有完整的后期制作功能&#xff0c;包括剪輯、調色、特效、音頻處理等。 以下是DaVinci Resolve Studio 18的主要特點&#xff1a; - 提供了全面的視…

Linux 設置 ssh 內網穿透

背景&#xff1a;有三臺機器A、B、C&#xff0c;機器 A 位于某局域網內&#xff0c;能夠連接到互聯網。機器 B 有公網 IP&#xff0c;能被 A 訪問到。機器 C 位于另外一個局域網內&#xff0c;能夠連接到互聯網&#xff0c;能夠訪問 B。 目標&#xff1a;以 B 為中介&#xff…

Jmeter-壓測時接口按照順序執行-臨界部分控制器

文章目錄 臨界部分控制器存在問題 臨界部分控制器 在進行壓力測試時&#xff0c;需要按照順序進行壓測&#xff0c;比如按照接口1、接口2、接口3、接口4 進行執行 查詢結果是很混亂的&#xff0c;如果請求次數少&#xff0c;可能會按照順序執行&#xff0c;但是隨著次數增加&a…

Python-OpenCV中的圖像處理-模板匹配

Python-OpenCV中的圖像處理-模板匹配 模板匹配單對象的模板匹配多對象的模板匹配 模板匹配 使用模板匹配可以在一幅圖像中查找目標函數&#xff1a; cv2.matchTemplate()&#xff0c; cv2.minMaxLoc()模板匹配是用來在一副大圖中搜尋查找模版圖像位置的方法。 OpenCV 為我們提…

無線充電底座

<項目>無線充電器 前言 個人DIY的無線充電底座&#xff08;帶磁吸&#xff09;&#xff0c;基于IP6829方案。 Drawn By:67373 硬件部分 3D模型 資料開源鏈接 https://github.com/linggan17/WirelessCharge

面試熱題(每日溫度)

請根據每日 氣溫 列表 temperatures &#xff0c;重新生成一個列表&#xff0c;要求其對應位置的輸出為&#xff1a;要想觀測到更高的氣溫&#xff0c;至少需要等待的天數。如果氣溫在這之后都不會升高&#xff0c;請在該位置用 0 來代替。 輸入: temperatures [73,74,75,71,69…

SpringBoot + Mybatis多數據源

一、配置文件 spring: # datasource: # username: root # password: 123456 # url: jdbc:mysql://127.0.0.1:3306/jun01?characterEncodingutf-8&serverTimezoneUTC # driver-class-name: com.mysql.cj.jdbc.Driverdatasource:# 數據源1onedata:jdbc-url: j…

SCF金融公鏈新加坡啟動會 鏈結創新驅動未來

新加坡迎來一場引人矚目的金融科技盛會&#xff0c;SCF金融公鏈啟動會于2023年8月13日盛大舉行。這一受矚目的活動將為金融科技領域注入新的活力&#xff0c;并為廣大投資者、合作伙伴以及關注區塊鏈發展的人士提供一個難得的交流平臺。 在SCF金融公鏈啟動會上&#xff0c; Wil…

CentOS7的journalctl日志查看方法

多臺服務器間免密登錄|免密拷貝 Cenos7 搭建Minio集群部署服務器(一) Cenos7 搭建Minio集群Nginx統一訪問入口|反向動態代理(二) Spring Boot 與Minio整合實現文件上傳與下載(三) CentOS7的journalctl日志查看方法 MySQL8.xx一主兩從復制安裝與配置 1、概述 日志管理工…

【ElasticSearch入門】

目錄 1.ElasticSearch的簡介 2.用數據庫實現搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近實時 3.2 cluster集群&#xff0c;ES是一個分布式的系統 3.3 Node節點&#xff0c;就是集群中的一臺服務器 3.4 index 索引&#xff08;索引庫&#xff09; 3.5 type類型 3.6 doc…

【佳佳怪文獻分享】MVFusion: 利用語義對齊的多視角 3D 物體檢測雷達和相機融合

標題&#xff1a;MVFusion: Multi-View 3D Object Detection with Semantic-aligned Radar and Camera Fusion 作者&#xff1a;Zizhang Wu , Guilian Chen , Yuanzhu Gan , Lei Wang , Jian Pu 來源&#xff1a;2023 IEEE International Conference on Robotics and Automat…

kubernetes企業級高可用部署

目錄 1、Kubernetes高可用項目介紹 2、項目架構設計 2.1、項目主機信息 2.2、項目架構圖 1、Kubernetes高可用項目介紹 2、項目架構設計 2.1、項目主機信息 2.2、項目架構圖 2.3、項目實施思路 3、項目實施過程 3.1、系統初始化 3.2、配置部署keepalived服務 3.3、…

強制Edge或Chrome使用獨立顯卡【WIN10】

現代瀏覽器通常將圖形密集型任務卸載到 GPU&#xff0c;以改善你的網頁瀏覽體驗&#xff0c;從而釋放 CPU 資源用于其他任務。 如果你的系統有多個 GPU&#xff0c;Windows 10 可以自動決定最適合 Microsoft Edge 自動使用的 GPU&#xff0c;但這并不一定意味著最強大的 GPU。 …

Linux/centos上如何配置管理NFS服務器?

Linux/centos上如何配置管理NFS服務器&#xff1f; 1 NFS基礎了解1.1 NFS概述1.2 NFS工作流程 2 安裝和啟動NFS服務2.1 安裝NFS服務器2.2 啟動NFS服務 3 配置NFS服務器和客戶端3.1 配置NFS服務器3.2 配置NFS客戶端 4 實際示例4.1 基本要求4.2 案例實現 1 NFS基礎了解 NFS&…

LAXCUS如何通過技術創新管理數千臺服務器

隨著互聯網技術的不斷發展&#xff0c;服務器已經成為企業和個人獲取信息、進行計算和存儲的重要工具。然而&#xff0c;隨著服務器數量的不斷增加&#xff0c;傳統的服務器管理和運維方式已經無法滿足現代企業的需求。LAXCUS做為專注服務器集群的【數存算管】一體化平臺&#…

Jtti:Windows server如何備份與還原注冊表

在 Windows Server 中&#xff0c;備份和還原注冊表是一項重要的任務&#xff0c;可以幫助你在系統配置更改之前創建一個恢復點&#xff0c;以防止出現問題。以下是在 Windows Server 上備份和還原注冊表的步驟&#xff1a; 備份注冊表&#xff1a; 1.打開“運行”對話框&…

企業數據庫遭到360后綴勒索病毒攻擊,360勒索病毒解密

在當今數字化時代&#xff0c;企業的數據安全變得尤為重要。隨著數字化辦公的推進&#xff0c;企業的生產運行效率得到了很大提升&#xff0c;然而針對網絡安全威脅&#xff0c;企業也開始慢慢引起重視。近期&#xff0c;我們收到很多企業的求助&#xff0c;企業的服務器遭到了…