網(wǎng)站首頁 編程語言 正文
使用Python編寫探測(cè)WAF指紋腳本,再結(jié)合到Sqlmap中,這樣以后再探測(cè)網(wǎng)站時(shí),如果識(shí)別到此WAF指紋,就會(huì)顯示出來。
編寫探測(cè)識(shí)別WAF腳本
00x1:WAF的特征
首先我們要了解WAF,尋找WAF的特征
比如安全狗,當(dāng)訪問不存在的頁面
尋找關(guān)鍵字:如safedog
00x2:測(cè)試
ok,分析完畢,我們來測(cè)試一下
沒毛病,我們?cè)偃フ乙粋€(gè)waf,加入進(jìn)去
以云鎖為例,還是首先分析
沒有發(fā)現(xiàn)特別明顯的特征
接著利用sql語句觸發(fā)Waf
https://www.yunsuo.com.cn/%20and%201=1
云鎖竟然沒用自己的產(chǎn)品...
那就以奇安信云防護(hù)為例,老規(guī)矩,查看源代碼尋找特征
這一塊可以當(dāng)做特征(eventID">eventID)
測(cè)試一下,莫得問題
00x3:收集waf
那我們還可以把特征,全部放入字典中,或者txt文本加載
這樣可以方便收集waf,這里以txt為例
Waf.txt內(nèi)容為:
safedog|safedog
eventID|qianxin
yunsuo_session|yunsuo
通過Python打開Waf.txt查看每個(gè)Waf的識(shí)別規(guī)則
waf = []
def waflist():
file = open('waf.txt')
for line in file:
str = line.strip().split("|") #去除換行等字符,以|分割
waf_data={}
if len(str)==2: #判斷是否屬于waf格式
waf_data['waf']=str[0]
waf_data['name'] = str[1]
waf.append(waf_data)
waflist()
print waf
方便調(diào)用:
完善驗(yàn)證機(jī)制:
請(qǐng)求 /and 1=1.php,觸發(fā)waf
req = requests.get(url=u+'/and%201=1.php',headers=headers,verify=False,timeout=3)
批量驗(yàn)證網(wǎng)站是否存在WAF:
def main():
waflist()
print u"\n加載waf完畢\n"
f = open('url.txt','r')
for url in f:
url = url.strip()
if 'http' not in url:
u = 'http://' + url
wafreq(u)
到這我們腦子里就有個(gè)概念了,WAF指紋識(shí)別如何尋找的,如何粗略的編寫的,接下來就結(jié)合到Sqlmap中,讓它在檢測(cè)網(wǎng)站時(shí)存在此WAF指紋能夠識(shí)別到。
Pyhacker 之 編寫SQLMAP Waf探測(cè)
以前,sqlmap 是專門有一個(gè)WAF的目錄,來進(jìn)行探測(cè)waf
命令:(已變成自動(dòng)檢測(cè))
sqlmap.py -u "http://www.xxx.com" --identify-waf --batch
到現(xiàn)在,sqlmap已經(jīng)進(jìn)行了修改,路徑也變了
C:\Python27\sqlmap\thirdparty\identywaf
我們只需要修改data.json里面的waf特征即可,如:safedog (607行)
Company :哪家公司產(chǎn)品
Name:waf名稱
regex:正則匹配
那我們來進(jìn)行修改,以剛才的奇安信為例:
"regex": "Server: eventID|493",
原理:
Sqlmap會(huì)自動(dòng)執(zhí)行sql語句 來觸發(fā)waf
我們只需要寫入特征
修改之前:
修改之后:
已經(jīng)可以探測(cè)到WAF了,這更方便于我們進(jìn)行下一步操作
你可以去收集更多的waf特征,來進(jìn)行匹配啦。
原文鏈接:https://blog.csdn.net/XunanSec/article/details/124684863
相關(guān)推薦
- 2022-10-26 C++消息隊(duì)列(定義,結(jié)構(gòu),如何創(chuàng)建,發(fā)送與接收)_C 語言
- 2022-06-14 Flutter?RSA加密解密的示例代碼_Android
- 2022-05-12 Python繪制計(jì)算機(jī)CPU占有率變化的折線圖_python
- 2022-05-27 一起來學(xué)習(xí)C語言的程序環(huán)境與預(yù)處理_C 語言
- 2021-12-09 JQuery選擇器詳解_jquery
- 2022-05-22 flex彈性布局詳解_Flex
- 2023-10-11 小程序|頁面?zhèn)鲄⒌娜N方式
- 2022-03-05 C#多線程用法詳解_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支