0x001 悬剑武器库-野草计划
悬剑武器库-野草计划:工欲善其事必先利其器,意在帮助网络安全测试人员在使用工具渗透时,利用最骚的套路,最优解的方式,花最少的时间,合法合规的检测出授权测试的网站漏洞,从而使授权安全测试的企业能够快速排除漏洞安全隐患,迅速提升安全能力。
0x002 crawlergo
360 0Kee-Teem在19年末时,发布了他们自己产品中使用的动态爬虫模块, crawlergo是一个使用chrome headless模式进行URL入口收集的动态爬虫。
使用Golang语言开发,基于chromedp 进行一些定制化开发后操纵CDP协议,对整个页面关键点进行HOOK,灵活表单填充提交,完整的事件触发,尽可能的收集网站暴露出的入口。
同时,依靠智能URL去重模块,在过滤掉了大多数伪静态URL之后,仍然确保不遗漏关键入口链接,大幅减少重复任务。
crawlergo 目前支持以下特性:
- 原生浏览器环境,协程池调度任务
- 表单智能填充、自动化提交
- 完整DOM事件收集,自动化触发
- 智能URL去重,去掉大部分的重复请求
- 全面分析收集,包括javascript文件内容、页面注释、robots.txt文件和常见路径Fuzz
- 支持Host绑定,自动添加Referer
目前开放编译好的程序给大家使用,该项目属于商业化产品的一部分,代码暂无法开源。
安装
安装使用之前,请仔细阅读并确认免责声明。
免责声明
本工具仅面向合法授权的企业安全建设行为,请勿对非授权目标进行爬取行为。禁止对本软件实施逆向工程、反编译、试图破译源代码等行为。如果发现上述禁止行为,我们将保留追究您法律责任的权利。如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。在安装并使用本工具前,请您务必审慎阅读、充分理解各条款内容,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。
crawlergo 只依赖chrome运行即可,前往下载新版本的chromium 前往页面下载最新版本的crawlergo解压到任意目录,如果是linux或者macOS系统,请赋予crawlergo可执行权限(+x)。
Go!
假设你的chromium安装在 /tmp/chromium/ ,开启最大20标签页,爬取AWVS靶场:
./crawlergo -c /tmp/chromium/chrome -t 20http://testphp.vulnweb.com/
运行截图
返回结果
当设置输出模式为 json时,返回的结果反序列化之后包含四个部分:
- all_req_list:本次爬取任务过程中发现的所有请求,包含其他域名的任何资源类型。
- req_list:本次爬取任务的同域名结果,经过伪静态去重,不包含静态资源链接。理论上是 all_req_list 的子集
- all_domain_list:发现的所有域名列表。
- sub_domain_list:发现的任务目标的子域名列表。
参数说明
crawlergo 拥有灵活的参数配置,以下是详细的选项说明:
- --chromium-path Path, -c Path chrome的可执行程序路径
- --custom-headers Headers 自定义HTTP头,使用传入json序列化之后的数据,这个是全局定义,将被用于所有请求
- --post-data PostData, -d PostData 提供POST数据,目标使用POST请求方法
- --max-crawled-count Number, -m Number 爬虫最大任务数量,避免因伪静态造成长时间无意义抓取。
- --filter-mode Mode, -f Mode 过滤模式,简单:只过滤静态资源和完全重复的请求。智能:拥有过滤伪静态的能力。严格:更加严格的伪静态过滤规则。
- --output-mode value, -o value 结果输出模式,console:打印当前域名结果。json:打印所有结果的json序列化字符串,可直接被反序列化解析。none:不打印输出。
- --incognito-context, -i 浏览器启动隐身模式
- --max-tab-count Number, -t Number 爬虫同时开启最大标签页,即同时爬取的页面数量。
- --fuzz-path 使用常见路径Fuzz目标,获取更多入口。
- --robots-path 从robots.txt 文件中解析路径,获取更多入口。
- --tab-run-timeout Timeout 单个Tab标签页的最大运行超时。
- --wait-dom-content-loaded-timeout Timeout 爬虫等待页面加载完毕的最大超时。
- --event-trigger-interval Interval 事件自动触发时的间隔时间,一般用于目标网络缓慢,DOM更新冲突时导致的URL漏抓。
- --event-trigger-mode Value 事件自动触发的模式,分为异步和同步,用于DOM更新冲突时导致的URL漏抓。
- --before-exit-delay 单个tab标签页任务结束时,延迟退出关闭chrome的时间,用于等待部分DOM更新和XHR请求的发起捕获。
- --ignore-url-keywords 不想访问的URL关键字,一般用于在携带Cookie访问时排除注销链接。
- --push-to-proxy 拟接收爬虫结果的监听地址,一般为被动扫描器的监听地址。
- --push-pool-max 发送爬虫结果到监听地址时的最大并发数。
- --log-level 打印日志等级,可选 debug, info, warn, error 和 fatal。
0x002 xray
xray
是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:
- 检测速度快。发包速度快; 漏洞检测算法高效。
- 支持范围广。大至 OWASP Top 10 通用漏洞检测,小至各种 CMS 框架 POC,均可以支持。
- 代码质量高。编写代码的人员素质高, 通过 Code Review、单元测试、集成- 测试等多层验证来提高代码可靠性。
- 高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可以- 极大的客制化功能。
- 安全无威胁。xray 定位为一款安全辅助评估工具,而不是攻击工具,内置的所有 payload 和 poc 均为无害化检查。
目前支持的漏洞检测类型包括:
- XSS漏洞检测 (key: xss)
- SQL 注入检测 (key: sqldet)
- 命令/代码注入检测 (key: cmd_injection)
- 目录枚举 (key: dirscan)
- 路径穿越检测 (key: path_traversal)
- XML 实体注入检测 (key: xxe)
- 文件上传检测 (key: upload)
- 弱口令检测 (key: brute_force)
- jsonp 检测 (key: jsonp)
- ssrf 检测 (key: ssrf)
- 基线检查 (key: baseline)
- 任意跳转检测 (key: redirect)
- CRLF 注入 (key: crlf_injection)
- Struts2 系列漏洞检测 (高级版,key: struts)
- Thinkphp系列漏洞检测 (高级版,key: thinkphp)
- POC 框架 (key: phantasm) 其中 POC 框架默认内置 Github 上贡献的 poc,用户也可以根据需要自行构建 poc 并运行。 下载运行 xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用。 下载地址 请下载的时候选择最新的版本下载。
Github: https://github.com/chaitin/xray/releases (国外速度快) 网盘: https://yunpan.360.cn/surl_y3Gu6cugi8u (国内速度快)
0x003 crawlergo_x_XRAY
利用360 0Kee-Team 的 crawlergo动态爬虫结合长亭的XRAY扫描器的被动扫描功能 (其它被动扫描器同理),
介绍
原作者timwhite一直想找一个小巧强大的爬虫配合xray的被动扫描使用,曾经有过自己写爬虫的想法,奈何写一半感觉还没有awvs的爬虫好用
360 0Kee-Teem最近公开了他们自己产品中使用的动态爬虫模块,经过一番摸索,就写了这个脚本
由于该爬虫并未开放代理功能并且有一些从页面抓取的链接不会访问,所以采用的官方推荐的方法,爬取完成后解析输出的json再使用python的request库去逐个访问
大概逻辑为:
爬取和请求的过程使用了多线程和队列使得请求不会阻塞下一个页面的爬取
用法
- 下载xray最新的release, 下载crawlergo最新的release 注意,是下载编译好的文件而不是git clone它的库
- 把launcher.py和targets.txt放在crawlergo.exe同目录下
- 配置好并启动xray被动扫描(脚本默认配置为127.0.0.1:7777)若修改端口请同时修改launcher.py文件中的proxies
配置参数详见XRAY官方文档
- 配置好launcher.py的cmd变量中的crawlergo爬虫配置(主要是chrome路径改为本地路径), 默认为:
./crawlergo -c C:\Program Files (x86)\Google\Chrome\Application\chrome.exe -t 20 -f smart --fuzz-path --output-mode json target
配置参数详见crawlergo官方文档
- 把目标url写进targets.txt,一行一个url image
- 用python3运行launcher.py ( XRAY被动扫描为启动的状态 )
- 生成的sub_domains.txt为爬虫爬到的子域名, crawl_result.txt为爬虫爬到的url
0x004 下载地址
https://github.com/0Kee-Team/crawlergo
https://github.com/chaitin/xray
https://github.com/timwhitez/crawlergo_x_XRAY