路径fuzz的一种想法(脚本试验扫了一晚上,扫出某大厂商两个漏洞)

参考了之前的路径fuzz的工具,例如猪猪侠的工具:https://github.com/ring04h/weakfilescan,这个工具主要就是先爬取网页的路径,然后再对每个路径进行fuzz,这种思路跟以前的路径fuzz的差别就在于可获取更多存在的链接进行fuzz;而不单单只是进行对根目录或者某个路径进行字典加载。


但上面的工具有一些缺点就是可能会导致一些网址会重复爬取,爬取的链接也不是很全,默认好像是设置3层。


参考了以上的有缺点,也造了一个轮子。我的做法就是先对网站的url链接进行爬取,获取的链接可以有很多用处,之前主要是用于倒进扫描器进行一些sql注入,url跳转和命令注入等的扫描。


扫描器的原理基本就是:先对爬取的url进行去重,然后把url链接倒进一个修改过的轮子(https://github.com/Mosuan/FileScan),这个fuzz路径的扫描器可以对每个扫描的路径都能扫描,并且是进行多个状态进行比对。例如 www.abc.com/a/b,扫描的路径就会有www.abc.com,www.abc.com/a,www.baidu.com/a/b。但爬取的url路径可能会有重复的情况,例如www.abc.com/a/b/c,这时候也进行一个路径的去重,把之前扫描过一次的路径进行标记,下次扫描的时进行状态的比对,结果主要存在mongodb中。


效果图:



目前存在的情况是由于一些路径没有进行规则的匹配,还是存在一点误报的情况。好东西不是一蹴而就,需要不停地进行优化,这里分享了一下自己在路径fuzz上面的看法。


更新:

进行了优化,一是当命中规则时会再一次进行返回包长度的检验;二是当命中规则数超过一个伐值,会舍弃这些数据。

这样误报率一下子下降,准确率提高了很多。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个使用boofuzz工具,使用IPv6地址的HTTP协议脚本: ```python #!/usr/bin/env python3 from boofuzz import * import socket def main(): # Set target IPv6 address target_ip = '::1' # Set target port target_port = 80 # Set up client socket s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) s.settimeout(5) s.connect((target_ip, target_port)) # Set up boofuzz session session = Session( target=Target(SocketConnection(s)), crash_threshold=1 ) # Define HTTP request s_initialize("request") s_string("GET", fuzzable=False) s_delim(" ", fuzzable=False) s_string("/index.html", fuzzable=False) s_delim(" ", fuzzable=False) s_string("HTTP/1.1", fuzzable=False) s_static("\r\n") s_static("Host: [{0}]\r\n".format(target_ip)) s_static("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0\r\n") s_static("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n") s_static("Accept-Language: en-US,en;q=0.5\r\n") s_static("Accept-Encoding: gzip, deflate\r\n") s_static("Connection: keep-alive\r\n") s_static("Upgrade-Insecure-Requests: 1\r\n") s_static("\r\n") # Define boofuzz target target = session.target # Define boofuzz request request = target.scripts.add( Static( name="http_request", data=s_get("request") ) ) # Start boofuzz fuzzing session.fuzz() if __name__ == "__main__": main() ``` 在这个脚本中,我们首先设置了目标IPv6地址和端口,然后设置了客户端socket。接下来,我们使用boofuzz创建了一个会话,并定义了一个HTTP请求。我们使用`[{0}]`来将IPv6地址包含在Host头中的方括号中,以便正确处理IPv6地址。 最后,我们将HTTP请求定义为boofuzz目标,并开始模糊测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值