🚨 Esecuzione di codice in remoto (RCE) non autenticata tramite caricamento file
📌 Panoramica
- Progetto: QloApps
- Repository: https://github.com/Qloapps/QloApps
- Versioni interessate: <= 1.7.0
- Classe di vulnerabilità: Esecuzione di codice in remoto non autenticata
- Gravità: Critica
- CVSS v3.1: (Critica) 9.8 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- CVE ID: CVE-2025-67325
- Scoperto da: Neakk Pornlur
- Data di divulgazione: 2026-01-09
🧩 Descrizione
Il caricamento di file senza restrizioni nella funzionalità di recensione degli hotel in QloApps versioni 1.7.0 e precedenti consente a un utente malintenzionato remoto non autenticato di ottenere esecuzione di codice in remoto.
🎯 Endpoint interessato
/module/qlohotelreview/default
⚠️ Causa principale
La vulnerabilità esiste a causa di:
- Mancata validazione dell'estensione del file.
- I file caricati vengono eseguiti direttamente dal server.
- Nessun controllo di autenticazione o autorizzazione applicato sull'endpoint.
🔥 Impatto
Un exploit riuscito consente a un utente malintenzionato di:
- Eseguire comandi arbitrari del sistema operativo.
- Leggere/scrivere/eliminare file sensibili del server.
- Accedere alle credenziali del database.
- Muoversi verso servizi di rete interni.
- Compromettere completamente il server di hosting.
Questa vulnerabilità porta a una perdita completa di Riservatezza, Integrità e Disponibilità (Triade CIA).
🛠️ Proof of Concept (PoC) su QloApps versione 1.7.0
Servono un id_order valido e un token Ajax per effettuare una richiesta all'endpoint vulnerabile. Per id_order possiamo forzarlo manualmente partendo da 1 oppure creare un account ospite e prenotare una stanza per ottenere questo id_order. Per il token Ajax possiamo ottenerlo da qualsiasi pagina di camera d'hotel.
1. Ottenere il token Ajax
2. Recensire un hotel e caricare la nostra immagine + web shell php ingegnerizzata.
3. Attivare l'esecuzione di codice in remoto
Possiamo trovare la nostra web shell caricata all'indirizzo https://target.com/modules/qlohotelreview/views/img/review/<id_order>/1.php
