renaudbako/Web-Exploitation-Scenario-4
GitHub: renaudbako/Web-Exploitation-Scenario-4
一个演示从Web漏洞到Linux权限提升的完整攻击链案例,解决如何在测试环境中复现与学习完整妥协路径的问题。
Stars: 0 | Forks: 0
# Web-Exploitation-Scenario-4
Web 渗透至 Linux 权限提升
# 执行摘要
成功对运行 Joomla 4 实例的 Debian 11 服务器执行了完整链条的安全妥协。攻击路径从未经身份验证的信息泄露开始,最终完全接管服务器的 root 账户,导致敏感的客户采购日志和供应商联系信息被外泄。
# 阶段 1:信息泄露与初始访问
攻击面最初通过 Joomla 4 内容管理系统的版本不匹配被识别。我们利用了 CVE-2023-23752,这是 Joomla API 中的一个严重漏洞,允许未经身份验证访问敏感配置文件。



目标端点:
/api/index.php/v1/config/application?public=true
/api/index.php/v1/users?public=true


泄露的数据:请求成功以明文形式返回了站点配置,揭示了 MySQL/MariaDB 数据库的名称和凭据:
用户:joomla
密码:bL3zgeLGXk8eYP3mtshtUgtc
# 阶段 2:数据库利用与管理员接管
拥有数据库凭据后,我们建立与 MariaDB 实例的连接以操纵用户账户并收集情报。

账户识别:查询 joomla_users 表以识别主要管理员 phantomtech。
凭据跳转:为了绕过破解 BCrypt 哈希的耗时过程,我们执行 SQL 更新以覆盖管理员的哈希值为已知密码。这立即提供了对 /administrator 后端的访问权限。


# 阶段 3:远程代码执行(RCE)
一旦以管理员身份认证,我们从数据库操纵过渡到操作系统交互。

模板注入:我们利用内置的模板编辑器修改 Cassiopeia 模板文件,插入一个 PHP Web Shell。


建立持久性:通过 Web Shell,我们执行了一个基于 Python3 的反向 Shell 有效载荷,连接回我们的本地监听器。这建立了一个以低权限 www-data 用户身份运行的交互式终端会话。

# 阶段 4:权限提升
目标是将我们的访问权限从服务账户提升到 Debian 11 环境中的 root 用户。

能力配置错误:系统审计显示 /usr/bin/php8.3 被赋予了 cap_setuid+ep 能力。这允许 PHP 二进制文件操纵其自身的用户 ID(UID)。

根利用:通过调用 PHP 单行命令将 UID 设置为 0(root),我们生成了一个特权 Bash Shell:
php8.3 -r "posix_setuid(0); system('/bin/bash');"
结果:对服务器拥有完全的管理控制权。
# 修复措施
# 1. 应用程序层面:补丁与输入验证
根本原因是 CMS 版本过时。
更新 Joomla:立即更新到 Joomla 4 的最新版本(或者 5)。特定漏洞 CVE-2023-23752 在 4.2.8 版本中已修复。
禁用未使用的 API:如果 Joomla Web Services API 对业务操作并非必需,请禁用该插件或通过 Web 应用防火墙(WAF)或 .htaccess 规则限制对 /api/ 的访问。
实施 IP 白名单:限制对 /administrator 面板和 API 端点的访问,仅允许已知、可信的 IP 地址。
# 2. 数据库加固
直接访问数据库导致了账户接管和数据外泄。
最小权限原则:如果并非严格必要,joomla 数据库用户不应具备修改系统表或执行全局更新的权限。
外部访问限制:确保 MariaDB 实例配置为仅监听 localhost(127.0.0.1)或私有管理网络。在网络防火墙级别阻止 3306 端口。
凭据轮换:立即更改所有数据库密码。使用复杂且唯一的字符串,且不要以明文形式存储在脚本或文档中。
# 3. 系统层面:安全配置
从低权限用户(www-data)到 root 的跳转是由于一个危险的 Linux 能力。
审计文件能力:移除 PHP 二进制文件的 cap_setuid 能力。很少有正当理由让 Web 解释器具备将其 UID 更改为 root 的能力。
检查命令:getcap -r / 2>/dev/null
移除命令:setcap -r /usr/bin/php8.3
限制模板编辑:禁用通过 Joomla 管理 UI 直接编辑 PHP 文件的能力。可以通过对模板目录设置严格的文件权限(555 或 755)来实现,确保 Web 服务器用户无法写入这些文件。
禁用危险的 PHP 函数:在 php.ini 中,使用 disable_functions 指令来阻止常用于反向 Shell 的函数,例如 system()、exec()、passthru() 和 shell_exec()。
# 4. 监控与检测
文件完整性监控(FIM):使用 Wazuh 或 Aide 等工具监控关键目录(如 /usr/bin/ 和 Joomla 模板文件夹)。这将在 PHP 能力被更改或模板被修改的瞬间提醒管理员。
日志聚合:监控 Web 服务器日志中 API 端点的异常状态码,以及数据库日志中的未经授权的远程连接。
标签:APT 攻击, CISA项目, CVE-2023-23752, Joomla 4, Linux 提权, MariaDB 连接, RCE, SQL 更新提权, Web 渗透, 事件响应, 信息泄露, 协议分析, 反取证, 威胁模拟, 子域名变形, 安全评估, 密码哈希覆盖, 数据库凭证窃取, 无线安全, 未认证访问, 权限提升, 管理员接管, 编程工具, 网络安全审计, 远程代码执行, 逆向工具