Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-22954 — CVE-2022-22954 analyst | Kitploit
Tools/GitHubGitHub/nguyenv1nk/cve-2022-22954
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubnguyenv1nk/cve-2022-22954

CVE-2022-22954

CVE-2022-22954 analyst

Repository anzeigen
vor 4 JahrenNoch 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

Analyse von CVE-2022-22954

Überblick

Workspace ONE Access (ein Modell zur Bereitstellung von Arbeitsbereichen als Dienstleistung) bietet Multi-Faktor-Authentifizierung, Single Sign-On und bedingten Zugriff für SaaS, Web- und mobile Anwendungen. CVE-2022-22954 ist eine Sicherheitslücke durch Serverseitige Template-Injection, die in folgenden Produkten vorhanden ist:

  • VMware Workspace ONE Access (Access): v21.08.0.1, 21.08.0.0, 20.10.0.1, 20.10.0.0
  • VMware Identity Manager (vIDM): v3.3.6, 3.3.5, 3.3.4, und 3.3.3
  • VMware vRealize Automation (vRA): v8.x und 7.6
  • VMware Cloud Foundation (VCF): v4.x und 3.x
  • vRealize Suite Lifecycle Manager: 8.x

Einrichtung

  1. Laden Sie die OVA-Datei von VMware Workspace ONE Access Appliance Version 21.08.0.1 herunter.

  2. Öffnen Sie die Datei mit VMware Workstation. Die virtuelle Maschine muss im NAT-Netzwerk platziert werden.

  3. Konfigurieren Sie unter Networking Properties den Hostnamen (FQDN).

  4. Nach Abschluss der Installation rufen Sie https://{{hostname}}:8443/ auf, um das Passwort für das Anwendungskonto, das SSH-Konto und die Datenbank der Anwendung zu konfigurieren. Die Anwendung läuft unter https://{{hostname}}/.

  5. Melden Sie sich mit dem Benutzer sshuser an der VM an und wechseln Sie zum Root-Konto. Der Anwendungspfad befindet sich unter /opt/vmware/horizon/workspace/. Der Quellcode der Anwendung liegt im Verzeichnis /opt/vmware/horizon/workspace/webapps.

  6. Überprüfen Sie die Datei /opt/vmware/horizon/workspace/bin/setenv.sh. Die Variable JAVA_OPTS kann für das Remote-Debugging konfiguriert werden.

  7. Fügen Sie -agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n zu JAVA_OPTS hinzu und starten Sie den Dienst neu.

    root@kitploit:~
     `systemctl restart horizon-workspace.service`
    

Pfadanalyse

Laden Sie die Hotfix-Datei HW-154129-applyWorkaround.py

In den Schritten wird die Datei templates/customError.ftl aus der Anwendung entfernt.

In der Datei customError.ftl existiert die Funktion eval. Der Fehler Freemarker SSTI kann von hier aus ausgenutzt werden, wenn der Wert von errorObj kontrolliert werden kann.

In der Klasse com.vmware.enusercatalog.ui.web.UiErrorController sehen wir, dass die Funktion handleGenericError den Wert in errorObj über die Variable errorMessage setzt.

Verfolgen Sie die Funktionsaufrufe und den Parameter errorMessage weiter.

Die Funktion handleUnauthorizedError

Die Funktion getErrorPage

Bei den beiden Funktionen sendError und sendUnhandledError wird der Wert von errorMessage aus der Eigenschaft javax.servlet.error.message übernommen.

In der Klasse com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver wird der Eigenschaft javax.servlet.error.message in der Funktion resolverExeption ein Wert zugewiesen.

Die Funktion handleAnyGenericExeption ist mit der Annotation @ExceptionHandler versehen.

In der Klasse com.vmware.endusercatalog.ui.UiApplication befindet sich in den mit @ComponentScan markierten Paketen auch com.vmware.endusercatalog.auth.

=> Ausnahmen (Exceptions) in diesem Paket können von der Funktion handleAnyGenericExeption abgefangen werden.

In com.vmware.endusercatalog.ui.config wird der Interceptor AuthContextPopulationInterceptor mit den Pfaden /ui, /hub-ui, /hub-ui/byob, /logout, /ui/oauth/verify hinzugefügt.

Weiterleitung zur Klasse com.vmware.endusercatalog.auth.interceptor.AuthContextPopulationInterceptor. In der Funktion preHandle empfängt die Anwendung die beiden Parameter deviceUdid und deviceType und ruft die Funktion authContextBuilder auf.

In der Klasse com.vmware.endusercatalog.auth.interceptor.AuthContext tritt die Exception InvalidAuthContextException auf, wenn die Bedingung this.isValidRequest nicht erfüllt ist.

Damit isValidRequest erfüllt ist, müssen die beiden Parameter this.deviceId und this.deviceType entweder beide leer oder beide mit einem Wert versehen sein.

=> Wenn nur einer der beiden Parameter einen Wert erhält, tritt hier ein Fehler auf.

Senden Sie die folgende Anfrage:

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?deviceUdid=111

Es erscheint der Fehler:

root@kitploit:~
An unexpected error occurred while processing request with requestId: {0}.

Zurück in der Funktion com.vmware.endusercatalog.ui.web.WorkspaceOauth2CodeVerificationController stellen wir fest, dass der obige Fehler aufgrund des fehlenden erforderlichen Parameters error auftritt.

root@kitploit:~
    @GetMapping(
        value = {"/ui/oauth/verify"},
        params = {"error"}
    )
    @ApiOperation(
        value = "authorizeError",
        notes = ""
    )
    public void authorizeError(@ApiParam @RequestParam String error, @ApiParam @RequestParam(name = "error_description") String errorDescription, @ApiParam @RequestParam(defaultValue = "/admin/") String state) {
        LOGGER.debug("Failed to obtain authorization code due to {}:{} received for {}", new Object[]{error, errorDescription, state});
        throw new AuthorizationCodeFailedRetrievalException(new Object[]{error, state});
    }

Senden Sie erneut die Anfrage:

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?error=&deviceUdid=111abc

Der Wert von deviceUdid erscheint in der Antwort.

Fügen Sie einen Parameter ein, der einen SSTI-Fehler von Freemarker auslöst.

Senden Sie die Anfrage mit dem Wert:

root@kitploit:~
deviceUdid=${"freemarker.template.utility.Execute"?new()("cat /etc/passwd")}

EXPLOIT

REFERENZLINKS

  • https://kb.vmware.com/s/article/88099
  • https://github.com/DrorDvash/CVE-2022-22954_VMware_PoC/
  • https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection
Tool herunterladen