要点:docker、漏洞练习环境搭建、用于学习 Web 漏洞的常见靶
一、安装与使用 Docker 容器
以前我们搭建网站,需要在服务器依次安装 Apache、PHP、MySQL 等应用,比较烦琐,而且不同的源还有不同的应用版本,跟系统环境又可能存在兼容性的问题,这就需要手动添加源地址,甚至是自己编译安装。
后来出现了 XAMPP、PHPStudy 等优秀的 PHP 集成环境,可以非常便捷地安装。但是安装好之后,如果要使用某些 PHP 网站代码,我们仍然需要查找下载,再部署上去。PHP 网站代码有可能与 PHP 版本、系统环境存在兼容问题,或者需要额外安装其他依赖库。若需要迁移服务器,那上述安装过程又得重来一遍。
到底有没有高效的安装方式呢?有,答案就是 Docker。
1.1 Docker 安装
本节主要在 Ubuntu 系统下进行演示,在 Ubuntu 下可通过以下命令安装 Docker:
1 | sudo apt-get update |
如果是 Windows 或 macOS 系统,可以直接从官网下载安装包安装,它会自动识别你当前的操作系统,并提供相应平台的下载地址。
安装完成后,可运行以下命令,若输出“Hello from Docker!”则代表安装成功:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:4cf9c47f86df71d48364001ede3a4fcd85ae80ce02ebad74156906caff5378bc
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
1.2 Docker 常用命令
二、安装 sqli-labs 靶场
sqli-labs 是一款用于学习 SQL 注入的靶场平台,覆盖了各种类型的 SQL 注入,题目共 75 道,按难度划分为 4 页。sqli-labs 靶场的难度循序渐进,对于提高 SQL 注入实战能力有很好的帮助。sqli-labs 靶场的项目开源地址为https://github.com/Audi-1/sqli-labs。
那如何使用 Docker 快速安装 sqli-labs 呢?首先,搜索 sqli-labs 镜像,挑战 STARS 星标最多的镜像,这里选择“acgpiano/sqli-labs”镜像:
1 | sudo docker search sqli-labs |
然后拉取镜像:
1 | sudo docker pull acgpiano/sqli-labs |
接着再在容器中运行 sqli-labs:
1 | sudo docker run -dt --name sqli-labs -p 80:80 --rm acgpiano/sqli-labs [13:36:58] |
各参数含义如下所示:
1 | -d:代表后台运行 |
现在我们直接访问http://localhost,可以看到 sqli-labs 已经成功运行了。
最后点击“Setup/reset Database for labs”链接完成数据库的安装:
到此,sqli-labs 安装结束!
三、安装 DVWA 靶场
DVWA(Damn Vulnerable Web Application)是一款比较著名的漏洞靶场,很多 Web 安全的初学者都会拿它来练习,一些高校以及相关书籍里面也会介绍它。DVWA 的项目开源地址为https://github.com/digininja/DVWA。
DVWA 靶场可以直接通过 Docker 安装:
1 | sudo docker pull citizenstig/dvwa |
安装成功后,打开http://localhost:
然后点击“Create/Reset Database”创建数据库,使用默认密码 admin/password 登录,即可正常使用。做题时它能直接提供阅读源码的功能,不过题目相对少一些。
上面的 XSS 漏洞默认是安全的,在实际练习时,可以在“DVWA Security“中设置安全等级,即题目的难度等级,共有 4 等,其中 Impossible 代表的是已修复漏洞的情况,可以用来熟悉如何修复漏洞。
四、安装 Pikachu 靶场
Pikachu 也是一款 Web 漏洞靶场,涵盖各种 Web 漏洞类型的练习,也是基于 PHP+MySQL 搭建的平台,是由国人开发的。平台采用中文描述和基本的页面设计,相比 sqli-labs 这种单调的界面还是好看很多的。Pikachu 的项目开源地址为https://github.com/zhuifengshaonianhanlu/pikachu。
安装 Pikachu 也很简单,通过 Docker 即可快速安装。我们先搜索下镜像:
1 | sudo docker search pikachu |
然后取第一个镜像安装&运行:
1 | sudo docker pull area39/pikachu |
安装成功后,打开http://localhost即可:
五、CTF 赛题练习
CTF(Capture The Flag)夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF 起源于 1996 年 DEFCON 全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,CTF 已经成为全球范围网络安全圈流行的竞赛形式。
一些 CTF 出题方经常会直接搭建现成的漏洞测试环境供参赛者使用,有些赛后会取消,有些会一直保留。所以你也可以直接利用现成的 CTF 赛题环境来练习,连搭建环境这一步都省去了。对于一些未保留在线赛题环境的 CTF 题目,就只能自己搭建了。
前面的漏洞靶场更新频率不高,CTF 赛题会更与时俱进一些,每年都有新比赛和新赛题,特别是新的漏洞场景和利用技术,这在 CTF 上很容易看到。
各种国内外的赛事、题目与解答(write-up)都可通过该链接获取到,我在这里顺便也介绍几个现成的 Web 漏洞 CTF 在线练习环境:
XCTF 攻防世界:https://adworld.xctf.org.cn
SQL 注入挑战平台:http://redtiger.labs.overthewire.org
韩国 Web 安全挑战平台:https://webhacking.kr/
Websec CTF 练习平台:http://www.websec.fr/
网络信息安全攻防学习平台:http://hackinglab.cn/index.php
国外的 XSS 挑战平台:http://prompt.ml/
六、安装 VulHub 真实漏洞靶场
Vulhub 是一款基于 Docker 和 docker-compose 的漏洞测试靶场,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。Vulhub 的项目开源地址为https://github.com/vulhub/vulhub。
前面的靶场都是精心构造的漏洞场景,与真实的漏洞场景还是有一些差异的。为了提高实战水平,熟悉更多的真实漏洞场景,建议你安装 VulHub 来重现各种历史漏洞进行实战练习。
对于每个漏洞,VulHub 都有相应的文档描述其漏洞原理以及测试利用方法,你在重现漏洞后,可以进一步研究相关漏洞类型的利用技术,并对漏洞代码进行阅读,以提高代码审计能力。
我们需要先从 GitHub 上下载 VulHub,然后进行相应目录去创建和运行容器:
1 | git clone https://github.com/vulhub/vulhub |
安装使用都很方便。该项目几乎每个月都在更新,非常适合用于检测、利用和防御漏洞时的测试环境搭建。
Tips: Please indicate the source and original author when reprinting or quoting this article.