VulCloud 是一个希望为 Vulhub 漏洞镜像提供友好的 Web-UI 可视化操作界面的 Web 应用。(主要是为了学习而造的轮子)整体使用 Flask 框架,通过调用 Docker API 提供镜像管理、容器部署、 Web-Console 容器操作以及多用户等功能。
希望能够提供一个方便快捷的 Web 应用,用于漏洞环境的管理和快速启动。
- 便捷的可视化操作界面
- 定时漏洞容器销毁(已完成)
- Web-Console 一键进入容器
- 镜像列表、容器列表直观呈现
镜像、容器、宿主机资源可视化
镜像列表查看,镜像模板添加、部署、删除功能
容器名称、镜像ID、端口映射选择、启动命令、定时销毁以及其他功能
容器列表查看、容器日志操作、容器Console操作、容器元数据查看
Web界面一键进入容器内部
容器元数据查看
- peewee
- pymysql
- flask
- flask-script
- flask-wtf
- flask-login
- flask-sockets
- docker
- gevent
Docker 安装及加速推荐Daocloud
http://get.daocloud.io/#install-docker
pip3 install -r requirements.txt
- 编辑
config.py
, 修改SECRET_KEY及MySQL数据库相关参数
SECRET_KEY = os.environ.get('SECRET_KEY') or 'your-secret'
DB_HOST = '127.0.0.1'
DB_USER = 'foobar'
DB_PASSWD = 'foobar'
DB_DATABASE = 'foobar'
- 编辑log-app.conf,修改日志路径
args=('/path/to/log/flask-rest-sample.log','a','utf8')
-
将model.py复制到项目根目录下
-
自动建表 直接运行
python3 models.py
-
插入管理员用户(默认admin/admin)
INSERT INTO `user` (`id`, `username`, `password`, `fullname`, `email`, `phone`, `level`, `status`) VALUES (NULL, 'admin', 'pbkdf2:sha256:50000$29NRBqxe$be7ebc2e87a35eae61674ac9b386a7e924095b78b1d7a61d1be2225044303f0a', 'admin', '[email protected]', '18612341234', '1', '1');
python3 manage.py
&
(gunicorn 部署)
gunicorn -k flask_sockets.worker --workers=4 --bind=0.0.0.0:5000 manage:app
镜像导入主要由两部分构成:
- 编译、构建或者拉取 Vulhub 或自己新建的镜像到宿主机。
- 在宿主机上使用 docker images 查看对应镜像的ID
- 访问 Vulhub-UI ——> 镜像仓库 ——> 镜像查询 ——> 添加镜像,在对应的弹框中填写对应的镜像信息
- 这样,就完成了 Vulhub-UI 的镜像初始化,其他使用者就可以快速的在 Web 应用中选择需要启动的漏洞环境
- 访问 Vulhub-UI ——> 镜像仓库 ——> 镜像部署,对照填写部署信息,注意镜像ID是必填项,可以直接在 “镜像ID” 中填写,也可以通过右侧 “镜像选择” 进行选择
- 点击 “添加映射端口” 可以添加端口到宿主机的映射
- 高级设置根据使用者的需求自行设置,注意定时销毁功能暂时未完成
- 容器提供添加及删除服务,注意,本项目部署使用自动Remove,容器部署后可刷新查看同期状态,未部署成功或者容器停止均会使容器被完全删除
- logs 选项可以查看容器部署后日志信息
- console 选项可以直接进入容器内部执行命令行,注意,vim等操作会导致 console 断开
- inspect 选项提供完整美观的容器元数据
- kssandyy (https://github.com/kssandyy )
- phantom0301 (https://github.com/phantom0301 )
- 本项目基本框架参考 flask-adminlte-handler 项目
- 本项目部分UI参考 Portainer 项目
- 本项目 Web-console 功能参考 Web-terminal-docker
直接issue提起来