使用docker快速搭建滲透測試靶機環境
安裝docker
Docker 支持以下的 64 位 CentOS 版本:
CentOS 7
CentOS 8
更高版本…
這裏我使用的是CentOS-7-x86_64-Everything-1804.iso的鏡像。
卸載舊版本
較舊的Docker版本稱爲docker或docker-engine。如果已安裝這些程序,請卸載它們以及相關的依賴項。
$ sudo yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
安裝 Docker Engine-Community
使用 Docker 倉庫進行安裝
在新主機上首次安裝 Docker Engine-Community之前,需要設置Docker倉庫。之後,您可以從倉庫安裝和更新Docker。
設置倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,並且 device mapper 存儲驅動程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用以下命令來設置穩定的倉庫。
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝 Docker Engine-Community
$ sudo yum install docker-ce docker-ce-cli containerd.io
啓動 Docker。
$ sudo systemctl start docker
Docker加速器
由於Vulhub所有的資源均來自於Dockerhub/Github/軟件官網,而上述站點服務器在國內訪問可能存在速度慢、丟包率高等問題,導致我們在啓動Vulhub漏洞環境的時候太卡,影響正常體驗。
所以,我們首先推薦使用國外VPS進行漏洞環境的搭建,在這種情況下,平均啓動一個環境只需要30秒。
如果實在沒有條件購買國外VPS,也可以Docker加速器對Dockerhub進行加速(當然只能加速Dockerhub)。
Linux[root@localhost ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker version >= 1.12
{“registry-mirrors”: [“http://f1361db2.m.daocloud.io”]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
[root@localhost ~]# sudo systemctl restart docker
該腳本可以將 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。適用於 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有細微不同。
安裝sqli-labs
docker pull acgpiano/sqli-labs
docker run -dt --name sqli-lab -p [PORT]:80 acgpiano/sqli-labs:latest
安裝upload-labs
docker pull c0ny1/upload-labs
docker run -d -p [PORT]:80 c0ny1/upload-labs:latest
該環境默認沒有upload文件夾,需要進入容器手動創建
使用docker ps
命令列出所有在運行的容器信息:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5561991f823 c0ny1/upload-labs:latest "apache2-foreground" 7 minutes ago Up 7 minutes 0.0.0.0:82->80/tcp inspiring_leakey
e34db90d9d05 acgpiano/sqli-labs:latest "/run.sh" 31 minutes ago Up 31 minutes 3306/tcp, 0.0.0.0:81->80/tcp sqli-lab
輸出詳情介紹:
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的鏡像。
- COMMAND: 啓動容器時運行的命令。
- CREATED: 容器的創建時間。
- STATUS: 容器狀態。
狀態有7種:
- created(已創建)
- restarting(重啓中)
- running(運行中)
- removing(遷移中)
- paused(暫停)
- exited(停止)
- dead(死亡)
- PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。
- NAMES: 自動分配的容器名稱。
docker exec -ti [CONTAINER ID] /bin/bash
進入容器:
docker exec -ti [CONTAINER ID] /bin/bash
在網站根目錄創建upload文件夾,同時賦予相關權限:
mkdir upload
chmod 777 upload/
安裝dvwa
docker pull citizenstig/dvwa
docker run -d -p [PORT]:80 citizenstig/dvwa #mysql密碼隨機
或
sudo docker run -d -p [PORT]:80 -p 3306:3306 -e MYSQL_PASS="root" citizenstig/dvwa #指定mysql密碼
安裝完成後會發現reCAPTCHA key: Missing
,需要進行配置,還是先docker ps
查看信息,然後進入容器:
docker exec -ti [CONTAINER ID] /bin/bash
按如下要求編輯配置文件:
vi /var/www/html/config/config.inc.php
在config.inc.php文件中找到下面代碼:
$_DVWA[ 'recaptcha_public_key' ] = ' ';
$_DVWA[ 'recaptcha_private_key' ] = ' ';
修改爲:
$_DVWA[ 'recaptcha_public_key' ] = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';
$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K';
安裝Pikachu
git clone https://github.com/zhuifengshaonianhanlu/pikachu
cd pikachu/
docker build -t "pikachu" .
docker run -d -p [PORT]:80 pikachu
容器啓動後,環境自帶MySQL,默認用戶名root,默認密碼爲空。
訪問web頁面,會看到一個紅色的熱情提示【歡迎使用,pikachu還沒有初始化,點擊進行初始化安裝!】,點擊即可完成安裝。
注意Pikachu有一個xss後臺,默認配置文件密碼與環境中MySQL密碼不一致,需要修改:
docker exec -ti [CONTAINER ID] /bin/bash
vim /var/www/html/pkxss/inc/config.inc.php
源文件
<?php
//全局session_start
session_start();
//全局居設置時區
date_default_timezone_set('Asia/Shanghai');
//全局設置默認字符
header('Content-type:text/html;charset=utf-8');
//定義數據庫連接參數
define('DBHOST', 'localhost');//將localhost修改爲數據庫服務器的地址
define('DBUSER', 'root');//將root修改爲連接mysql的用戶名
define('DBPW', 'pakachu');//將root修改爲連接mysql的密碼
define('DBNAME', 'pkxss');//自定義,建議不修改
define('DBPORT', '3306');//將3306修改爲mysql的連接端口,默認tcp3306
?>
修改爲
<?php
//全局session_start
session_start();
//全局居設置時區
date_default_timezone_set('Asia/Shanghai');
//全局設置默認字符
header('Content-type:text/html;charset=utf-8');
//定義數據庫連接參數
define('DBHOST', 'localhost');//將localhost修改爲數據庫服務器的地址
define('DBUSER', 'root');//將root修改爲連接mysql的用戶名
define('DBPW', '');//將root修改爲連接mysql的密碼
define('DBNAME', 'pkxss');//自定義,建議不修改
define('DBPORT', '3306');//將3306修改爲mysql的連接端口,默認tcp3306
?>
修改完成後在【管理工具】-【XSS後臺】中點擊初始化。
最後,打開瀏覽器,訪問本機ip:[port]
即可訪問靶機環境。