WAF绕过-信息收集之反爬虫延时代理池技术
Safedog-默认拦截机制分析绕过
关闭安全狗cc开关
铸剑扫描(存在误报)
查看防护日志,拦截了不允许的请求方法 head请求
采用进程抓包工具查看(数据包是head形式提交)
对比浏览器正常请求的数据包(发现少了很多内容)
更改get方式请求(这次没有拦截),采用head的原因是因为速度更快,但是会被安全狗拦截
开启cc防护
铸剑再次扫描(发现误报了)
网页访问被拦截
启用延时扫描再次扫描(这里太慢了,但是应该是可以的)
查看安全狗的爬虫白名单(网上通过百度搜索关键字其实就是利用的百度的爬虫,这里存在爬虫白名单的原因是为了防止阻止网站被收录)
模拟百度爬虫(更改请求数据包的user-agent,没有被拦截了)
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)
Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)
查看日志,除了数据库配置文件的路径被拦截了之外,cc并没有被拦截(但是视频里面这个是被拦截了的(被拦截的原因是由于铸剑虽然改变了提交方式为get,但是还是在数据包里面缺少了很多东西,需要模拟正常用户))
使用burpsuite爆破目录,将
user-agent
改为百度爬虫,将get的路径设置为变量
加载铸剑的dir字典
过滤掉404的状态码查看(发现很多误报的,这个字典不行)
采取Python跑字典扫描网站的目录
import requests
import time
headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
#模拟用户 Kit / 537.36(KHTML, like Gecko) Chrome / 84.0.4147.105 Safari / 537.36# 模拟引擎 Mozilla / 5.0(compatible; Baiduspider - render / 2.0; + http: //www.baidu.com/search/spider.html)
#更多爬虫引擎: https: //www.cnblogs.com/iack/p/3557371.html
'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider-render/2.0; + http: //www.baidu.com/search/spider.html)',
'Sec-Fetch-Dest': 'document',
'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 ',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'Cookie': 'xxx', #根据当前访问 cookie
}
for paths in open('php_b.txt', encoding = 'utf-8'):
url = 'http://192.168.0.103:8081/'
paths = paths.replace('\n', '')
urls = url + paths# 如需测试加代理, 或加入代理池需加代理
proxy = {
'http': '127.0.0.1:7777'
}
try:
code = requests.get(urls, headers = headers, verify = False).status_code
print(urls + '|' + str(code))
if code == 200 or code == 403:
print(urls + '|' + str(code))
except Exception as err:
print('connecting error')
# time.sleep(3) 模拟用户需延时 引擎可用可不用( 根据请求速度)
- 构造请求数据包的header(这里直接从抓包工具复制过来,然后两边都要加’’,我开始的net的1我以为不加,所以出错了(这里很容易出错))
- 比铸剑的优点,可以更改全部头部
- 载入字典,URL部分固定不变,变化的是path部分
- 将字典里面的换行符替换为空(有点不理解,因为这个字典的paths里面for循环的变量就是按行循环,怎么会存在换行符。)
- 设置代理(这里主要为氪金用户准备,变换ip(还有一种变化ip:在数据包里面添加x-forwarded-for))
- 这里最好print(URLs)查看遍历的是否出错,在进行逐步检测是否出错
x-forwarded-for
原理,比如在一些投票网站,可以通过爆破x-forwarded-for
的值来设置多个代理,进而变化ip(但是明显安全狗不是检测的这里)
- 获取请求的的返回状态码,打印不是404的状态码,注意这里打印的状态码要转化为字符串格式,如果请求出错(或是网络原因等等各种原因)
- 程序运行的结果
- 通过代理去访问(不断的变化代理的ip,来绕过waf。或者将代理形成一个字典,不断的for循环代理ip来绕过)
总结
- 阿里云:无法模拟搜索引擎爬虫绕过 只能采用代理池或者延时
- 宝塔:爬虫未知,延迟可以,代理池可以
- 比较麻烦的是,我的安全狗防护的是phpStudy的网站,打开安全狗发现并不防护宝塔的网站
- 在脚本扫描文件的时候,宝塔拦截的日志:在60秒内请求恶意文件路径(如configure文件)超过六次,就封锁ip六百秒,同一ip请求超过120次封锁ip100秒(1、可以通过延时绕过(一分钟5次)2、可以优化字典,将恶意文件路径去除3.将恶意文件路径进行变异,如文件上传漏洞一样,加上.或者空格(如index.php可以改为index.php.或者index.php ))
涉及资源
- 铸剑扫描WebPathBrute,web网站路径扫描工具
- https://github.com/7kbstorm/7kbscan-WebPathBrute
- 7kbscan-WebPathBrute-master.zip
最后一次更新于2022-03-25 15:16
0 条评论