数据包特征(请求体)
请求方式
我们熟知的大部分请求方式以GET、POST为主,但是在目录扫描时为了加快扫描的速度,也会用到HEAD方法。简单理解head方法就是主要为了探测url链接存在且能正常访问,类似于get,但get会根据url链接向服务器请求对应信息,head不会,服务器不会给任何的返回。这也是很多目录扫描工具使用HEAD探测的原因,但有些网站也会禁止HEAD请求,因此绕过的话就需要简单改成GET或POST啦
模拟真实用户
对比工具和真实用户的数据包,你会发现还是存在很大不同的:这里贴出使用sqlmap注入和通过浏览器注入抓取的两个数据包做对比:
很明显就能判断出谁是真实用户了,因此对于此类判断过滤,想要绕过只需将工具包的请求体换成真实用户请求的请求体发包就可以了。
搜索引擎爬虫
爬虫的存在是各大搜索引擎获取网页的关键,拿百度来讲,每天每时每刻都有大量的百度爬虫“活动”在互联网的深处,深度爬取网络中各个网页的数据,这也是为什么我们能够通过浏览器搜索浩瀚互联网中的内容。
爬虫的存在是有两面性的,网站为了获得更多用户的流量就必须依赖爬虫的功能将网站数据收录到浏览器中,而攻击者也是利用这个原因伪造成爬虫的方式进行工具扫描绕过检测,绕过防火墙的防护。
那么如何区别是否是搜索引擎爬虫呢? 最重要的一点就是 User-Agent
user-agent是判断用户使用什么方式访问网站参数,用chrome就是谷歌的ua,包括版本信息等;看一段百度的ua:
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
所以只需要更换这段ua就可以了
下面是安全狗的爬虫的防护规则:
各类搜索引擎爬虫user-agent:Spider -- 各大搜索引擎爬虫:User-Agent - Be-myself - 博客园
这里说一点的是,很多waf对扫描工具的探测拦截多是基于请求速度和工具指纹实现的,请求速度的绕过方法很简单,具体的有增加延迟、使用代理池技术(下一篇会具体讲到怎么实现)。而指纹这东西很大方面来说是没法避免的,就像在cms识别中,搭建了WordPress是默认存在wp-login.php目录的。上面使用的sqlmap工具注入的数据包中很明显的看到ua这个点存在sqlmap的字样,这个点可以选择更改ua,但不排除还有其他的指纹点,具体的绕过方法还得多去测试。