碎遮SZhe_Scan Web漏洞扫描器,基于python Flask框架,对输入的域名/IP进行全面的信息搜集,漏洞扫描,可自主添加POC
该项目是三个大二学渣在疫情期间做的,虽然市面上已经有很多优秀的扫描系统,但我们还是想以该项目作为在校期间对自己的一个挑战。懒癌晚期啊,前几天终于算是完成了1.0版本,扫描系统还不是很完美,我们会长期维护下去(先熬过最近的考试),因为现在是用python写的,后面有空了用Go重写项目,做的不好的地方请各位大师傅多多包涵,求轻喷 ?
主要特点:
- 对输入的域名或IP进行自动化信息搜集与漏洞扫描,目前支持自主添加GET型POC进行漏洞检测,扫描结果可视化显示在web界面上
- 项目前端使用html+css+javascript进行漏洞扫描系统的可视化,后端基于python-flask框架,数据库使用到了MySQL和Redis数据库,持久化存储使用MySQL数据库,存储如用户账号密码,漏洞列表等信息,Redis数据库用来作为消息队列和攻击载荷payload等会大量重复使用到的数据的存储。
- 为了方便使用者安装,已将该项目打包成容器,使用docker-compose文件进行管理,实现快速部署。
项目的架构图:
工具安装:
安装分为了源码安装和Docker安装两种方式,两者择其一即可:
- Python版本:3.X,数据库:MySQL,Redis
- Git bash界面输入 git clone https://github.com/Cl0udG0d/SZhe_Scan 进行下载(或直接下载源代码)
- 安装python类库: pip3 install -r requirements.txt
- 修改config.py数据库账号密码为本地账号密码,将config.py 中 HOSTNAME=’mysql’ 修改为 HOSTNAME=’127.0.0.1’,HOST = ‘redis’ 修改为 HOST = ‘127.0.0.1’
- 在phpmyadmin界面导入init.sql.zip文件,自动初始化数据库和表,以及初始用户
- 运行python3 index.py,浏览器输入127.0.0.1:5000访问漏洞扫描系统
- 默认登录邮箱为:springbird@qq.com,密码为:springbird,登录之后请第一时间修改密码:D
- 在服务器或本机上安装docker,网上有很多安装文章,这里不再赘述
- (建议使用阿里云等docker加速,建议
- 依次输入以下三条命令:
git clone https://github.com/Cl0udG0d/SZhe_Scan
cd SZhe_Scan
docker-compose up -d - 运行结束后访问 http://ip:5000 ,默认账户登录邮箱为:springbird@qq.com,默认密码为:springbird,登录之后请第一时间修改密码:)
- 环境搭建好了之后,我们访问:http://127.0.0.1:5000
- 如果是搭建在服务器上,即访问:http://服务器ip:5000
- 默认登录邮箱为:springbird@qq.com,默认密码为:springbird
界面图片
功能介绍:
信息搜集:
- Web指纹识别
- 目标状态码
- 标题
- 响应头
- 收录时间
- 端口扫描
- WebLogic漏洞检测 ,整合WeblogicScan项目中的WebLogic模块:https://github.com/rabbitmask/WeblogicScan
- CMS漏洞检测,整合AngelSword项目中的几百个POC:https://github.com/Lucifer1993/AngelSword
- 敏感目录/文件扫描
域名domain
- 子域名收集(主动+被动)
- Whois信息
- 域名历史解析记录
- 域名备案信息
- 旁站查询
- 域名对应地址
IP
- IP历史解析记录
- IP旁站查询
- C段信息扫描
- IP地址
页面Url深度爬取
多线程+广度优先搜索+深度爬取(默认两层)
漏洞扫描 BugScan
- SQL注入漏洞检测
- XSS漏洞检测
- 命令执行漏洞检测
- 文件包含漏洞检测
- 自添加POC漏洞检测
项目里面用到的一些技术:
- 在漏洞扫描过程中对于404,无响应界面,防火墙界面的检测和判断。在进行漏洞检测的过程中,往往会遇到防火墙,回显给页面的是一个网页状态码为200的拦截页面,也可能是输入错误网址后,返回了开发者编写的网页状态码为200的404界面,如果简单通过网站返回的状态码来判断是否存在漏洞,就会产生很多的漏洞误报和错报,储存大量垃圾信息占用服务器的资源。SZhe_Scan碎遮漏洞扫描系统使用两种方式判断访问的页面是否为404页面:1,从状态码是否为404判断,这是最简单的一种方式,能够过滤大部分不正确的漏洞扫描结果;2,在域名开始扫描时,先获取域名的404页面,每一次网页状态码为200的时候,使用余弦相似性算法判断页面和404界面相似,相似度高即为404界面,过滤剩下一部分请求中的误报错报信息,大大提高了漏洞扫描系统的扫描精度。
- 同时因为按照源码安装该项目的步骤较复杂,因为需要使用者先安装python3,接着需要安装各种依赖和库文件,然后需要安装MySQL和Redis数据库,接着还需要配置相关信息,或许最后会因为数据库版本的不同,某个依赖的缺失而导致程序运行不起来,所以将项目Docker化势在必行。在项目开发的过程中,项目组成员将安装,配置等步骤编写在Dockerfile中自动化完成。使用者只需要下载源码后使用几行命令就可以实例化一个docker对象,所需要的仅仅是安装了docker的服务器,项目代码,以及比较流畅的网络而已。对开发者来说实现一次构建,到处部署,对系统使用者来说不再像之前那样有繁复的安装过程,极大的减少项目部署的时间成本和人力成本。
致谢:
参考借鉴并整合
(白嫖)了github上很多优秀的开源扫描模块,包括但不限于:
https://github.com/AttackandDefenceSecurityLab/AD_WebScanner
https://github.com/b4ubles/python3-Wappalyzer
https://github.com/rabbitmask/WeblogicScan
https://github.com/Lucifer1993/AngelSword
在此对这些前辈师傅们表示由衷的感谢编写前后端的过程中遇到了不少困难,感谢队里两个天使小姐姐共同完成了扫描器的编写和可视化
项目地址:
https://github.com/Cl0udG0d/SZhe_Scan
说明
本项目仅进行信息搜集,漏洞探测工作,无漏洞利用、攻击性行为,开发初衷为仅为方便安全人员对授权项目完成测试工作和学习交流使用