WAF绕过-信息收集之反爬虫延时代理池技术

QQ截图20220322100526.jpg

Safedog-默认拦截机制分析绕过

关闭安全狗cc开关

QQ截图20220322102322.jpg

铸剑扫描(存在误报)

QQ截图20220322102359.jpg

查看防护日志,拦截了不允许的请求方法 head请求

QQ截图20220322102447.jpg

采用进程抓包工具查看(数据包是head形式提交)

QQ截图20220322102504.jpg

对比浏览器正常请求的数据包(发现少了很多内容)

QQ截图20220322102518.jpg

更改get方式请求(这次没有拦截),采用head的原因是因为速度更快,但是会被安全狗拦截

QQ截图20220322102545.jpg

开启cc防护

QQ截图20220322102601.jpg

铸剑再次扫描(发现误报了)

QQ截图20220322102619.jpg

网页访问被拦截

QQ截图20220322102636.jpg

启用延时扫描再次扫描(这里太慢了,但是应该是可以的)

QQ截图20220322102659.jpg

查看安全狗的爬虫白名单(网上通过百度搜索关键字其实就是利用的百度的爬虫,这里存在爬虫白名单的原因是为了防止阻止网站被收录)

QQ截图20220322102743.jpg

模拟百度爬虫(更改请求数据包的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)

QQ截图20220322102811.jpg

查看日志,除了数据库配置文件的路径被拦截了之外,cc并没有被拦截(但是视频里面这个是被拦截了的(被拦截的原因是由于铸剑虽然改变了提交方式为get,但是还是在数据包里面缺少了很多东西,需要模拟正常用户))

QQ截图20220322102836.jpg

使用burpsuite爆破目录,将user-agent改为百度爬虫,将get的路径设置为变量

QQ截图20220322103010.jpg

加载铸剑的dir字典

QQ截图20220322103024.jpg

过滤掉404的状态码查看(发现很多误报的,这个字典不行)

QQ截图20220322103041.jpg

采取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我以为不加,所以出错了(这里很容易出错))
  • 比铸剑的优点,可以更改全部头部

QQ截图20220322104007.jpg

  • 载入字典,URL部分固定不变,变化的是path部分
  • 将字典里面的换行符替换为空(有点不理解,因为这个字典的paths里面for循环的变量就是按行循环,怎么会存在换行符。)
  • 设置代理(这里主要为氪金用户准备,变换ip(还有一种变化ip:在数据包里面添加x-forwarded-for))
  • 这里最好print(URLs)查看遍历的是否出错,在进行逐步检测是否出错

QQ截图20220322104029.jpg

  • x-forwarded-for原理,比如在一些投票网站,可以通过爆破x-forwarded-for的值来设置多个代理,进而变化ip(但是明显安全狗不是检测的这里)

QQ截图20220322104057.jpg

  • 获取请求的的返回状态码,打印不是404的状态码,注意这里打印的状态码要转化为字符串格式,如果请求出错(或是网络原因等等各种原因)

QQ截图20220322104114.jpg

  • 程序运行的结果

QQ截图20220322104136.jpg

  • 通过代理去访问(不断的变化代理的ip,来绕过waf。或者将代理形成一个字典,不断的for循环代理ip来绕过)

QQ截图20220322104201.jpg

总结

  • 阿里云:无法模拟搜索引擎爬虫绕过 只能采用代理池或者延时
  • 宝塔:爬虫未知,延迟可以,代理池可以
  • 比较麻烦的是,我的安全狗防护的是phpStudy的网站,打开安全狗发现并不防护宝塔的网站
  • 在脚本扫描文件的时候,宝塔拦截的日志:在60秒内请求恶意文件路径(如configure文件)超过六次,就封锁ip六百秒,同一ip请求超过120次封锁ip100秒(1、可以通过延时绕过(一分钟5次)2、可以优化字典,将恶意文件路径去除3.将恶意文件路径进行变异,如文件上传漏洞一样,加上.或者空格(如index.php可以改为index.php.或者index.php ))

涉及资源