使用Python编写探测WAF指纹脚本,再结合到Sqlmap中,这样以后再探测网站时,如果识别到此WAF指纹,就会显示出来。本文属于巡安似海PyHacker系列课程

 

编写探测识别WAF脚本

00x1:

首先我们要了解WAF,寻找WAF的特征

比如安全狗,当访问不存在的页面

寻找关键字:如safedog

00x2:

ok,分析完毕,我们来测试一下

没毛病,我们再去找一个waf,加入进去

以云锁为例,还是首先分析

没有发现特别明显的特征

接着利用sql语句触发Waf

https://www.yunsuo.com.cn/%20and%201=1

云锁竟然没用自己的产品...

那就以奇安信云防护为例,老规矩,查看源代码寻找特征

这一块可以当做特征(eventID">eventID)

测试一下,莫得问题

00x3:

那我们还可以把特征,全部放入字典中,或者txt文本加载

这样可以方便收集waf,这里以txt为例

Waf.txt内容为:

safedog|safedog    eventID|qianxin    yunsuo_session|yunsuo

通过Python打开Waf.txt 查看每个Waf的识别规则

    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

方便调用:

完善验证机制:

请求 /and 1=1.php,触发waf

req = requests.get(url=u+'/and%201=1.php',headers=headers,verify=False,timeout=3)

批量验证网站是否存在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)

到这我们脑子里就有个概念了,WAF指纹识别如何寻找的,如何粗略的编写的,接下来就结合到Sqlmap中,让它在检测网站时存在此WAF指纹能够识别到。

Pyhacker 之 编写SQLMAP Waf探测

以前,sqlmap 是专门有一个WAF的目录,来进行探测waf

命令:(已变成自动检测)

sqlmap.py -u "http://www.xxx.com" --identify-waf --batch

到现在,sqlmap已经进行了修改,路径也变了

C:\Python27\sqlmap\thirdparty\identywaf

我们只需要修改data.json里面的waf特征即可,如:safedog (607行)

Company :哪家公司产品

Name:waf名称

regex:正则匹配

那我们来进行修改,以刚才的奇安信为例:

"regex": "Server: eventID|493",

原理:

Sqlmap会自动执行sql语句 来触发waf我们只需要写入特征

修改之前:

修改之后:

已经可以探测到WAF了,这更方便于我们进行下一步操作

你可以去收集更多的waf特征,来进行匹配啦。

喜欢关注一下叭~

最新文章

  1. 阿里云提示:对输入参数id未进行正确类型转义,导致整型注入的发生
  2. nuget packages batch install
  3. [转]jq选择器
  4. CREATE DATABASE permission denied in database 'master'.
  5. 理解NSTextContainer
  6. win xp32位与64位怎么查看是多少位系统
  7. pthread_cond_timedwait时间设置
  8. ASP.NET MVC的Action Filter
  9. CommandBehavior.CloseConnection的使用
  10. Android 启动APP黑屏解决方案
  11. 通过SqlClr制作Sql自动化批量执行脚本
  12. html dl dt dd标签元素语法结构与使用
  13. UITabbar的一些常规用法(总结)
  14. 读懂掌握 Python logging 模块源码 (附带一些 example)
  15. spring 总结
  16. SSI服务端包含技术
  17. 统一建模语言 UML (2)
  18. 【转载】C/C++杂记:深入理解数据成员指针、函数成员指针
  19. JQ 报表插件 jquery.jqplot 使用
  20. Unity3D 发布成PC端常用设置

热门文章

  1. kafka producer 源码总结
  2. 详解AOP——用配置文件的方式实现AOP
  3. 【C语言】预处理、宏定义、内联函数 _
  4. 220v-5v稳压电路
  5. css布局基础总结
  6. 软件构造实验-Guns
  7. table表格做出圆角效果
  8. Linux_连接工具_SecureCRT的使用教程
  9. Java-GUI编程之事件处理
  10. Linux小工具的应用,grep,sort,wc,cut