Post on: Jul 8, 2025Last edited: Jul 8, 2025
Words 2615Read Time 7 min

type
status
date
slug
summary
tags
category
icon
password
攻击机ip:192.168.108.50 靶机ip: 192.168.108.139
靶机地址:The Planets: Earth

1. 信息收集阶段

端口扫描 (rustscan)

扫描发现三个端口22,80,443
尝试访问80端口和443端口
notion image
没有东西,尝试爆破目录,没有东西

域名发现 (SSL证书检查)

考虑到有443端口,检查 SSL 证书,发现存在域名earth.local
添加到hosts里,尝试访问
notion image
notion image

2. Web应用分析

留言系统分析

这是一个带表单的留言系统,每次提交后,留言会显示在页面下方 <ul> 列表中
尝试输入,发现留言内容已经被加密或编码后显示在网页上,考虑到要我们填写message key可能会出现
使用 message_key 做 AES、DES、XOR 等对称加密
把 key 拼到 message 中做加盐加密
或者直接把key作为口令加密的情况
notion image

XOR加密破解

尝试编辑输入,再用py脚本还原过程,最后判断为XOR加密

密钥提取与利用

知道了加密方式,要尝试还原之前留言框的内容,接下来就要找密钥了,扫描目录,发现了一个admin目录
notion image
notion image
有个登录页面,尝试弱密码和万能密码登录,无果,让他先爆破着
考虑到之前我们查看域名的时候还有个子域名terratest.earth.local
尝试爆破子域名,因为有认证要求所以https
发现一个robots文件,里面写了不允许抓取的文件后缀,将常用的后缀放入字典,扫描以testingnotes为名的文件,最后扫出来个testingnotes.txt
notion image
尝试访问,发现这里给出了留言板的加密算法,那我们前面直接开始猜测明显太早了,应该先找其他提示的,而不是直接尝试还原密码,不过好在不过几次就试出来了
回到这里得出信息
1.terra为管理员用户名
2.testdata.txt 用于测试加密
notion image
尝试访问testdata.txt,发现是段文本,考虑到说用于测试加密所以我们用留言板内容根据xor加密反推一下,因为第三句最长,所以先尝试第三句
成功获取加密密钥earthclimatechangebad4humans
获取密钥后尝试获取其他两句的内容,无果,那直接使用这个结果当密码登录试试

3. 漏洞利用

命令注入

notion image
成功登录并且能完成命令执行,那就上传一个shell,尝试之后发现提示远程连接被禁止,可能进行了过滤或者禁止了 curlwgetnc 等工具访问外部地址或者限制了/dev/tcp,socket的使用
notion image

远程连接限制绕过

尝试写入shell到文件也无效,尝试绕过,神奇的是执行命令nc或者wget并没有显示远程禁止访问,甚至传入不完整的ip地址也不会触发,只有 传入完整的ip地址时才会触发,所以我们可以考虑对IP地址转换
notion image
notion image
成功进入,进行信息收集,发现

4. 权限提升

SUID二进制文件分析

/usr/bin/reset_root 因为这是一个 非标准 SUID 二进制 —— 它不是正常系统里该有的东西
怀疑为管理员的自建工具,而且名字看来和root有关可能是可以重置root的密码或者能切换为root账号
执行一下,看输出说明这个 /usr/bin/reset_root 程序:
  • 是一个自定义的 SUID 程序
  • 它在运行前会检查某些“触发器(triggers)”是否满足
  • 只有当所有 trigger 满足时,才会执行“reset root”的操作(可能提权)
接下来就是找到trigger并满足它,尝试列出程序中的关键词程序

IDA Pro静态分析

可以看到当程序执行成功时会将root的密码重置为Earth,并且虽然没直接写触发器的文件名但给了个重要提示reset_root_3.c这大概率是程序源码文件名,将reset_root程序base64加密后拷贝下来到本机还原,放到ida里看一下
说明一共有 3 个路径名通过 magic_cipher(...) 解密赋值给 name,然后判断这些路径是否存在 只有:
  • strace动态追踪
  • 触发器文件创建 (touch)
也就是 3 个文件都存在,才会执行提权行为,用strace来动态追踪 /usr/bin/reset_root 程序访问哪些文件路径,创建后成功执行,拿到flag
 

Loading...
htb RustyKey

htb RustyKey

htb Voleur

htb Voleur