0x00.起因
乌云知识库已经挂了3年有余了,不过上面的技术贴一直很喜欢,于是想复活之
之前在网上找到了hanc00l的虚拟机离线复活版。很多其他项目只能离线文字,图片都是在线加载,不符合我的需求,只有该版本超赞,项目主页:https://github.com/hanc00l/wooyun_public。
但是将虚拟机下载来,想远程部署在CentOS7的服务上时,由于纯命令行执行,所以在安装VMware时遇到了很大的困难,并且用部署虚拟机的方式在服务器上复活,有点过于沉重,于是想到了Docker的轻量级容器,百度了一下,貌似还没有人做,于是在hanc00l的基础上,封装出一个docker image的轻量级实现,以慰偏执。
0x01.动工
1.1.初步摸底
下载来hanc00l提供的虚拟机镜像,开启并运行之
虚拟机1:在2016年6月底爬的wooyun全部漏洞库和知识库内容,总共30G(压缩后约11G),网盘地址为:http://pan.baidu.com/s/1o7IEaAQ提取密码:d4cq
按照教程,开始flask,访问之
作者同时全量(文字+图片)的复活了【漏洞库】和【知识库】,但我个人对漏洞库并不太感冒,所以此次封装的也仅仅是【知识库】,有兴趣的同学可以继续复活【漏洞库】。
1.2.大致过程
说句实话,在整个“移植复活”过程中没有遇到太大的坑,这令我这个docker小白十分惊讶,但具体步骤与贴图就省了了,直接按照执行思路给出参考文章,文末会给出做好的docker image供大家下载使用:
1.2.0、基本思路
hanc00l原版虚拟机上安装CentOS的docker->在CentOS Docker的基础上安装python Flask与mongodb环->剔除不在意的【漏洞库】数据,将【知识库】数据移植到Docker内->开启Docker内服务,并根据只有【知识库】的特性,对Flask页面工程做简单修改->将完成的【知识库】打包成新的image
1.2.1、基础设施:安装纯净的CentOS docker
Docker中使用CentOS7镜像:https://blog.csdn.net/u012767761/article/details/78107870
1.3、安装flask、mongodb基础环境
Centos7下yum安装mongodb:https://www.cnblogs.com/benjamin77/p/8465394.html
centos7安装pip:https://www.cnblogs.com/cdw0724/p/10898674.html
flask安装:pip install flask
gunicorn安装:pip install gunicorn
二者啥关系,自己去查
1.4、数据迁移
1.4.1 文件迁移
由于【漏洞库】的数据量很大,而且我也不感兴趣,索性就都删了,只留下了【知识库】,直接复制文件数据到docker的文件系统,位置在/wooyun_public。
docker cp命令-容器和宿主机之间的文件复制:https://blog.csdn.net/qq_31880107/article/details/86623307
1.4.2 数据库迁移
同理,将数据库中的【漏洞库】内容删除后,对数据库进行迁移
MongoDB 数据库创建删除、表(集合)创建删除、数据增删改查:https://blog.csdn.net/cckevincyh/article/details/78702674
MongoDB 备份(mongodump)与恢复(mongorestore):https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html
1.5、运行服务
进入docker的交互shell
sudo docker exec -it 容器ID /bin/bash
运行数据库服务:
mongod -f /etc/mongod.conf
运行web服务:
cd /wooyun_public
gunicorn -w 50 -b 0.0.0.0:5000 app:app --reload -t 500 -D --access-logfile gunicorn.log
netstat -antp看端口是否开启
1.6、生成自己的docker image
docker--build自己的image:https://www.cnblogs.com/laonicc/p/11143683.html
0x02.修修补补
由于将【漏洞库】删除了很多,页面必须也根据进行修改,这里涉及修改flask页面,就不赘述了,放个最终效果图(v1.0版本)
0x03.Image下载
由于经验不足,没有用Dockerfile制作镜像,体积还是很大的。v0.8版就是完成了从hanc00l虚拟机到docker的移植,功能全部正常,但是页面没有修改。v1.0是如上图对界面进行了修改。
下载镜像后,利用如下命令即可使用镜像
sudo docker load < wooyun_drops_in_Docker_v0.8.tar
建立容器
sudo docker run -p 8088:5000 -d --privileged=true wooyun_drops:v0.8 /usr/sbin/init
访问服务器的8088端口即可。
wooyun_drops_in_Docker_v0.8.tar:
链接: https://pan.baidu.com/s/12UT84OfqnQGF9YybsypVsg 提取码: nh9b
wooyun_drops_in_Docker_v1.0.tar:
稍后放出。