HackTheBox Era Write-up
本文最后更新于 2026年3月12日 下午
一、靶场详情
靶场名称:
Era
靶场地址:
https://app.hackthebox.com/machines/Era
靶场环境连接说明:
演示为 HackTheBox 平台在线靶机,需通过 OpenVPN 客户端连接平台提供的 VPN 环境才能访问靶机。注意:平台新发布的靶机可以免费练习,而历史靶机则需要开通会员才能使用。还需要注意连接 HackTheBox 平台 VPN 需要挂载代理,具体方式可参考之前的历史文章或留言。
二、思路总结
突破边界(获取用户旗帜):
file 子域目录枚举 –> register.php 注册页面,注册登录后台 –> 上传文件,下载文件,枚举下载 ID,得到网站源码 –> 网站源码数据库文件,得到管理员用户名和 yuri、eric 用户密码 –> 普通用户后台重置管理员登录安全问题,登录管理员后台 –> 代码审计,download.php 管理员测试接口 fopen 函数可使用 ssh2 伪协议实现任意命令执行 –> 获取 yuri、eric 用户权限
代码审计、php fopen 函数执行 ssh2 伪协议
权限提升(获取管理员旗帜):
eric 用户 shell(属于 devs 组) –> 发现/opt/AV/periodic-checks/monitor 程序权限问题,pspy 发现定时任务 –> 替换 monitor 程序,查看日志文件 –> objcopy 提取 monitor 程序特征码,编译 c 语言反弹 shell,objcopy 导入提取的特征码 –> 上传反弹 shell –> root 用户权限
objcopy 提取导入可执行程序特征码
三、靶场攻击演示
3.1 靶场信息收集
使用 nmap 对靶机进行端口扫描。
TCP 端口扫描:
1 | |
UDP 端口扫描:未发现可利用的端口。
1 | |
继续使用 nmap 对已开放端口的服务进行信息收集。
TCP 服务信息搜集:
1 | |
由此得出结论:
系统为 Linux 环境,开放有 HTTP、FTP 服务,接下来进行逐个端口排查。
3.2 渗透测试突破边界(获取用户旗帜)
3.2.1 子域名枚举
根据 nmap 扫描结果,需在 kali 配置靶机域名解析。
1 | |
访问:http://tera.htb,页面未发现有价值信息,也不存在交互功能模块。

使用 ffuf 枚举网站子域名,发现 file 子域系统。
1 | |

将 file 子域名添加至靶机 hosts 文件。
1 | |
访问子域名系统,发现系统存在多个交互模块,登录模块可使用账号密码和用户安全问题登录,查看和上传文件模块仅允许登录后访问。

3.2.2 目录遍历、后台下载接口文件枚举
测试过程未发现可利用漏洞,紧接着使用 feroxbuster 进行目录枚举,发现系统存在 register.php 注册页面。
1 | |

在注册页面注册任意用户登录后台。


测试后台上传功能时,成功上传后系统会显示下载链接,访问下载链接可下载对应文件,当更改 id 再次访问时,系统提示不存在该文件。



通过更换不同id值,尝试枚举历史上传文件。首先使用 python 输出一段 1-10000 数字列表,将其保存输出保存至文本中。
1 | |
1 | |
使用 ffuf 枚举历史文件,注意:需要添加 cookie,可得到两个下载链接。
1 | |

访问下载链接将文件下载至本地。
1 | |


3.2.3 网站源码数据库文件泄漏用户名、密码,hashcat 破解
解压下载的 zip 文件,其中 site-backup-30-08-24.zip 为网站源码,signing.zip 为证书私钥文件,并在源码目录发现了 sqlite 数据库文件。

使用 sqlite3 连接数据库,发现了 user 和 files 表,其中 user 表存储了用户名和加密的密码,files 表存储了上传的文件。
1 | |

将用户名和密码保存至文本中,使用 hashcat 破解,成功破解了 eric 和 yuri 用户密码,其余未能破解。
1 | |
1 | |

1 | |
使用破解的密码登录 web 系统,功能模块和注册的普通用户基本一致,利用该密码登录系统 ftp 服务也没有有价值发现,接下来继续分析网站源码文件。
3.2.4 重置管理员安全问题,代码审计,利用 download.php fopen 模块+SSH2 伪协议进行任意命令执行
在 download.php 文件发现利用管理员权限可使用 php fopen 函数读取文件。

查阅 php 官方文档,发现 fopen 函数支持多个伪协议。
1 | |



我们上面已经得到了两个用户密码,如果可以得到 web 管理员权限,可尝试利用 download.php 文件使用 php ssh2 伪协议执行系统命令。
web 后台除了使用用户名密码登录还可通过安全问题登录,而注册登录的用户后台可修改任意用户安全问题,在 sqlite 数据库得知管理员用户为 admin_ef01cab31aa,可使用注册的用户修改管理员安全问题。

使用修改后的管理员安全问题成功登录后台。


分析 download.php 源码参数,需要满足以下要求:
1、id 参数需在数据库可查询到:
1 | |
2、dl 参数值为 true:
1 | |
3、show 参数值为 true 且$_SESSION[‘erauser’]值为 1:
1 | |
4、format 参数包含://,提示伪协议:
1 | |
以上条件均满足后,会对 format 值和 id 查询到文件名进行拼接,然后使用 fopen 打开,可构建如下 payload 进行命令执行,注意使用管理员 session。
1 | |
在 kali 使用 nc 监听 1234 端口,发送以上 payload 成功获取到 eric 用户 shell,这里也可以尝试另外一个用户,也可以成功获取反弹 shell。
1 | |


为了方便操作,将 shell 提升为交互式 shell。
1 | |

3.2.5 用户旗帜获取

3.3 提权获取系统最高权限(获取管理员旗帜)
3.3.1 Monitor 程序替换提权至 root 权限
检索系统 sudo、suid 等权限未发现可提权信息,继续排查文件目录时,在/opt/AV/periodic-checks 目录发现可疑文件。可得到如下分析结果:
- 当前用户为:eric,属于 devs 组
- devs 组对/opt/AV/periodic-checks 目录具有读写权限
- /opt/AV/periodic-checks 目录的 monitor 可执行程序属于 root 用户和 devs 组,该文件的所属用户和组均对它具有读写权限

上传 pspy 分析系统进程,发现系统定时执行/opt/AV/periodic-checks/monitor 程序,由于当前用户对该程序具有读写权限,可尝试替换该程序实现反弹 shell。

尝试直接修改 monitor 程序为反弹 shell 指令,日志中 objcopy 提示格式不满足,可能存在校验,需匹配文件特征码。
1 | |

将 monitor 下载至本地,使用 objcopy 提取特征码,然后在 revshells 网站复制 C 语言的反弹 shell,使用 gcc 编译,最后利用 objcopy 写入提取的特征码。
1 | |

1 | |

编译反弹 shell 并写入特征码。
1 | |

kali 使用 nc 监听 1234 端口,上传 shell 文件至靶机,注意保存为 monitor。
1 | |

成功得到 root 用户 shell。

3.3.2 管理员旗帜获取

Thanks
🎓 新手福利|Hack The Box 学院推荐
🧑💻 如果您是初学者,强烈推荐前往 HTB Academy 学习入门课程!
📚 HTB Academy 提供互动式教学,从网络基础到攻防实战,帮助您系统成长、逐步进阶。
📌 建议优先完成模块:「Introduction to Academy」
✅ 掌握核心概念,🔓 解锁更多高阶内容与实战功能!
📝 首次访问需注册账号,支持邮箱注册或 GitHub / Google 快速登录。
🚀 点击下方专属邀请链接 🔗,与我一起踏上网络安全学习之旅 👉:https://referral.hackthebox.com/mzCXyui


如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡
最后,祝您生活愉快!🌞✨