0x00 简介
1、测试环境
目标IP:10.xxxx
测试IP:192.168.139.128
测试环境:win10、kali等
测试时间:2021.7.22-2021.7.22
测试人员:ruanruan
2、测试过程
本次实战主要通过对收集到的端口、目录等信息进行持续整合分析,再对目标系统进行tomcat弱口令、ghostcat文件读取、struts2RCE、SMB无认证访问等尝试,获取到jan账号,再利用.ssh私钥爆破获取较高权限的kay账号,直接sudo提权就能获得root权限。
0x01 信息收集
扫描端口
0x01 初次尝试
对以下端口进行的尝试及判断:
- 22:高版本ssh,弱口令爆破较难
- 80:web,访问一下好像没什么功能,只有个dev提示
- 139、445:版本号4.3.11,复现RCE漏洞失败。
- 8009:幽灵猫漏洞,只能读取/WEB-INF/目录下的文件,意义不大
- 8080:Tomcat,尝试弱口令,失败。
到这里就只剩下80和445还能再继续探索一下。==
0x02 继续收集信息
访问web首页,网站正在维护中
back,查看源码
提示dev,试了下/dev/,404,扫一下目录,得到/development/路径
访问该路径,下面有两个txt文件
内容如下:
根据两个文件的内容,目前可以得到以下三个信息:
- 使用了struts2,版本为2.5.12,关键字rest。=>基本确定S2-052 REST插件 XStream远程代码执行漏洞。
- smb已配置,samba服务已测试过RCE,失败。根据对话整体能猜到应该是文件共享问题,但是尝试的方法有点偏了,应该直接连接IP/用户名
- /etc/shadow,J的账号是弱口令
0x03 再次尝试
1、S2-052
首先试着复现S2-052,但是在复现S2-052时路径不对导致复现失败,通用路径为/struts2-rest-showcase/,这台靶机的路径为/struts2-rest-showcase-2.5.12/。==
2、SMB文件共享
先是参考了一篇文章,得到了Anonymous用户,然后就跟着挂载文件。。失败
正确的利用smb文件共享服务的漏洞应该是直接连接查看,而不是什么挂载乱七八糟的。
这里获取到用户名为Anonymous,无密码认证直接回车
smbclient -N -L IP
smbclient //IP/用户名
查看staff.txt文件,得到两个用户名
0x04 思路一:把爆破jan账号作为入口
1、获得jan账号
利用/usr/share/wordlists/rocky.txt爆破jan的密码
hydra -l jan -P password.txt -vV -o ssh.log -e ns ip ssh
得到密码:armando
登录jan账号,进入kay目录可以看到.ssh文件
对比两个公钥,相同
查看私钥,已加密
这里利用ssh2john来爆破ssh私钥,默认在/usr/share/john/ssh2john.py
得到密码:beeswax
2、成功登录kay账号
直接登录ssh
登陆成功,查看pass.bak,得到一串字符。。其实是密码,利用它使用sudo命令。
3、利用sudo提权获取root权限
sudo -l ,这里all表示所有命令都以root权限执行
直接sudo su
0x05 思路二:利用struts2漏洞反弹shell
如果利用struts2漏洞,可以先上传一个.sh文件,再chmod加权限,最后利用bash命令执行。
这里直接创建一个shell.sh,写入反弹shell命令
再在struts2的poc中修改执行
物理机就能获取shell,得到tomcat9账号的权限,然后继续通过kay目录下的.ssh目录进行利用。
后面的步骤和前面一样,这里只是提供另一种思路。
0x06 总结
1、踩坑
- struts2的漏洞路径为/struts2-rest-showcase-2.5.12/
- 知道存在smb文件共享认证问题,但是登录命令有误
- 在kay账号下读取的密码太长,以为需要再次解密/找密码
2、知识点
- S2-052漏洞复现,获取shell思路
- goastcat文件读取漏洞,限制:只能读取/WEB-INF/路径下的文件
- smb文件共享认证问题,以及登录命令
- smbclient -N -L IP
smbclient //IP/用户名
- smbclient -N -L IP
- .ssh私钥爆破,利用ssh2john文件
3、反思
- 做得较好的地方
- 相对于上一次实战测试,在做本次实战过程时思路会更加清晰、收集的信息有整合分析,存在漏洞的地方也基本能猜测出。
- 需要继续努力的地方
- 但是在漏洞利用和信息利用过程以及不是特别顺利,主要原因是对服务、漏洞原理不够熟悉,之后会多总结复现常见的服务漏洞和组件漏洞。次要原因是靶机的很多地方需要猜测,脑洞型,思维比较跳跃。
- 之后的测试中,在开始时先尽量收集更多信息再尝试寻找突破点。