docker compose一键搭建安全测试靶场
1.Docker快速安装
1.1.ubuntu系统
步骤一: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
步骤二: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
步骤三: 写入软件源信息
sudo echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" >> /etc/apt/sources.list.d/docker-ce.list
步骤四: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
步骤五: 配置Docker加速源
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
EOF
步骤六: 启动Docker
systemctl start docker
systemctl enable docker
1.2.centos系统
步骤一: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
步骤二: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
步骤三:
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
步骤四: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
步骤五: 配置Docker加速源
cat >> /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
EOF
步骤六: 开启Docker服务
sudo systemctl start docker
sudo systemctl enable docker
2.靶场compose文件
2.1.XSS靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'c0ny1/xss-challenge-tour:latest'
# 容器运行名称
container_name: xss-challenge-tour
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40001:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
2.2.上传靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'c0ny1/upload-labs:latest'
# 容器运行名称
container_name: upload-labs
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40002:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
2.3.SQL注入靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'c0ny1/sqli-labs:0.1'
# 容器运行名称
container_name: sqli-labs
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40003:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
2.4.DVWA综合靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'area39/dvwa-v1.10:latest'
# 容器运行名称
container_name: dvwa
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40004:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
2.5.Pikachu综合靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'area39/pikachu:latest'
# 容器运行名称
container_name: pikachu
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40005:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
2.6.Webug综合靶场
- 需要把此文件命名为compose.yml
version: '3.9'
services:
app:
# 使用的镜像
image: 'area39/webug:latest'
# 容器运行名称
container_name: webug
# 重启策略
restart: unless-stopped
# 对外映射端口
ports:
- '40006:80'
# 使用的网络,使用默认Docker网口
network_mode: bridge
3.启动实验环境
3.1.系统版本
root@docker:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
root@docker:~#
root@docker:~# docker-compose -v
docker-compose version 1.29.2, build unknown
root@docker:~#
3.2.启动靶场
- 靶场文件
root@docker:~# tree
.
└── sec-labs
├── dvwa
│ └── compose.yml
├── pikachu
│ └── compose.yml
├── sqli-labs
│ └── compose.yml
├── upload-labs
│ └── compose.yml
├── webug
│ └── compose.yml
└── xss-challenge-tour
└── compose.yml
7 directories, 6 files
root@docker:~#
- 靶场启动
compose文件启动的方式:
docker compose up -d # 以后台启动
docker compose ps # 查看服务状态
docker compose stop # 停止靶场
docker compose down -v # 停止并,删除靶场
root@docker:~# cd sec-labs/sqli-labs/
root@docker:~/sec-labs/sqli-labs# docker compose up -d
[+] Running 1/1
✔ Container sqli-labs Started
root@docker:~/sec-labs/sqli-labs# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
sqli-labs c0ny1/sqli-labs:0.1 "/run.sh" app 5 minutes ago Up 5 minutes 3306/tcp, 0.0.0.0:40003->80/tcp, :::40003->80/tcp
root@docker:~/sec-labs/sqli-labs#
- 查看靶场是否能够访问
root@docker:~/sec-labs/sqli-labs# curl -I http://127.0.0.1:40003/
HTTP/1.1 200 OK
Date: Fri, 08 Mar 2024 08:19:09 GMT
Server: Apache/2.4.7 (Ubuntu)
Last-Modified: Tue, 15 May 2018 12:01:03 GMT
ETag: "1efd-56c3d5b3bbdc0"
Accept-Ranges: bytes
Content-Length: 7933
Vary: Accept-Encoding
Content-Type: text/html
root@docker:~/sec-labs/sqli-labs#