author:haya
原文见:https://mp.weixin.qq.com/s/rXqSfjTFUQJsirkhi1hmHQ
前言
最近尝试对一些大赛进行复现,几番周折联系到了网鼎杯赛方,在春秋GAME的支持下,按照原来的靶场环境进行复刻,搭建了一个与第二届网鼎杯线下总决赛类似环境的靶场,复盘了整个比赛。
在整个复盘中,可以感觉到整个靶场规模是非常大的,后来从赛事支持人员口中了解到,实际比赛中为每个队伍准备了一个独占的靶场环境,这意味着同时有几千个节点同时运行,难度可想而知,可以感受到赛方的诚意,也充分体现了赛事运维水平。能够有机会再次近距离地接触这样的靶场,我觉得是一个很好的内网渗透练习机会,在本次内网渗透中,收益颇多,特此记录下来。
一. 靶场介绍
1.简介
本靶场是通过真实场景构建的城市网络安全仿真靶场,以企业网络架构,引用真实网络安全攻击事件,模拟了 广诚市 城市发展集团有限公司 (Urban Development Group Co., Ltd)内部网络拓扑结构。
2. 攻击路线图
![](http://www.hayasec.me/wp-content/uploads/2021/07/route-1024x842.jpg)
3. 网络限制
DMZ区可与选手网段互通,GCUD域单独隔离对外仅能访问特定资源,STAFF域可通过代理服务器对外访问,GCUDCITY域和STAFF域网络互通,核心区单独隔离。
4. 知识点
靶场模拟了从外部打点到内网渗透最后拿下核心数据库的完整过程,涉及Wordpress漏洞利用(php)、SScms漏洞利用(C#)、代理隧道转发、内网信息收集、内网横向移动、权限提升、基于资源的委派、约束委派、跨域攻击、Exchange后渗透利用、Windows Defender绕过等内网常见的知识点。
二、靶场题解(Write up)
1. 模拟本机环境
主机1:windows 10.100.100.233
主机2:ubuntu 10.100.100.25
2. 攻击Web1(WordPress)
首先,靶机(10.100.100.47)开放了80端口,是一个wordpress。
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509160456881-1024x347.png)
如下图,插件目录配置不当存在目录遍历,可以看到安装了asismet、editor、jquery-html5-file-upload三款插件。
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509160636478-1024x767.png)
两款插件均是github最新版,但是jquery-html5-file-upload能够上传jpg文件,site editor存在官方未修复的CVE-2018-7422任意本地文件包含,两个漏洞组合即可getshell。(日志文件包含不可用)
首先,curl上传一句话shell.jpg
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509161836615-1024x175.png)
然后,通过如下payload,包含curl上传的文件
http://10.100.100.47/wp-content/plugins/editor-1.1.0/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=../../../../../../../wp-content/uploads/files/guest/shell.jpg
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509162936312-1024x214.png)
最后结果如下图,获取到web1的apache权限。
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509163019753-1024x425.png)
3. 攻击mysql
查看站库分离的web1 wordpress的配置文件wp-config,发现了主机192.168.200.40的mysql数据库密码
root p@ssw0rd
![](http://www.hayasec.me/wp-content/uploads/2021/07/image-20200509163730464-1024x662.png)
使用ew等工具进行内网穿透。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509170218630-1024x243.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509170808046-1024x212.png)
mysql-client远程连接192.168.200.40,发现存在两个root密码的hash,其中本地root hash未知。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509170342939-1024x662.png)
使用hashcat本地破解可知密码为www123456,字典仅使用top100password即可。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509212703275-1024x487.png)
通过代理,使用任意扫描器扫描同网段存活主机
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509171447410-1024x250.png)
发现存在以下端口:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509174648867.png)
通过收集到的两个密码,hydra尝试其他主机密码,发现192.168.200.4 192.168.200.40密码同mysql
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509202417304-1024x553.png)
4. Web2(.NET Core)
使用hydra获得的192.168.200.4,代理ssh登录,简单信息收集后,发现80端口运行着服务。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509202739716-1024x706.png)
查看网络连接不难发现,web2连接到了另外一个网段192.168.60.200的1433。
sscms是一个.net core开发的跨平台开源cms,数据库配置文件为sscms.json
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509203637596-1024x304.png)
5. MSSQL1(突破DMZ区)
突破DMZ区,我们需要找到1433的用户名和密码,那么就需要解密sscms.json。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509203753072-1024x525.png)
打包源码到本地,通过审计不难发现,主要加密逻辑代码如下:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509214926040-1024x651.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509214919124-1024x612.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509214913212-1024x613.png)
引用sscms中的DesEncryptor.cs,编写解密代码如下:
using System;
using System.Dynamic;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string sourceString = "waYqL4BMzqNZDj482zaIOf2TTYQ8y5s0slash0CnoR9uZ3XMDhsvE0add0pQ3s42ImUAGdahxxYzu76C7dlCFhZ290slash00qmt2g0equals00equals00secret0";
string key = "7425c715db412656";
var s = DecryptStringBySecretKey(sourceString, key);
Console.WriteLine("sourceString"+sourceString);
Console.WriteLine("key:"+key);
Console.WriteLine(s);
Console.ReadKey();
}
public static string DecryptStringBySecretKey(string inputString, string secretKey)
{
if (string.IsNullOrEmpty(inputString)) return string.Empty;
inputString = inputString.Replace("0secret0", string.Empty).Replace("0add0", "+").Replace("0equals0", "=").Replace("0and0", "&").Replace("0question0", "?").Replace("0quote0", "'").Replace("0slash0", "/");
var encryptor = new DesEncryptor
{
InputString = inputString,
DecryptKey = secretKey
};
encryptor.DesDecrypt();
return encryptor.OutString;
}
}
}
解密出192.168.60.200(MSSQL1)的数据库密码为p@ssw0rd2020 (当然,爆破也是有可能的)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200509204746549-1024x130.png)
因为防火墙只允许DMZ区主机与1433端口通信,,MYSSQL可以反向访问到DMZ。这里我们可以使用xp_cmdshell执行命令,反弹个meterpreter,或者上传工具进行下一步渗透。
启用xp_cmdshell:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510201542419-1024x506.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510203849228-1024x435.png)
6. 探测GCUD域
探测MSSQL所在网段 192.168.60.1/24,发现存在GCUD域
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510204218701-1024x607.png)
上传kerbrute,通过常用的用户字典进行预认证爆破,发现存在test用户:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510203902906-1024x156.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510205035184-1024x190.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510205051663-1024x328.png)
随后通过DMZ搜集到的密码进行密码喷洒攻击,成功爆破出普通域用户凭据:
test p@ssw0rd2020
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510204705875-1024x109.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510205337802-1024x225.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200510205352101-1024x375.png)
通过Powerview等工具对域信息进行收集不难发现存在:
PRE-ERP TEST1-SERVER TEST-SERVER都使用域用户test加域,ms-ds-creatorsid相同,明显存在资源委派攻击。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513004158549-1024x573.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513003942705-1024x456.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513003920765-1024x628.png)
由于无法直接远程登录到域内主机,所以需要在本机代理打资源委派。
DMZ的代理无法正向直接连接到GCUD域所在的网段,所以需要在MSSQL主机上进行代理,然后DMZ区主机转发。
代理成功后,首先通过addcomputer.py添加一台机器账户
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513005042100-1024x261.png)
然后配置evilcomputer到PRE-ERP的基于资源约束的委派
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513011240944-1024x406.png)
然后通过impacket套件中的getST.py申请一张ticket并且导入,模拟administrator。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513012428619-1024x376.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513012440985-1024x60.png)
至此,我们我们就可以登录到主机PRE-ERP了
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513014833544-1024x488.png)
随后发现用户GCUD\hanbin登录到了PRE-ERP,然后上传mimikatz.exe,抓取密码,得到hanbin的hash。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513015050141-1024x429.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513015502254-1024x606.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513015439512-1024x650.png)
8. 横向移动到运维服务器IT-SERVER
对用户hanbin进行侦查,不难发现hanbin还登录到了主机:IT-SERVER
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513190242267-1024x679.png)
使用hanbin PTH登录到IT-SERVER,发现域管GCUD\gcadmin也登录到了IT-SERVER
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513190635567-1024x284.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513190715757-1024x341.png)
同样用mimikatz抓取密码,得到了域管gcadmin的hash。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513191209687-1024x646.png)
9. 横向移动到域控DC1
使用域管gcadmin PTH登录域控,拿下整个域
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513192148940-1024x358.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513192209488-1024x110.png)
10. EXCHANGE信息搜集
因为域内存在Exchange服务器,可以pth登录到邮件服务器,添加Exchange管理单元,搜寻统计password关键字的邮件。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513203720024-1024x239.png)
搜索发现administrator邮箱内有一封包含pass的邮件,New-MailboxexportRequest导出pst格式的邮件(注:这里smbexec.py报错是字符集问题,但是命令已经正确执行)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513204144770-1024x432.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513204453191-1024x325.png)
下载回本地打开pst文件,发现可以看到如下内容:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513205346901-1024x408.png)
11. 横向移动到堡垒机jumpsrv
解密加密压缩文件,可以获得堡垒机、LIMING-PC的ip地址 和密码。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513205626845-1024x591.png)
12. 探测STAFF域
因为GCUD域无法直接和LIMING-PC通信,我们先尝试登录堡垒机172.19.70.100。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513213054660-1024x268.png)
同样使用ew等工具,配置一个多级代理,探测LIMING-PC所在的网段,不难发现存在STAFF域。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513214038978-1024x341.png)
试用wmiexec.py等工具远程登录到LIMING-PC
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513215505104-1024x288.png)
使用impacket套件中的GetUserSPNs.py,查询域内服务账户,进行Kerberoasting攻击,本地破解hash可以获得域服务账户print的密码为p@ssw0rd
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513224603323-1024x678.png)
继续对服务账户进行侦查,可以发现print配置了到OFFICE-PC的委派,明显存在约束委派攻击。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513231932857-1024x692.png)
13. 攻击公用办公服务器OFFICE-PC
这里直接申请一张ST,即可在OFFICE-PC模拟administrator,拿下主机。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513233513359-1024x393.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513233704976-1024x261.png)
14. 拿下员工STAFF域
在OFFICE-PC进行信息搜集,我们发现了域管登录进程:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200513233731630-1024x417.png)
这里方法很多,主机装有杀软Windows Defender,可以选择procdump等工具dump出lsass.exe
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200514163921788-1024x342.png)
本地还原密码,可以得到STAFF\administrator的hash
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200514165420326.png)
15. 移动到父域GCCITYUD
通过收集域信任关系,发现这里存在父域GCCITYUD.com.
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515011126198-1024x209.png)
由于隐式双向信任,可以构造金票跨到父域GCCITYUD.com。
构造金票需要如下信息:
krbtgt hash
STAFF域sid
GCCITYUD域sid
具体操作如下:
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515013601246-1024x363.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515174712659-1024x195.png)
通过使用mimikatz ptt,即可跨到GCCITYUD(注:由于域内有Windows Defender,所以需要免杀mimikatz)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515184459534-1024x614.png)
随后net use等方式拿下GCCITYUD域的域控DC01
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515190450432-1024x681.png)
16. 获取GCCITYUD域服务器
拿下GCCITYUD域控后,由于防火墙原因·,常规横向手法不可用,可通过下发木马等形式来解决。
细心侦查ie浏览器注册表可以发现存在一台squid代理服务器,可以直通到选手网段,直接上线。
17. 攻击ADMIN-PC
在STAFF域控DC1上进行信息搜集,可以发现3389连接记录,通过Dpapi即可解密凭据,获取到ADMIN-PC的3389密码。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515010141800-1024x112.png)
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515010047015-1024x609.png)
18. 拿下核心区服务器
通过DPapi获取到的密码,远程登录到ADMIN-PC(因为Remote UAC限制,也可以使用mstsc SharpRDP等工具)
登陆后发现主机存在xshell,通过Xdecrypt解密,可以获取到核心区三台服务器root密码,并成功登录。
![](http://www.hayasec.me/wp-content/uploads/2021/08/image-20200515220610511-1024x416.png)
至此,整个靶场渗透结束。