请注意,本文最后修改于2020 年 12 月 30 日 22:13:54其中某些信息可能已经过时。
前言
之前用的cra联动xray进行漏扫,因为没有一个及时的推送手段经常会忘记了这个事,今天部署联动server酱的时候发现前人的项目里有些地方需要改动一下才能继续使用。
感谢
以下修改均基于现有GitHub项目:
正文
首先我们先来看一下这个项目的整个逻辑,根据里面的使用说明可以看到当配置好该配置的东西后,运行项目中提供的start.sh
便可以开始运行扫描
chmod +x crawlergo
chmod +x xray_linux_amd64
nohup python3 -u serverjiang.py > logs/serverjiang.log 2>&1 &
nohup ./xray_linux_amd64 webscan --listen 127.0.0.1:7777 --webhook-output http://127.0.0.1:2333/webhook > logs/xray.log 2>&1 &
nohup python3 -u launcher.py > logs/launcher.log 2>&1 &
其中重要的就是后面三条nohup
,这里出问题的便是第一条serverjiang.py
中出现了运行的问题,进入这个文件看看
整个代码大概的逻辑可以参照xray官方文档中对webhook
和自动告警
的说明,于是也在这部分发现了问题所在,我们可以看到项目中的代码都与官方文档中基本一致,而文档中对xray扫描到漏洞后post过来的json数据会进行一个if判断
,具体片段如下
可以结合说明来理解这部分,因为xray在漏洞扫描时的信息格式有两种,分别为漏洞信息
和web统计信息
,而统计信息是我们不需要知道的信息,所以这里写了一个判断,当webhook发送过来的json数据中含有vuln_class
这个标识的时候才会进入推送部分的代码,而这个标识我们可以看到官方代码中给出的实例,大致上就是当有这个标识时便是漏洞信息,反之则是统计信息。
接下来回到目前的代码,为什么现在会出现问题了呢,可以看到文档中webhook说明部分,现在的xray通过webhook发送的json中,已经没有了这个vuln_class
标识,所以在逻辑上我们这个代码没有进入到推送部分,于是修改判断部分,通过判断数据中是否存在detail
来判断webhook发送的是不是漏洞信息
if "detail" not in vuln:
print("no match")
return "ok"
print("match")
测试已经可以命中漏洞信息,接下来往下看,因为漏洞信息的json结构已经和项目发布时有出入,所以后面的format
部分也要进行相应修改
.format(url=vuln["target"]["url"], plugin=vuln["plugin"],
vuln_class=vuln["vuln_class"] or "Default",
create_time=str(datetime.datetime.fromtimestamp(vuln["create_time"] / 1000)))
现在就能对漏洞信息进行正常的推送了
本文作者:Losir 本文链接:Xray联动Server酱的修修补补 - https://ionssource.cn/archives/62/ 版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Losir 所有,未经允许不得转载!