利用 docker 搭建简单三层渗透靶场

admin 2023年3月11日23:22:16利用 docker 搭建简单三层渗透靶场已关闭评论161 views字数 4125阅读13分45秒阅读模式

本文将利用 docker 的自身功能结合若干开源渗透测试环境,在一台虚拟机中,搭建一套简单的三层渗透测试靶场。部分操作过程可能会稍显繁琐,可维护性也不佳,不足之处希望师傅们能够给出建议,不胜感激。

虚拟机配置

4核CPU

4G内存

60G磁盘存储

系统:Ubuntu 22.04.01桌面版最小化安装

(上述配置可根据自身需要进行修改调整)

1. 安装软件

sudo update
sudo apt install openssh-server git wget vim nano python3 python3-pip docker.io docker-compose gcc g++ ufw -y

2. 拉取 Docker 系统镜像

sudo docker pull ubuntu

3. 利用 ubuntu 镜像创建系统容器,并安装 nginx web 服务器

sudo docker run -itd --net=host --name umiddle ubuntu
sudo docker exec -it umiddle bash

进入 docker 容器 shell 后,安装编译安装 nginx 所需的软件,并下载 nginx 当前最新稳定版源码

```

下载所需软件及环境

apt update
apt install git wget vim nano curl gcc g++ openssl libssl-dev libpcre3 libpcre3-dev zlib make iputils iproute2 net-tools
wget https://nginx.org/download/nginx-1.22.0.tar.gz

解压源码包

tar -zxvf nginx-1.22.0.tar.gz

进入源码目录

cd nginx-1.22.0

添加 nginx 用户

useradd -M -s /sbin/nologin nginx

编译安装

./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
cp /opt/nginx/sbin/nginx /bin/ && cp /opt/nginx/sbin/nginx /usr/bin

安装无误后退出该容器 shell

exit
```

4. 创建 docker 网络

docker network create --driver bridge --subnet 172.22.0.0/24 --gateway 172.22.0.1 --ip-range 172.22.0.0/24 dockernet1
docker network create --driver bridge --subnet 172.33.0.0/24 --gateway 172.33.0.1 --ip-range 172.33.0.0/24 dockernet2

下图中,第一块桥接网卡为安装 docker 时默认的桥接网卡

利用 docker 搭建简单三层渗透靶场

这一步中,也可以创建三块 docker 桥接网卡,在搭建靶机时,分别为第一层靶机分配网络1和网络2的地址,为第二层靶机分配网络2和网络3的地址,为第三层靶机分配网络3的地址即可。

5. 第一层靶机搭建

  1. 创建新的 docker 容器用于安装宝塔面板或根据个人所需部署相应服务,这里的端口映射可根据自己要求进行调整,也可在后续靶场搭建过程中在合适的位置中放置 flag 。

docker run -itd --name ubt -p 8888:8888 ubuntu
2. 为该容器分配网卡及IP地址,并断开与默认桥接网卡的连接

docker network connect --ip 172.22.0.10 dockernet1 ubt
docker network disconnect -f 默认桥接网卡id ubt

3. 进入该容器 shell,并安装相应环境

docker exec -it ubt bash
apt update
apt install vim nano git wget curl gcc g++ make net-tools iproute2 iputils*

4. 上述安装完成后,相关网络信息如下

利用 docker 搭建简单三层渗透靶场
5. 安装宝塔面板,获取脚本后根据提示一步步进行即可

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec

利用 docker 搭建简单三层渗透靶场
6. 安装完成后,若默认配置与 docker 容器现有端口映射配置等存在冲突,可修改 docker 容器配置,或使用 bt 命令,根据提示修改宝塔面板的服务端口

利用 docker 搭建简单三层渗透靶场

查看入口地址进行登录配置(也可以通过 bt 命令,根据提示修改用户名密码及面板地址)

利用 docker 搭建简单三层渗透靶场
7. 浏览器访问宝塔地址(虚拟机 IP+宝塔服务端口+面板入口地址),登录面板后,安装并启动 nginx/apache+mysql+php 环境,也可根据自身需求安装并部署其他服务

利用 docker 搭建简单三层渗透靶场

利用 docker 搭建简单三层渗透靶场
8. 上述环境安装完成后,首先进入“网站”功能,新建站点。在这一步的关键在于配置站点目录及添加数据库

利用 docker 搭建简单三层渗透靶场
9. 站点创建成功后,可使用开源脆弱系统或部分 CMS 搭建脆弱 web 系统。这一步可能会需要自行通过宝塔面板上传站点文件并修改站点目录权限等。

利用 docker 搭建简单三层渗透靶场
10. 进入在第三步安装有 nginx 的 docker 容器中,修改 nginx 服务相关配置

```
# 进入容器内 shell 环境
docker exec -it umiddle bash
# 编辑 nginx 配置文件
vi /opt/nginx/conf/nginx.conf
```

相关配置如下(也可根据自身需求配置多个服务及端口映射和代理转发):

```
worker_processes  1;



    events {
        worker_connections  1024;
    }


    http {
        include       mime.types;
        default_type  application/octet-stream;



        sendfile        on;

        keepalive_timeout  65;

        gzip  on;

        server {
            listen       80;
            server_name  localhost;

            charset utf-8;

            access_log  /var/log/nginx/access.log;

            location / {
                root   html;
                index  index.html index.htm index.php;
                # proxy_pass 后填写宝塔容器所部署 web 服务的地址及端口
                proxy_pass   http://172.22.0.10;
                proxy_redirect off;
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }

            error_page   500 502 503 504 400 403 404  /50x.html;
            location = /50x.html {
                root   html;
            }

        }

    }

```

保存配置后,执行 nginx 命令启动 nginx 服务

  1. 访问虚拟机地址及相应 nginx 监听端口,查看并配置 web 脆弱系统是否正常。若站点搭建完毕且服务访问正常,第一层靶机则基本搭建完成。

    利用 docker 搭建简单三层渗透靶场

6. 第二层靶机搭建

```

拉取 shiro 反序列化漏洞镜像

docker pull vulfocus/shiro-cve_2016_4437

创建并启动容器

docker run -itd --name shirovuln vulfocus/shiro-cve_2016_4437

为该容器分配两块网卡及IP地址,并断开与默认桥接网卡的连接

docker network connect --ip 172.22.0.20 dockernet1 shirovuln
docker network connect --ip 172.33.0.20 dockernet2 shirovuln
docker network disconnect 默认桥接网卡id shirovuln

安装部分所需工具及软件

docker exec -it shirovuln bash
apt update
apt install vim nano git wget curl net-tools iproute2 iputils*
```

完整安装完成后,具体网络配置如下

利用 docker 搭建简单三层渗透靶场

7. 第三层靶机搭建

```

拉取 thinkphp 任意代码执行漏洞镜像

docker pull vulfocus/thinkphp-cnvd_2018_24942

创建并启动容器

docker run -itd --name thinkphpvuln vulfocus/thinkphp-cnvd_2018_24942

为该容器分配网卡及IP地址,并断开与默认桥接网卡的连接

docker network connect --ip 172.33.0.30 dockernet2 thinkphpvuln
docker network disconnect 默认桥接网卡id thinkphpvuln

安装部分所需工具及软件

docker exec -it thinkphpvuln bash
apt update
apt install vim nano git wget curl net-tools iproute2
```

安装完成后,具体网络配置如下:

利用 docker 搭建简单三层渗透靶场

8. 配置检查

若安装配置无误,正常情况下应该第一层靶机仅与第二层靶机互通,第二层靶机分别于第一层和第三层靶机互通,第三层靶机仅与第二层靶机互通

利用 docker 搭建简单三层渗透靶场

检查配置无误后,执行以下命令,修改 docker 容器为自启

```

容器自启

docker update umiddle --restart=always
docker update ubt --restart=always
docker update shirovuln --restart=always
docker update thinkphpvuln --restart=always
```

最后进入宝塔所在容器中,将面板服务关闭即可(或直接执行 docker exec -it ubt bt stop

利用 docker 搭建简单三层渗透靶场

配置完成后创建当前虚拟机快照即完成此次靶场的全部配置,当然最好是在给虚拟机创建快照之前,给每一台 docker 容器分别创建快照。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月11日23:22:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用 docker 搭建简单三层渗透靶场http://cn-sec.com/archives/1599464.html