手把手教你如何使用Docker进行Web渗透测试
Docker是目前世界上最为先进的应用软件容器平台,Docker允许我们为每一种渗透测试任务创建不同的测试环境。在应用容器的帮助下,我们既可以将每一种测试环境存储在U盘中以方便携带,我们也可以将其保存在云端以便随时随地进行访问。比如说,你可以直接从云端下载测试环境,或者将测试环境直接拷贝到本地计算机中,而无需再花时间进行环境搭建了。没错,这一切Docker都可以帮你完成!
在此之前,很多测试人员会将各种不同的测试环境以LiveCD的形式进行存储,但LiveCD的使用则需要我们进行额外的配置。比如说,我们必须创建一个闪存驱动器或可启动的CD,甚至有时还需要使用到VirtualBox这样的虚拟机。
但是当我们使用Docker容器时,我们唯一要做的就是下载并安装Docker,而这个过程是非常简单的。安装完成之后,我们就可以从云端、U盘、或者DockerHUB中直接使用测试环境镜像了,这样不仅能为我们节省大量的时间,而且也提升了可移植性。
从本质上来说,Docker是一种在软件容器中帮助你创建、运行、测试和部署分布式应用的开源技术。Docker允许用户迅速地在任何系统环境中稳定且高效地部署应用。
我们之所以选择使用Docker,正是因为容器的可移植性、便捷性和高效性。在Docker的帮助下,我们只需要一个镜像,就能够适配不同的测试环境。比如说,我们先下载了一个Kali Linux作为基础容器,而这个容器并没有事先安装任何的工具。那么当我们需要进行信息取证的时候,我们就可以下载所需工具,然后将系统另存为取证镜像。当我们需要进行Web渗透测试时,我们又可以下载渗透测试工具,然后再将容器进行重新保存,而整个过程不会对基础容器产生影响。
如果你想了解更多有关Docker的详细内容,请参考这篇文章《Bullet Proof Your Docker》。
在我们的容器中,我们会使用到各种各样的工具,但是这里为了演示方便,下面只给出可以通过控制台使用的工具:
-W3af-console
-SQLMap
-Arachni
-Nikto
-Websploit
-Nmap
Docker的具体安装方法取决于你所使用的操作系统,但是对于大多数系统而言,我们可以直接从官方代码库中下载并安装。注:本文使用的是OpenSuse,相关操作如下:
_0x4a0x72@pwned ~ sudo zypper se docker
S | Nome | Resumo | Tipo
–+——————————+————————————————————–+————-
| docker | The Linux container runtime | pacote
_0x4a0x72@pwned ~ sudo zypper in docker
Once installed, you must enable and start the service
_0x4a0x72@pwned ~ sudo systemctl enable docker
_0x4a0x72@pwned ~ sudo systemctl start docker
_0x4a0x72@pwned ~ sudo docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 1.11.2
Storage Driver: btrfs
Build Version: Btrfs v4.5.3+20160516
…….
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
首先我们要准备好KaliLinux发行版镜像,如果你手中有HUB Doccker的官方镜像那就再好不过了。
接下来,使用命令“sudo docker search Kali”我们可以列出DockerHUB中的所有镜像文件,然后选择第一个,因为这个是官方推荐的选项。
_0x4a0x72@pwned ~ sudo docker search kali
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
kalilinux/kali-linux-docker Kali Linux Rolling DistributionBase Image 193 [OK]
接下来,将镜像下载到我们的设备中,这一步操作需要联网。
_0x4a0x72@pwned ~ sudo docker pullkalilinux/kali-linux-docker
Using default tag: latest
latest: Pulling from kalilinux/kali-linux-docker
b2860afd831e: Pull complete
340395ad18db: Pull complete
d4ecedcfaa73: Pull complete
3f96326089c0: Pull complete
e5b4b7133863: Pull complete
Digest:sha256:0aa8342172aacbe79957f66e7029c1fb38e14765bf35eff30624f90cb813a56f
Status: Downloaded newer image forkalilinux/kali-linux-docker:latest
_0x4a0x72@pwned ~ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kalilinux/kali-linux-docker latest f321257d50f7 6 days ago602.4 MB
接下来,使用下面的命令运行我们的容器:
_0x4a0x72@pwned ~ sudo docker run –name WebPentest -t -dkalilinux/kali-linux-docker
_0x4a0x72@pwned ~ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a5fb073e53c8 kalilinux/kali-linux-docker “/bin/bash” 10seconds ago Up 8 seconds WebPentest
测试工具安装
首先,通过下列命令访问容器的Shell:
_0x4a0x72@pwned ~ sudo docker exec -it WebPentest bash
root@a5fb073e53c8:/#
拿到Shell之后,我们需要更新容器,并安装Web渗透测试所需要的工具:
root@a5fb073e53c8:/# apt-get update
root@a5fb073e53c8:/# apt-get upgrade
root@a5fb073e53c8:/# apt-get install websploit w3af-consolearachni nikto sqlmap websploit nmap
安装完成之后,你可以直接在容器中执行相应的命令:
root@a5fb073e53c8:/# nmap localhost
Starting Nmap 7.12 ( https://nmap.org ) at 2016-06-30 09:09UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Other addresses for localhost (not scanned): ::1
All 1000 scanned ports on localhost (127.0.0.1) are closed
Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
当然了,你也可以在容器外运行命令:
_0x4a0x72@pwned ~ sudo docker exec -it WebPentest nikto
–Nikto v2.1.6
—————————————————————————
+ ERROR: No host specified
-config+ Use this config file
…….
+ requires a value
最后,我们可以使用命令“commit”来保存更改并保存镜像:
_0x4a0x72@pwned ~ sudo docker commit -a “Junior Carreiro” -m“Install Web Pentest Tools” WebPentest
在Docker容器的帮助下,我们可以根据自己的需要来分门别类地创建渗透测试环境。除此之外, 我们还可以将容器当作取证结果来提供给不同的人员进行审核。总而言之,容器的作用也许比我们想象中的还要强大。