本文以Ubuntu操作系统为例安装docker,然后在其搭建dvwa靶场
镜像源配置
首先就是先配置好镜像源使之在安装docker的时候更加的快速
这个命令用于编辑 Ubuntu/Linux 系统中 /etc/apt/sources.list
文件,该文件是 APT(Advanced Package Tool)包管理工具的主要配置文件,用于指定系统从哪些源获取软件包及其更新。
sudo vim /etc/apt/sources.list
#此处以阿里云为例:
# See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/
# deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-
firmware
# 阿里云
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
# Additional line for source packages
# deb-src http://http.kali.org/kali kali-rolling main contrib non-free non-free-
firmware
安装docker
先进行更新软件包,然后再进行安装docker
sudo apt-get update
sudo apt install docker.io
#随后查看docker是否安装成功
sudo docker version
安装docker-compose
#先进行更新软件包
sudo apt update
#安装curl
sudo apt install curl
#下载docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-
compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#给文件执行权限
sudo chmod +x /usr/local/bin/docker-compose
换源
-
首先创建文件 /etc/docker/daemon.json
vim /etc/docker/daemon.json
-
添加镜像地址
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://kfwkfulq.mirror.aliyuncs.com"
]
}
-
重启docker
sudo service docker restart
-
查看是否生效
sudo docker info | grep Mirrors -A 4
使用docker搭建DVWA靶场
1.使用docker搜索DVWA靶场的镜像
docker search dvwa
会得到以下列表,这些都是dvwa的别人做好的镜像
root@docker:/# docker search dvwa
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
sagikazarmark/dvwa DVWA (Damn Vulnerable Web Application) Docke… 28 [OK]
vulnerables/web-dvwa Damn Vulnerable Web App (DVWA) is a PHP/MySQ… 223 [OK]
cytopia/dvwa DVWA (Damn Vulnerable Web Application) with … 17
citizenstig/dvwa Docker container for Damn Vulnerable Web App… 73 [OK]
cyberxsecurity/dvwa 2
aracloud/docker-dvwa https://github.com/aracloud/docker-dvwa 1
infoslack/dvwa 12 [OK]
astronaut1712/dvwa Docker for DVWA LAB: https://github.com/Rand… 5 [OK]
scotty2hotty/dvwa 0
santosomar/dvwa DVWA Container for Cybersecurity Training 2
c0ny1/dvwa dvwa镜像 0
mlinarik/dvwa 0
howiehowerton/dvwa-howie 0
frez0234/dvwa 0
rajvanshi/dvwa 0
waiyanwinhtain/dvwa 0
bennalp/dvwa 0
luigitheplumber69/web-dvwa 0
hightechsec/docker-dvwa Latest Docker DVWA running on Debian 9.3 0
vladvantaroo/dvwa just dvwa 0
pmuench/dvwa-container-escape DVWA with CVE-2021-4034 for Demo 0
vulfocus/dvwa 0
kaakaww/dvwa-docker DVWA. No setup needed, just log in. Built fr… 3
adrianaues/dvwa-esagent cytopia/dvwa with ES Agent pre-installed 0
kravjosh/dvwa 0
但是现在不能直接进行search,所以一种方法是直接买国外的服务器或者本地先搜看看有哪些镜像再进行pull,例如:
2.使用docker拉取指定镜像
docker pull citizenstig/dvwa
docker pull sagikazarmark/dvwa
docker pull vulnerables/web-dvwa
3.查看本地镜像信息
docker images
4.运行镜像,并创建一个容器
docker run -dt --name dvwa -p 8999:80 --rm citizenstig/dvwa
docker run -dt --name dvwa -p 8999:80 --rm sagikazarmark/dvwa
docker run -dt --name dvwa -p 8999:80 --rm vulnerables/web-dvwa
docker run -dt --name arl -p 4439:5003 --rm honmashironeko/arl-docker-all
docker run -dt --name wordpress -p 9000:80 --rm wordpress
参数解释
-
docker run
:这是Docker中用于从镜像启动新容器的命令。 -
-dt
:这个选项实际上是两个选项的组合,-d
和-t
,但在这里-t
(分配一个伪终端或终端)通常与交互式容器一起使用,而-d
(在后台运行容器,并打印容器ID)是这里的主要用途。不过,由于-t
通常与-i
(即使没有附加也保持STDIN打开)一起使用来创建交互式会话,而这里只单独使用了-d
,所以-t
在这里实际上是多余的,可能是一个误打或者习惯用法。正确的后台运行选项应该只是-d
。 -
--name dvwa
:这个选项允许你为即将创建的容器指定一个名称,这里是dvwa
。这样,你就可以通过名称而不是容器ID来引用和操作容器了。 -
-p 8999:80
:这个选项用于将容器内的端口映射到宿主机的端口上。这里,容器内的80端口(Web服务器通常监听的端口)被映射到宿主机的8999端口。这样,你就可以通过访问宿主机的8999端口来访问容器内的Web服务了。 -
--rm
:这个选项告诉Docker,在容器停止后自动删除它。这有助于避免在Docker主机上积累大量不再需要的容器,从而节省空间。 -
citizenstig/dvwa
:这是要从中启动容器的Docker镜像的名称。
5.查看创建的容器的id和映射的端口
docker ps -s
6.进入
docker exec -it wordpress /bin/bash
docker exec -it my-mysql mysql -u root -p
关于靶场相关问题及其处理:
以下问题在没有vi、vim等工具编辑
关于 The PHP function allow_url_include is not enabled
修改php配置文件
cd /etc/php/7.0/apache2/
- ‘‘allow_url_include=Off’’ 改为 ‘‘allow_url_include=On’’
- ‘‘display_errors=Off’’ 改为 ‘‘display_errors=On’’
可以先进行查看相关字段的附近内容:
cat php.ini | grep -C 2 'allow_url_include' cat php.ini | grep -C 2 'display_errors'
用sed替换内容
sed -i '/^[;]*\s*allow_url_include\s*=\s*Off\s*$/s//allow_url_include=On/' php.ini sed -i '/^[;]*\s*display_errors\s*=\s*Off\s*$/s//display_errors=On/' php.ini
关于 reCAPTCHA API key missing from config file: /var/www/html/dvwa/config/config
先到其目录
cd /var/www/html/config# ls config.inc.php config.inc.php.bak config.inc.php.dist cat config.inc.php
原因:
出现该问题是因为使用reCAPTCHA没有申请密钥,因此需要手动填入密钥,打开提示的配置文件,找到
解决
将
$_DVWA[ 'recaptcha_public_key' ] = ''; $_DVWA[ 'recaptcha_private_key' ] = '';
改为
$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg'; $_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';
添加key
sed -i "/^\$_DVWA\[ 'recaptcha_public_key' \] = '';/c\$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';" config.inc.php sed -i "/^\$_DVWA\[ 'recaptcha_private_key' \] = '';/c\$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';" config.inc.php
这里的 sed
命令做了以下几件事:
-
-i
选项表示直接修改文件内容,而不是输出到标准输出。 -
/$_DVWA\[ '\''recaptcha_public_key'\'' \]/
是用来匹配包含旧文本的行。 -
c
是sed
的替换命令,表示用后面的字符串替换整行。 -
\
用于转义'
和[
,因为在sed
正则表达式中这些字符有特殊含义。
请注意,在 sed
命令中,行尾的反引号()是必须的,因为它们是
sed` 命令的一部分,用于表示行继续。