停止更新,后续请见新项目,逻辑处理更完善,功能更强:https://github.com/leesinz/Athena
88
88
88
,adPPYba, 8b,dPPYba, 88 88 ,adPPYba, 88,dPPYba,
a8" "" 88P' "Y8 88 88 I8[ "" 88P' "8a
8b 88 88 88 `"Y8ba, 88 88
"8a, ,aa 88 "8a, ,a88 aa ]8I 88 88
`"Ybbd8"' 88 `"YbbdP'Y8 `"YbbdP"' 88 88
监控多个漏洞平台每日更新,将数据存储到本地数据库,并通过邮件进行推送。
- Exploit-db
- Vulhub
- Github
- Seebug
- Metasploit
- 0day.today(V2.0新增)
- PacketStorm(V2.0新增)
- Nuclei(V3.0新增)
- Afrog(V3.0新增)
- POC(V3.0新增)
工具只能在linux上运行,建议为海外VPS,防止出现github等连接不通的情况。
- Go version 1.20 或以上版本.
Github
git clone https://github.com/leesinz/crush.git
cd crush
go build
./crush OR go run crush.go
database:
db_port: 3306
db_username: "root"
db_password: ""
name: ""
#If downloadPOC is set to false, the poc_dir parameter in GitHub, ExploitDB, and PacketStorm does not need to be configured
poc:
#whether to download poc
downloadPOC: false
github:
github_token: ghp_xxx
#dir for GitHub PoCs
poc_dir: "/root/vul_info/poc/github/"
#github blacklist users
blacklist:
- xxx
- aaa
exploitdb:
#dir for exploit-db PoCs
poc_dir: "/root/vul_info/poc/exploitdb/"
packetstorm:
#dir for packetstorm PoCs
poc_dir: "/root/vul_info/poc/packetstorm/"
email:
smtp_server: smtp.163.com
smtp_port: 25
username: test@163.com
#authentication code
password: xxx
from: test@163.com
to:
- test1@163.com
- test2@163.com
sudo apt-get update
sudo apt-get install mysql-server
sudo mysql_secure_installation
设置密码并创建数据库,将配置信息同步到config.yaml。
如果遇到
Error connecting mysql database:%!(EXTRA *mysql.MySQLError=Error 1698 (28000): Access denied for user 'root'@'localhost', string=)
重置密码即可:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpasswd';
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
显示版本号即为安装成功,如下:
root@iZt4ndirp1045jgp7cqswkZ:~# google-chrome -version
Google Chrome 121.0.6167.139
- go环境
- mysql环境
- config.yaml配置
- google-chrome配置
配置完成后即可开始使用。
初次使用时,先使用 init 参数,进行数据库创建,历史信息爬取等操作。
./crush init
注意配置config.yaml中的downloadPOC参数,如果设为false,不会下载poc文件,如果设为true,则需要配置config.yaml中github,exploit-db和packetstorm下的poc_dir参数,会将更新的poc文件存档到对应目录。
在完成初始化后,后续使用monitor参数监控更新即可,会通过邮件将更新内容进行推送。
./crush monitor
crontab请自行配置,代码中未设置定时任务或循环等。
例如:
0 9 * * * cd [crush_path] && /usr/local/go/bin/go run crush.go monitor
会在每天9点推送前一天的更新内容。
在V3.0版本中不再爬取历史数据,如果需要历史数据,可以直接通过.sql文件(存放在sql文件夹下)将历史数据导入数据库。
exploit_db.sql,seebug.sql为全量历史数据,github.sql为2018至今的CVE数据,每个CVE最多五条。
以exploit-db为例,命令如下:
mysql -u username -p database_name < exploit_db.sql
爬取逻辑分为3种,下面依次介绍。
在V2.0的基础上新增了三个漏洞源:nuclei,POC和afrog。
github监控到的CVE漏洞,会展示CVE编号,poc地址,漏洞描述以及漏洞评分,其他源仅仅展示漏洞名称和CVE编号,如需poc地址信息,可前往对应漏洞平台或者去data目录下的jsonlog中查找。
包含了edb官网存储的所有属性值:
存储了CVE编号,nvd官网的漏洞描述,CVSS2,CVSS3,CNA评分,更新时间以及poc地址:
存储了官网ID,提交时间,漏洞严重程度,漏洞名称,CVE号以及是否有POC:
存储了官网ID,漏洞名称,CVE号,POC地址等信息:
存储了官网ID,名称,CVE号,POC地址以及漏洞描述等等:
日志文件统一存放在data目录下:
update_info.log存放对应漏洞源中每日更新情况:
old_info.log中存放上次运行时,github仓库中的文件信息:
jsonlog目录下存放指定日期更新的所有poc信息:
updateinfo目录下存放邮件内容(html格式):
开启downloadPOC之后,poc存档结构如下:
exploit-db和packetstorm目录以漏洞ID命名,github监控到的漏洞以CVE编号命名,如果同一漏洞有多个poc,则以作者名作为子文件夹名称。
- 2024.02.05 V1.0 初始版本
- 2024.03.06 V2.0 新增0day.today和packetstorm漏洞源
- 2024.03.29 V3.0
- 新增afrog,POC,nuclei漏洞源
- 优化爬取方式,msf,vulhub,afrog,nuclei,POC漏洞源,从原来的git clone+git pull正则匹配的方式,改为使用github api进行contents遍历匹配,不需要将仓库存到本地,减轻存储压力
- 添加了downloadPOC开关,可在config.yaml中配置,如果设为true,则需要配置config.yaml中github,exploit-db和packetstorm下的poc_dir参数,会将更新的poc文件存档到对应目录
- 新增jsonlog日志文件,在data/jsonlog目录下,会以json格式记录更新的漏洞信息,包括漏洞名称,CVE编号,poc地址,漏洞来源等信息
感谢以下优秀的项目:
本工具仅能在取得足够合法授权的企业安全建设中使用,在使用本工具过程中,您应确保自己所有行为符合当地的法律法规。 如您在使用本工具的过程中存在任何非法行为,您将自行承担所有后果,本工具所有开发者和所有贡献者不承担任何法律及连带责任。 除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。 您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。