漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

  • A+
所属分类:安全工具

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

前言

最近get到了一个爬虫利器crawlergo,于是就忽然想到与被动扫描利器xray和W13scan联动。

No.1

准备

本人系统:mac
工具准备:w13scan、crawlargo、xray、chromium

W13scan 是基于Python3的一款开源的Web漏洞发现工具,它支持主动扫描模式和被动扫描模式,目前可以发现sql注入、xss、jsonp泄露、命令执行等常见漏洞。
https://github.com/w-digital-scanner/w13scan

pip3 install -r requirements.txtcd W13SCAN # 进入源码目录python3 w13scan.py -h

参数详解:

optional arguments:  -h, --help            显示此帮助信息并退出  -v, --version         显示程序的版本号并退出  --debug               显示程序的异常  --level {1,2,3,4,5}   不同级别使用不同的有效负载:0-5(默认为2)Proxy:  被动代理模式选项  -s SERVER_ADDR, --server-addr SERVER_ADDR 服务器addr格式:(ip:端口)Target:  必须提供选项来定义目标  -u URL, --url URL     目标URL(例如:“http://www.site.com/vuln.php?id=1”)  -f URL_FILE, --file URL_FILE 扫描文本文件中给定的多个目标Request:  Network request options  --proxy PROXY         使用代理连接到目标URL,如:[email protected]:8080  --timeout TIMEOUT     超时连接之前等待的超时秒数(默认为30)  --retry RETRY         超时检索时间。Output:  输出  --html                当选择时,输出html文件到输出目录,或者您可以指定  --json JSON           json文件目录是在输出中默认生成的目录,您可以更改路径Optimization:  优化选项  -t THREADS, --threads THREADS                        最大并发网络请求数(默认为31)  --disable DISABLE [DISABLE ...]                        禁用一些插件(例如——禁用xss sqli_error)  --able ABLE [ABLE ...]                        启用一些moudle(例如:启用xss webpack)

由于w13scan本身不支持爬虫功能,所以想到了360 0Kee-Teem公开的使用golang语言开发的crawlargo,crawlergo使用chrome headless模式进行URL动态爬虫,收集包括js文件内容、页面注释、robots.txt文件和常见路径Fuzz,确保不遗漏关键的入口链接。


安装之前需要安装最新版的chromium,下载地址如下:https://download-chromium.appspot.com/

下载后是这样的:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

然后下载crawlargo:https://github.com/0Kee-Team/crawlergo
我是mac下载底下圈起来的:

漏洞扫描之w13scan、xray被动扫描和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:不打印输出。--output-json filepath 将爬虫结果JSON序列化之后写入到json文件。--incognito-context, -i 浏览器启动隐身模式--max-tab-count Number, -t Number 爬虫同时开启最大标签页,即同时爬取的页面数量。--fuzz-path 使用常见路径Fuzz目标,获取更多入口。--robots-path 从 /robots.txt 文件中解析路径,获取更多入口。--request-proxy proxyAddress 支持socks5代理,crawlergo和chrome浏览器的所有网络请求均经过代理发送。--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访问时排除注销链接。用法:-iuk logout -iuk exit--form-values 自定义表单填充的值,按照文本类型设置。支持定义类型:default, mail, code, phone, username, password, qq, id_card, url, date, number,文本类型通过输入框标签的id、name、class、type四个属性值关键字进行识别。如,定义邮箱输入框自动填充A,密码输入框自动填充B,-fv mail=A -fv password=B。其中default代表无法识别文本类型时的默认填充值,目前为Cralwergo。--form-keyword-values 自定义表单填充的值,按照关键字模糊匹配设置。关键字匹配输入框标签的id、name、class、type四个属性值。如,模糊匹配pass关键词填充123456,user关键词填充admin,-fkv user=admin -fkv pass=123456。--push-to-proxy 拟接收爬虫结果的监听地址,一般为被动扫描器的监听地址。--push-pool-max 发送爬虫结果到监听地址时的最大并发数。--log-level 打印日志等级,可选 debug, info, warn, error 和 fatal。

xray就不多说了安装对应版本即可
https://github.com/chaitin/xray/releases

No.2

过程

首先测试爬虫,命令为crawlergo -c YourChromiumPath -t 标签页数 Url

./crawlergo -c chrome-mac 2/Chromium.app/Contents/MacOS/Chromium -t 10 http://testphp.vulnweb.com/

效果如下:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

测试与xray联动:
首先监听:

./xray_darwin_amd64 webscan --listen 127.0.0.1:7777 --html-output vulnerability.html
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

crawlargo开始使用代理爬虫

./crawlergo -c chrome-mac/Chromium.app/Contents/MacOS/Chromium -t 10 --request-proxy http://127.0.0.1:7777 http://testphp.vulnweb.com/

效果如下:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

如果想半自动化一点,比如测试多个url可以参考:https://github.com/timwhitez/crawlergo_x_XRAY

测试与W13scan联动:
首先监听

python3 w13scan.py -s 127.0.0.1 --html
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

与前面爬虫一样的,只是多了个代理

./crawlergo -c chrome-mac/Chromium.app/Contents/MacOS/Chromium -t 10 --request-proxy http://127.0.0.1:7778 http://testphp.vulnweb.com/

效果如下:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

查看输出的html文件,里面有漏洞URL,漏洞类型,漏洞参数,漏洞利用的payload,请求数据包等详细数据。

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

我们也可以利用w8ay师傅的自动化脚本:

import osimport sysfrom urllib.parse import urlparse
import requestsimport jsonimport subprocess
from lib.core.data import KB
root = os.path.dirname(os.path.realpath(__file__))sys.path.append(os.path.join(root, "../"))sys.path.append(os.path.join(root, "../", "W13SCAN"))from api import modulePath, init, FakeReq, FakeResp, HTTPMETHOD, task_push_from_name, start, logger
# 爬虫文件路径Excvpath = "/Users/boyhack/tools/crawlergo/crawlergo_darwin"
# Chrome 路径Chromepath = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

def read_test(): with open("spider_testphp.vulnweb.com.json") as f: datas = f.readlines() for data in datas: item = json.loads(data) url = item["url"] method = item["method"] headers = item["headers"] data = item["data"]
try: if method.lower() == 'post': req = requests.post(url, data=data, headers=headers) http_model = HTTPMETHOD.POST else: req = requests.get(url, headers=headers) http_model = HTTPMETHOD.GET except Exception as e: logger.error("request method:{} url:{} faild,{}".format(method, url, e)) continue
fake_req = FakeReq(req.url, {}, http_model, data) fake_resp = FakeResp(req.status_code, req.content, req.headers) task_push_from_name('loader', fake_req, fake_resp) logger.info("爬虫结束,开始漏洞扫描") start()

def vulscan(target): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/74.0.3945.0 Safari/537.36", "Spider-Name": "Baidu.Inc" } if target == "": return elif "://" not in target: target = "http://" + target try: req = requests.get(target, headers=headers, timeout=60) target = req.url except: return netloc = urlparse(target).netloc logger.info("开始爬虫:{}".format(target)) cmd = [Excvpath, "-c", Chromepath, "--fuzz-path", "--robots-path", "-t", "20", "--custom-headers", json.dumps(headers), "--max-crawled-count", "10086", "-i", "-o", "json", target] rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, error = rsp.communicate() try: result = json.loads(output.decode().split("--[Mission Complete]--")[1]) except IndexError: return if result: all_req_list = result["req_list"] logger.info("获得数据:{}".format(len(all_req_list))) for item in all_req_list: with open("spider_{}.json".format(netloc), "a+") as f: f.write(json.dumps(item) + 'n') url = item["url"] method = item["method"] headers = item["headers"] data = item["data"]
try: if method.lower() == 'post': req = requests.post(url, data=data, headers=headers) http_model = HTTPMETHOD.POST else: req = requests.get(url, headers=headers) http_model = HTTPMETHOD.GET except Exception as e: logger.error("request method:{} url:{} faild,{}".format(method, url, e)) continue
fake_req = FakeReq(req.url, {}, http_model, data) fake_resp = FakeResp(req.status_code, req.content, req.headers) task_push_from_name('loader', fake_req, fake_resp) logger.info("加入扫描目标:{}".format(req.url))
logger.info("爬虫结束,开始漏洞扫描") start() logger.info("漏洞扫描结束") logger.info("发现漏洞:{}".format(KB.output.count()))

def init_w13scan(): root = modulePath() configure = { "debug": False, # debug模式会显示更多信息 "level": 2, "timeout": 30, "retry": 3, "json": "", # 自定义输出json结果路径, "html": True, "threads": 30, # 线程数量, "disable": [], "able": [], "excludes": ["google", "lastpass", '.gov.cn'] # 不扫描的网址 } init(root, configure)

if __name__ == '__main__': target = "http://testphp.vulnweb.com/" init_w13scan() vulscan(target) # read_test()

可以根据自己的需求修改命令以及输出文件路径:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动
漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

效果如下:

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

No.3

参考

https://github.com/w-digital-scanner/w13scan
https://github.com/0Kee-Team/crawlergo
https://github.com/timwhitez/crawlergo_x_XRAY




招聘

安恒雷神众测SRC运营(实习生)
————————
【职责描述】
1.  负责SRC的微博、微信公众号等线上新媒体的运营工作,保持用户活跃度,提高站点访问量;
2.  负责白帽子提交漏洞的漏洞审核、Rank评级、漏洞修复处理等相关沟通工作,促进审核人员与白帽子之间友好协作沟通;
3.  参与策划、组织和落实针对白帽子的线下活动,如沙龙、发布会、技术交流论坛等;
4.  积极参与雷神众测的品牌推广工作,协助技术人员输出优质的技术文章;
5.  积极参与公司媒体、行业内相关媒体及其他市场资源的工作沟通工作。

【任职要求】 
 1.  责任心强,性格活泼,具备良好的人际交往能力;
 2.  对网络安全感兴趣,对行业有基本了解;
 3.  良好的文案写作能力和活动组织协调能力。

 4.  具备美术功底、懂得设计美化等


简历投递至 

[email protected]

设计师(实习生)

————————

【职位描述】
负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。

【职位要求】
1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;
2、有良好的美术功底,审美能力和创意,色彩感强;精通photoshop/illustrator/coreldrew/等设计制作软件;
3、有品牌传播、产品设计或新媒体视觉工作经历;

【关于岗位的其他信息】
企业名称:杭州安恒信息技术股份有限公司
办公地点:杭州市滨江区安恒大厦19楼
学历要求:本科及以上
工作年限:1年及以上,条件优秀者可放宽


简历投递至 

bountyteam@dbappsecurity.com.cn

岗位:红队武器化Golang开发工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;
2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;
3.了解docker,能进行简单的项目部署;
3.熟悉常见web漏洞原理,并能写出对应的利用工具;
4.熟悉TCP/IP协议的基本运作原理;
5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式、消息队列等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。


简历投递至 

bountyteam@dbappsecurity.com.cn

安全招聘
————————

公司:安恒信息
岗位:Web安全 安全研究员
部门:战略支援部
薪资:13-30K
工作年限:1年+
工作地点:杭州(总部)、广州、成都、上海、北京

工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂…

【岗位职责】
1.定期面向部门、全公司技术分享;
2.前沿攻防技术研究、跟踪国内外安全领域的安全动态、漏洞披露并落地沉淀;
3.负责完成部门渗透测试、红蓝对抗业务;
4.负责自动化平台建设
5.负责针对常见WAF产品规则进行测试并落地bypass方案

【岗位要求】
1.至少1年安全领域工作经验;
2.熟悉HTTP协议相关技术
3.拥有大型产品、CMS、厂商漏洞挖掘案例;
4.熟练掌握php、java、asp.net代码审计基础(一种或多种)
5.精通Web Fuzz模糊测试漏洞挖掘技术
6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法
7.有过独立分析漏洞的经验,熟悉各种Web调试技巧
8.熟悉常见编程语言中的至少一种(Asp.net、Python、php、java)

【加分项】
1.具备良好的英语文档阅读能力;
2.曾参加过技术沙龙担任嘉宾进行技术分享;
3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相关资质者;
4.具有大型SRC漏洞提交经验、获得年度表彰、大型CTF夺得名次者;
5.开发过安全相关的开源项目;
6.具备良好的人际沟通、协调能力、分析和解决问题的能力者优先;
7.个人技术博客;
8.在优质社区投稿过文章;


岗位:安全红队武器自动化工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.熟练使用Python、java、c/c++等至少一门语言作为主要开发语言;
2.熟练使用Django、flask 等常用web开发框架、以及熟练使用mysql、mongoDB、redis等数据存储方案;
3:熟悉域安全以及内网横向渗透、常见web等漏洞原理;
4.对安全技术有浓厚的兴趣及热情,有主观研究和学习的动力;
5.具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。


简历投递至 

bountyteam@dbappsecurity.com.cn


漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

专注渗透测试技术

全球最新网络攻击技术

END

漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

本文始发于微信公众号(雷神众测):漏洞扫描之w13scan、xray被动扫描和crawlergo爬虫联动

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: