在最近工作的渗透测试项目中发现Nuclei
存在一个问题,就是相同的网站连续扫描多次会出现漏报的情况,此前没有注意过这个情况,所以写篇文章记录一下。
在此之前我的常用命令都是一把梭,有就有没有就继续其他测试
$ nuclei -u https://www.xxx.com -me res
直到今天测试时发现个奇怪的情况,如下图所示,我先是做了一次全量扫描,发现没有可利用的中高危漏洞,因为此前已经识别到目标系统是xxl-job
,所以就再次通过-tags xxljob
指定后进行扫描,结果我发现扫描两次却出现了不同的结果
$ nuclei -u https://www.xxx.com -me res -tags xxljob
第一次扫描:
第二次扫描:
与Nuclei社区沟通后找到了原因,通过指定-debug
参数可以看到完整的请求包和响应包,如下图所示,很明显我们的请求被拦截了,那么为什么一个正常的登录行为都会触发拦截呢?
经过不断的调试Nuclei
的参数定位到了问题,那就是请求速率
,默认的请求速率为150
,这对于有WAF防御的网站来说简直就是在自报家门…
所以我又进行了不断的调试,最终我发现只有当-rl 1
的时候,才能正常扫描出漏洞,不会出现WAF拦截导致的漏报
$ nuclei -u https://www.xxx.com -me res -tags xxljob -rl 1
但是,漏报的问题解决了新的问题又产生了,在日常渗透测试中不一定每次的测试目标都可以精准识别出指纹进行扫描,所以在不指定tags
的情况下指定-rl 1
扫描时间会非常长,基本上可以放弃了
又经过不断的测试后,终于找到了速度快且扫描精准的方法,那就是通过-p
参数设置BurpSuite
为上游代理,让burp替我们发送所有的请求,至于为什么这样就可以了,额 … 似乎burp会限制请求速率,让我们的请求逐个发出去,不会产生过大的请求速率(猜的)如果你知道真正的原因,欢迎在评论区与我交流~
$ nuclei -u https://www.xxx.com -me res -p http://127.0.0.1:8080
最后,总结下,在明确知道网站有WAF的情况下:
- 如果你也喜欢直接梭哈进行扫描,那么就使用
-p
设置BurpSuite为上游代理 - 如果你精准识别到了指纹信息,并且该指纹涉及的漏洞模板数量较少,那么就是用
-rl 1
来限制请求速率
对了,由于Nuclei不会主动更新版本,所以要记得偶尔执行下nuclei -ut
命令更新你的Nuclei的版本哦~
如果您认为我的文章对您有帮助,欢迎点赞、留言,或将其分享给更多人。这不仅能够扩大我们的交流影响,也是对我继续创作更多文章的激励。衷心感谢您的支持和鼓励,期待能够继续与您保持联系。
If you found this article helpful, please like, comment, or share it with others! Doing so will expand the reach of our communication and encourage me to create more articles. Thank you so much for your support and encouragement. I can’t wait to stay in touch with you!