[靶场篇]vulhub靶场BREAKOUT的分析与渗透测试
一.基本信息
| 靶场名 | LupinOne |
|---|---|
| 来源 | vulhub |
| 下载链接 | Empire: Breakout ~ VulnHub |
| 难度 | 简单(某些知识点会困难) |
| 网络 | DHCP自动分配–本实验环境采用桥接模式 |
| 实验环境 | 攻击机:win11操作系统+wsl下的kali 测试机:VMware® Workstation 17 Pro里安装镜像 |
| 技术栈 | smb、samba理解(重),rid枚举(重),rpc协议在域控的利用(重) 敏感信息文件的提权查找 |
二.测试流程
信息收集
测试环境准备好后,ifconfig之后获取本机ip已知网段后,主机发现采集测试机ip,采用工具快速粗略识别扫描主机和相关端口开放情况
1 | rscan -a 192.168.111.0/24 -u 5000 |

拿到测试机ip,进行下一步namp常规扫描探测
1 | nmap --min-rate 10000 -p- 192.168.0.158 -oA scan/ports #端口快速识别 |
namp探测结果1 |
nmap探测结果2 |
namp探测结果3 |
nmap探测结果4 |
[!NOTE]
对于常规的扫描工具,有可能不正确,有可能有漏扫,我建议多收集两遍,每个人的结果可能不一样,结合网络其他师傅的文章,在vuln这里能扫到一个cve-2006-3392,我起初是没有的,这一点不要太较真,不要对工具产生太大的依赖性
对于各端口的服务,通过谷歌等搜集,对于139和445端口主要是为支持基于 NetBIOS 和 SMB 协议的文件、打印机等网络资源共享,对于webmin服务官网给出的综述是,这表明它是一种用户量很大的系统管理平台,在相关的平台搜集信息后捕捉到如下几点:权限分级(提权-历史上有相关漏洞),有shell操作平台(反弹shell执行其他操作),大型安装量很高的系统,关注文件配置文件,一些大型应用的收录字典都会收录里面的可利用路径
Webmin is a web-based system administration tool for Unix-like servers, and services with about 1,000,000 yearly installations worldwide. Using it, it is possible to configure operating system internals, such as users, disk quotas, services or configuration files, as well as modify, and control open-source apps, such as BIND DNS Server, Apache HTTP Server, PHP, MySQL, and many more.
系统介绍主页 |
nmap探测结果2 |
综合所述我们拿到的信息:
[!IMPORTANT]
80端口是http服务apache默认服务页,目标主机的 139 和 445 TCP 端口开放,运行着 NetBIOS 会话服务,由 Samba 4 版本的 smbd 守护进程提供,支持类 Unix 系统与 Windows 系统的文件、打印机等资源共享。而10000和20000端口是webmin服务系统,主机脚本获取到 NetBIOS 名称为 BREAKOUT,SMB2 消息签名启用但非强制。
渗透测试
A阶段
首先测试任意文件泄露漏洞脚本是否能打通?

1 | searchsploit -m 1997 #漏洞编号1997 |
没拿到什么信息,进而转为主要和web交互的初步探测,访问80端口,是一个很常见的apache页面服务,依据常理f12看一下源码看是否有隐藏服务,发现如下,明显是类ctf风格的加解密,是brainfuck加密

“<!–
don’t worry no one will get here, it’s safe to share with you my access. Its encrypted :)++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>++++++++++++++++.++++.>>+++++++++++++++++.—-.<++++++++++.———–.>———–.++++.<<+.>-.——–.++++++++++++++++++++.<————.>>———.<<++++++.++++++.
–>”
1 | cat en-info | hsbrainfuck | tee pass |
解密得到类似于密码的凭据.2uqPEfj3D<P'a-3,由于22端口未侦测到且不是优先级选项最高,我们保留此密码做下一步的10000端口和20000端口的探测,已知密码凭据但是未知账户名是一个很头疼的地方,信息搜集后发现,usermin是普通用户登录窗口,webmin大致是管理员登录窗口,一般webmin系统的默认用户是admin或者root,多次尝试之后发现无效,而且在尝试usermin用usr登录也无果
webmin |
usermin |
然而现在有的思路是一点是既然默认用户不行,而且他一般不会轻易把修改后的系统默认root用户的账号名放上来,这里考虑的就是网站的接管者的账户名就是usermin/webmin即为这个密码的账户(类似于www-data这样的账户名),然而我们怎么拿到呢,现在还有信息就是smb/samba服务开启,或许可以从这里拿出具体用户的名字,执行探测命令
1 | smbmap -H 192.168.0.158 -r -u "" -p "" |

可以看到列出了一些存在的smb的管道路径,尝试枚举共享资源,但print$和IPC$共享在空会话下都没有访问权限,-r参数也没有列出具体的文件内容,我们主要的目的还是去找账户,有一个工具称为enum4linux-ng,执行上面代码块第二行命令可以罗列出存在一个用户名为cyber,这里存在一个很大的知识坑,继续做攻击连在细节分析模块做详细介绍。

B阶段
登录进去,发现了有一个shell,尝试一下常用命令,ls -liah等,拿到了第一个用户的flag为3mp!r3{You_Manage_To_Break_To_My_Secure_Access},面板如本模块尾图
系统主页 |
shell界面 |
1 | #反弹shell |

C阶段
最终阶段提权阶段,先搜集一下可利用漏洞,发现CVE-2019-15107 和 CVE-2019-15642在影响范围内,但是对提权无太大帮助,都是命令执行相关的

反弹shell尝试提权,sudo-l无效,cat /etc/crontab定时任务相关信息,只能去查找一些有特殊的操作权限的文件,如以下代码块命令

1 | find / -type f -perm -4000 2>/dev/null #找suid文件 |
多方验证下发现/home/cyber/tar此文件所属root用户且当前用户可执行,空命令./tar执行发现和常规的tar命令一样,那么这个命令可以读全局文件
1 | #找一下敏感信息文件,匹配逻辑适度调整 |


Ts&4&YurgtRX(=~h又是一个类密码形式的,看一下系统里哪些有账号,筛选“grep | sh”,发现只能是root的
su提权,成功得到答案3mp!r3{You_Manage_To_BreakOut_From_My_System_Congratulation},如下图
[!tip]
需要提升一下交互性
1
2 export TERM=xterm
python3 -c "import pty;pty.spawn('/bin/bash')"痕迹清理
1
2
3
4 history -c
sed -i '/cyber.*su.*root/d' /var/log/auth.log
rm -f /home/cyber/ara.rar
rm -rf /home/cyber/var

三.细节分析
细致拆解一下获取用户账户名那一块,虽说提到了enum4linux-ng但是其大部分是自动化的脚本执行,从原子级拆解这个问题,我们需先要经历从概念到方法的过程
基本知识
细则表格
| rid 枚举 | RID枚举是一种利用Windows操作系统中的RID(Relative Identifier,相对标识符)来枚举用户和组账户的技术。大多是基于 RPC 协议的基础信息搜集手段,通过\pipe\samr和\pipe\lsarpc两个管道接口,利用 Samba 对 RPC 协议的兼容能力递增 RID 值拼接用户清单,其探测易受防火墙限制,且访问这两个接口无需高权限。 |
|---|---|
| rpc协议 | 编辑分享RPC协议的主要目的是做到不同服务间调用方法像同一服务间调用本地方法一样,多见与135端口 |
| posix | POSIX标准,为了Linux系统或类unix系统的可移植性 |
| uid/rid | 在类 Unix 操作系统(如 Linux)中分别用于识别用户和组的数字标识符 |
| sid | 解释一下什么是RPC协议?SID 用于唯一标识安全主体或安全组 |
| ms-rpc | MS-RPC,即 Microsoft 远程过程调用,是允许一个程序向另一台计算机上的另一个程序请求服务的协议,类似于进行本地函数调用。它是 Microsoft 对 DCE/RPC 标准的实现,是 Windows 的基础,支持许多系统服务的进程间通信,包括管理文件、服务和网络设置。MS-RPC 可以在各种传输协议(例如 TCP)上运行,并且对许多核心 Windows 功能至关重要 |
| 操作号 |
细则
混合win域环境和linux环境中,在 SMB 协议中,用户、组和机器由它们的安全标识符 (SID) 表示。
在 POSIX 系统上,Samba 进程需要在相应的 POSIX 用户身份下运行,并带有补充 POSIX 组,以允许访问这些用户和组拥有的文件。Samba 支持多种方式将 SID 映射到 POSIX 用户和组。 该配置由
idmap config DOMAIN : OPTION选项驱动,该选项允许单独为每个域指定身份映射 (idmap) 选项,身份映射模块实现了将 SID 映射到 POSIX 用户和组身份的不同策略。RPC(远程过程调用)是一种让程序能像调用本地函数一样调用远程计算机上函数的协议,核心是简化跨网络的进程通信。
NDR(网络数据表示)是 RPC 中用于数据编码的标准,解决不同系统(如 Windows 和 Linux)在数据格式(如字节序、数据类型长度)上的差异,确保远程调用时数据能正确传输和解析。
简单说:RPC 负责远程调用的 “流程调度”,NDR 负责调用中 “数据的统一包装与解析”,二者配合实现跨系统的高效通信。
SMB(Server Message Block,服务器消息块):是一种网络通信协议,核心用于不同设备(如 Windows 与 Windows、Windows 与 Linux)之间共享文件、打印机、串口等资源,常见于局域网环境,默认通过 445 端口(或 139 端口)传输数据。
Samba:是运行在类 Unix 系统(如 Linux、macOS)上的开源软件,核心功能是实现 SMB 协议,让类 Unix 系统能与 Windows 系统无缝交互(比如 Linux 通过 Samba 共享文件,Windows 可直接访问),同时也支持作为域控制器、提供打印共享等扩展功能。
关联知识
rid枚举常用的工具
工具组 样例工具 impacket系列组工具 impacket-lookupsid,impacket-lookupsid rpcclient rpcclient samba/smb工具组 smbclient nxc nxc nmap组 nmap —script-help smb-enum-users msf组 smb_lookupsid 操作号 在 RPC(远程过程调用)协议中,操作号(Opnum,Operation Number) 是一个整数,用于唯一标识远程服务中可调用的具体函数或方法。 攻击面
\\\pipe\samr和\\\pipe\lsarpc是 Windows 系统中基于 命名管道(Named Pipe) 的 RPC 接口,主要用于处理安全账号和域信息相关的远程调用,是域环境中信息交互的核心通道:\\\pipe\samr:关联本地安全账号管理器(SAM),用于远程查询、管理用户、组、计算机等安全账号的信息(如 RID、用户名、权限等),是 RID 枚举、账号信息探测的关键接口。
\\\pipe\lsarpc:关联本地安全机构(LSA),用于处理域信任关系、安全策略、账号认证等信息交互,可用于获取域名称、域 SID、信任域列表等核心域信息。
两者均通过 RPC 协议通信,常被用于网络信息搜集(如枚举域内账号、探测域结构),且低权限用户(甚至空会话,取决于配置)可能对其有基础访问权限。
实操
1
2smbclient -L 192.168.0.158 -m SMB3 -N -U ""
#smbclient 主要针对 SMB 共享资源(如print$、IPC$)进行枚举,关注的是 “哪些共享可访问”;
nmap已经探测
smbd4,用工具匿名访问,目标主机可能禁用了 SMB1 协议,接下来三个思路:rpc访问ipc管道,smbd4的漏洞,访问共享,综合考量筛选选第一个。[!NOTE]
匿名访问没有必要ls,验证到可以成功连接,接受匿名会话,本质上并不承受文件系统,仅仅只是rpc协议的走管道


用工具组尝试一下
1 | #系列组lookupsid工具 |
[!NOTE]
目前rpc方法不可用,rpc协议可列出共享可连接可存在就是方法用不了,已经绑定了管道接口,可换工具
[!NOTE]
impacket-rpcmap的lsarpc模块
第一部分(MS-LSAT本地安全机构传输协议)里面error是失败,rpc_x_bad这些是传参格式不对因为我们是传的垃圾payload
第二部分(目录服务安装协议)–不太关注此协议
第三部分(远程管理协议)rpce模块很少做攻击面-不太关注此协议
[!NOTE]
impacket-rpcmap的samr模块
lsarpc很多不可用,samr却很多,枚举了两个域,域能看到,域内用户看不到,换工具,使用nxc查看一下
1 | nxc smb 192.168.0.158 -u guset -p '' --rid-brute |
[!NOTE]
支持匿名访问,允许guest,debug看一下此工具最后走的是lsarpc,rpc方法仍然缺失,是和lsarpc操作数少的问题有关
查询类方式走不通,用rpcclient尝试一下猜解爆破方式,进入命令行
1 | rpcclient -U '' -N 192.168.0.158 |
[!NOTE]
rpcclient实验组图
这里1000比较碰巧,为了减少痕迹,可利用rpcclient -U ‘’ -N ip -c “lookupsids S-1-22-1-1000”这样的命令,碰撞可参照如下脚本(码999也有一个用户),在实际的场景中用rpcclient会话为了隐蔽痕迹,做阶段划分适当隐藏自己,伪装管理员该做的,当然后续还有上文提到的enum4linux-ng工具
1 | import os |
四、学习分析
- 某个指令集不会的时候或者没有结果的时候,多用
-h适当的搭配和尝试,这是至关重要的 - 避免工具依赖
声明:
本文只应用与信息安全的交流与学习,此为作者学习记录,请勿利用文章相关技术从事非法活动,如因此产生任何的不良后果与文章作者无关,本文仅供学习参考。










