前言
公司需要每个人手动搭建一套自己的靶机。笔者这里选择修改公开的cms,在docker上搭建大小不同的多个漏洞。
Mac安装docker
访问该https://download.docker.com/mac/stable/Docker.dmg
地址下载安装即可。
配置加速器
访问https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
该地址获取镜像加速器地址。
cat ~/.docker/daemon.json
在该配置文件添加registry-mirrors
"registry-mirrors":["https://nyurfnh3.mirror.aliyuncs.com/"]
重启docker即可使用。
docker 常用命令
因为环境搭建,这里只把我本次用到的docker命令贴在这。
docker pull centos:7 从 docker 镜像仓库获取镜像
docker images 查看创建的镜像
-a 所以镜像,包括未运行的
docker run -it IMAGES ID /bin/bash 使用系统镜像来运行容器
-it 以交互模式运行
docker commit CONTAINER ID docker-centos 将容器打包成镜像
docker exec -it CONTAINER ID bash 进入容器
docker ps 列出容器
-a 全部容器,包括未运行的
docker stop $(docker ps -a -q) 停止所有容器
docker rm $(docker ps -a -q) 删除所有容器
docker rmi -f REPOSITORY:TAG 删除本地一个镜像
REPOSITORY:TAG 镜像名和标识
-f 强制删除
docker run -itd -p 80:80 --privileged -e "container=docker" REPOSITORY /usr/sbin/init 启动容器,解决centos7容器无法使用systemctl命令的问题
--privileged 可以获取一个root权限
-d 放在后台
-p 指定端口映射,宿主端口:容器端口
-e "container=docker" 设定环境变量
搭建漏洞环境
使用centos 7的基础镜像,手动安装java、wget、nmap等命令。自己搭建靶机。
yum -y install wget git tar zip 安装必备命令
yum -y install java-1.8.0-openjdk 安装java 1.8
安装Lnmp集成环境
wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz
下载lnmp集成环境,解压后运行install.sh文件即可
注意默认安装的php是5.3.38版本(个别cms不支持该版本)
网站默认路径在/home/wwwroot/default/目录下
默认安装的php权限为www权限
cat /usr/local/php/etc/php-fpm.conf
查看该文件可看到
listen.owner = www
listen.group = www
部署cms漏洞
笔者先在windows上手动调试了cms漏洞,然后将其打包。使用wget命令可下载到docker。
删除install.lock.php文件可重新安装。
修改默认路径
vim usr/local/nginx/conf/nginx.conf
systemctl stop nginx.service 停止nginx
systemctl start nginx.service 启动nginx
坑点:
如果出现一下错误
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
解决办法:将Nginx进程手动结束掉
netstat -tunlp 查看端口、进程号
kill -9 PID 结束进程
搭建的cms无法执行系统命令
是因为php.ini配置文件中disable_function函数的作用
vim /usr/local/php/etc/php.ini
编辑该文件的注释disable_function
systemctl restart php-fpm
重启php
部署Apache-Tomcat漏洞
在安装java 1.8 环境后。笔者直接copy了之前在windows上搭建的Apache-Tomcat 7.0.70漏洞集成环境。包含axis2、manager 弱口令、shiro框架、fastjson反序列化漏洞等等。
部署tomcat后,运行apache-tomcat/bin/startup.sh即可。
但是当退出容器后,tomcat就不再运行。
编写run.sh并添加进开机自启项
run.sh
#!/bin/bash
systemctl start php-fpm
systemctl start nginx.service
systemctl start mysql.service
sh /opt/apache-tomcat7.0/bin/startup.sh
添加开机自启项
vim /etc/rc.d/rc.local
并启用rc-local服务
设置权限
chmod +x /etc/rc.d/rc.local
chmod +x /etc/rc.local
启用rc-local服务
systemctl start rc-local.service
systemctl status rc-local.service
这样就设置好了自启动tomcat。
将该容器创建成镜像即可。
docker同时启动nginx、tomcat服务。
docker run -itd -p 80:80 -p 8080:8080 --privileged -e "container=docker" REPOSITORY /usr/sbin/init
设置用户权限
在默认安装的lnmp环境中默认禁止www登录。
修改为可登录
usermod -s /bin/bash www
并为www用户设置密码
passwd www
且将opt目录赋予www权限
chown -R www:www /opt