前言
现在实际渗透测试中都可能会碰见Waf,而一个服务器如果存在waf那么我们很多地方都会被限制到,比如扫描,针对某漏洞利用被拦截,但是也不是绝对安全,还是有很多方式可以绕过这些防护,针对渗透测试的信息收集阶段如果碰到Waf的解决思路就是本文章的重点。
SafeDog的绕过测试研究
在本地搭建一个Web 把安全狗的默认防护开启,我们对本机网站进行信息收集,进行目录扫描:
![图片[1]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-101-1024x569.png)
发现我们不管怎么探测,都是200状态码,这是很明显的被拦截了,我们用抓包软件抓一下该工具发送的数据包进行观察:
![图片[2]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-102-1024x661.png)
数据包:
工具发送的数据包:
HEAD /%25DomainCenter%25.tar.xz HTTP/1.1
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.3
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Host: 192.168.68.147
Connection: Close
再打开浏览器进行访问查看正常用户访问的数据包:
GET / HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
Cookie: PHPSESSID=ullopv3p516as816tb0mihktt7
Host: 192.168.68.147
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.76
这里通过对比可以看到,工具的请求方式默认是head,而正常用户的请求方式默认是get
这有什么区别? head的请求方式是很多爬虫引擎的默认请求方式,他的特点就是响应报文中没有响应体只有响应头,这样速度就会很快,爬虫效率更高
在安全狗防护日志也看到了对该请求方式的拦截:
![图片[3]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-103-1024x683.png)
所以我们进行更改把head调整为get方式再进行:
可以看到成功扫描完成,而且结果也是正确的
![图片[4]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-104-1024x569.png)
扫描成功是因为安全狗默认防护中没有开启CC防护
![图片[5]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-105-1024x683.png)
如果我们手动开启CC防护再进行扫描:
可以看到,又像上面一样,被拦截了
![图片[6]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-106-1024x569.png)
我们此时再进行访问网站页面:
已经被拦截了
![图片[7]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-107-1024x683.png)
就可以成功绕过了,不过缺点就是扫描速度太慢了,因为延时了。
绕过思路?
延时扫描
我们打开安全狗具体看CC防护的防护策略,其实CC被拦截的本质就是请求太频繁了,我们降低速率就好,也就是进行延时。
可以看到请求100次最多10次
![图片[8]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-108-1024x683.png)
我们如果对扫描工具进行延时扫描,比如控制速率让他不打破这个规则那么就不会被拦截:
![图片[9]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-109-1024x569.png)
模拟其他搜索引擎爬虫UA进行白名单绕过
我们知道百度,谷歌,搜孤等搜索引擎都有自己的搜素引擎,那么一般一个网站想被收录就要被这些搜索引擎爬虫进行扫描,所以一般WAF都会把这些爬虫引擎设置为白名单,那么我们就可以利用这个点,安装时就是默认开的。
![图片[10]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-110-1024x683.png)
我们在工具中自定义UA 更换为百度搜索引擎的UA然后进行扫描:
User-Agent :Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
可以发现成功绕过CC防护:
![图片[11]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-111-1024x569.png)
挂代理IP池
对于一些高防收费WAF中,伪装搜索引擎可能过不了,那么就只剩下挂IP代理池了,我们可以找一些代理池如:
![图片[12]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-112-1024x730.png)
把这些代理ip爬行下来,然后挂代理去进行扫描:
贴一个python的扫描脚本 proxy 就可以自己把代理ip放入
import requests
import time
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'PHPSESSID=4d6f9bc8de5e7456fd24d60d2dfd5e5a',
'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Microsoft Edge";v="92"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)'
}
print("请输入扫描路径(http/https开头):")
url=input()
for paths in open('php.txt', encoding='utf-8'):
#url = "<https://www.yanyang.ink/>"
paths = paths.replace('\\n', '')
urls = url + paths
proxy = {
'http': '127.0.0.1:7777'
}
try:
code = requests.get(urls, headers=headers).status_code #proxies=proxy 添加代理抓包
# time.sleep(3)
if code ==200:
print(urls+'\\033[32m[√] 路径存在 \\033[0m')
else:
print(urls + '|' + str(code))
except Exception as err:
print('connect error')
#time.sleep(3)
就可以正常完成扫描
多重WAF叠加网站
对于有一些网站,比如他是阿里云的服务器,然后上面用的宝塔建站并开通防护,然后又安装了安全狗,那么他其实是有三个WAF,第一个阿里云的安全防护,第二个宝塔的防护,第三个安全狗的防护,此时如果进行扫描信息收集,我们要选用一种能同时绕过三个防护的方法,比如延时,挂代理
![图片[13]-WAF绕过(一)信息收集之模拟爬虫和延时及代理技术-Drton1博客](https://www.yanyang.ink/wp-content/uploads/2023/01/image-113-1024x961.png)
请登录后发表评论
注册