利用Python查询网站WAF

Admin 2020-03-02 268人围观 ,发现0个评论 Pythonwaf

00x1:
需要用到的模块如下:
import requests

00x2:
首先我们要了解WAF,寻找WAF的特征
比如安全狗,当访问不存在的页面


利用Python查询网站WAF Web安全 第1张
寻找关键字:如safedog
利用Python查询网站WAF Web安全 第2张
00x3:
ok,分析完毕,我们来测试一下
利用Python查询网站WAF Web安全 第3张

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

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

利用Python查询网站WAF Web安全 第4张


没有发现特别明显的特征
接着利用sql语句进行测试

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


利用Python查询网站WAF Web安全 第5张


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

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

利用Python查询网站WAF Web安全 第6张

这一块可以当做特征(eventID">eventID)
测试一下,莫得问题

利用Python查询网站WAF Web安全 第7张

00x4:
那我们还可以把特征,全部放入字典中,或者txt文本加载
这样可以方便收集waf,这里以txt为例

Waf.txt内容为:

[Python] 纯文本查看 复制代码
1
2
3
safedog|safedog
eventID|qianxin
yunsuo_session|yunsuo



[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
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



利用Python查询网站WAF Web安全 第8张

方便调用:
利用Python查询网站WAF Web安全 第9张

完善验证机制:
利用Python查询网站WAF Web安全 第10张

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

[Python] 纯文本查看 复制代码
1
req = requests.get(url=u+'/and%201=1.php',headers=headers,verify=False,timeout=3)



00x5:
批量验证:

[Python] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
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网站自动导出

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
for ww in waf:
    if ww['waf'] in req.content:
        print "[+]",ww['name'],u
        f =open('Waf_url.txt','a+')
        f.write("[+]%s %s\n"%(ww['name'],u))
        f.close()
    elif ww['waf'] in req.cookies:
        print "[+]",ww['name'],u
        f =open('Waf_url.txt','a+')
        f.write("[+]%s %s\n"%(ww['name'],u))
        f.close()



00x6:

完整代码如下:

[Python] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
#-*- coding:utf-8 -*-
import requests
import urllib3
urllib3.disable_warnings()
 
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)
 
def wafreq(u):
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'
        }
        req = requests.get(url=u+'/and%201=1.php',headers=headers,verify=False,timeout=3)
        for ww in waf:
            if ww['waf'] in req.content:
                print "[+]",ww['name'],u
                f =open('Waf_url.txt','a+')
                f.write("[+]%s %s\n"%(ww['name'],u))
                f.close()
            elif ww['waf'] in req.cookies:
                print "[+]",ww['name'],u
                f =open('Waf_url.txt','a+')
                f.write("[+]%s %s\n"%(ww['name'],u))
                f.close()
    except:
        pass
 
def main():
    waflist()
    print u"\n加载waf完毕!\n"
    ff = open('url.txt','r')
    for url in ff:
        url = url.strip()
        if 'http' not in url:
            u = 'http://' + url
            wafreq(u)
 
if __name__ == '__main__':
    main()



演示:
利用Python查询网站WAF Web安全 第11张

  
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行)

利用Python查询网站WAF Web安全 第12张


Company :哪家公司产品
Name:waf名称
regex:正则匹配

那我们来进行修改,以刚才的奇安信为例
"regex": "Server: eventID|493",
利用Python查询网站WAF Web安全 第13张

原理:

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

修改之前:
利用Python查询网站WAF Web安全 第14张

修改之后:
利用Python查询网站WAF Web安全 第15张

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

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

完整项目:https://github.com/hackxc/Pyhacker/


请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By 蚁人博客