TopGit
Đánh giá repo GitHub

SSRFmap: Công Cụ Fuzzer và Khai Thác SSRF

swisskyrepo/SSRFmap
STopGit review image for swisskyrepo/SSRFmap
Review by Topgit.dev for swisskyrepo/SSRFmap, with GitHub repository stats and README context.
Nhận định nhanh

SSRFmap là một framework dòng lệnh viết bằng Python, fuzz một parameter trong request qua hơn 20 module khai thác để biến một lỗ hổng SSRF đã xác nhận thành việc đọc file, lấy cloud metadata, hoặc mở reverse shell. Hãy dùng nó khi bạn đã tìm ra parameter dính lỗi và muốn khai thác nhanh thay vì tự viết payload gopher. Bỏ qua nếu bạn vẫn đang trong giai đoạn tìm lỗ hổng — SSRFmap khai thác, chứ không phát hiện.

Sao
★ 3.6k
Fork
⑂ 574
Ngôn ngữ
Python
Giấy phép
MIT
Chủ đề
Security
Cập nhật
Aug 2026
Trang chủ
—
GitHub

SSRFmap Là Gì?

SSRFmap là framework mã nguồn mở viết bằng Python, được xây dựng để tự động hoá việc khai thác Server-Side Request Forgery sau khi đã tìm ra parameter dính lỗi. Nó nhận một file HTTP request đã lưu, thường export từ Burp Suite, cùng tên parameter cần fuzz, rồi chạy parameter đó qua một thư viện module nhắm vào các dịch vụ backend cụ thể như Redis, MySQL, Zabbix, và các endpoint cloud metadata trên AWS, GCP, Alibaba, DigitalOcean.

Module Khai Thác và Khả Năng

  • ✓21 module riêng cho từng dịch vụ trong một framework, gồm axfr (DNS zone transfer), fastcgi, redis, và RCE hoặc command execution cho mysql/postgres, một module github cho GitHub Enterprise RCE dưới bản 2.8.7, zabbix, bruteforce tomcat, memcache, smbhash (xác thực SMB qua UNC path), và infoleak docker qua API.
  • ✓Các module đọc cloud metadata cho bốn provider — alibaba, aws, gce, và digitalocean — lấy các file như instance metadata và user-data.
  • ✓portscan quét top 8000 port trên host mục tiêu, còn networkscan chạy HTTP ping sweep khắp mạng có thể tiếp cận khi SSRF cho bạn một điểm bám.
  • ✓readfiles đọc file tuỳ ý trên host dính lỗi, ví dụ /etc/passwd, và lưu kết quả lấy được vào loot/<target>/.
  • ✓Xử lý reverse shell được tích hợp sẵn: -l khởi động một listener cục bộ, còn --lhost/--lport tạo payload connect-back theo kiểu Metasploit, được README minh hoạ bằng ví dụ nhắm vào Redis.
  • ✓Marker *FUZZ* cho phép chèn payload vào một phần giá trị của parameter thay vì thay toàn bộ, hoạt động ở GET param, header, body POST/PUT, JSON, XML, và trường multipart form.
  • ✓--level (1-5, mặc định 1) thay đổi cách encode payload — ví dụ chính README viết lại 127.0.0.1 thành [::] hoặc 0000: — nhằm vượt qua bộ lọc WAF hoặc IDS.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Hướng Dẫn Cài Đặt

Clone repo rồi cài bằng uv: `git clone https://github.com/swisskyrepo/SSRFmap`, `cd SSRFmap/`, `uv sync --frozen`, sau đó xác nhận hoạt động bằng `uv run python ssrfmap.py --help`. README cũng có hướng dẫn Docker: `docker build -t ssrfmap .`, rồi `docker run --rm ssrfmap ssrfmap.py --help`, chỉ mount những request file cần dùng lúc chạy, ví dụ `-v "$(pwd)/examples:/requests:ro"`. Không có gói PyPI nào được ghi trong tài liệu — clone repo GitHub là con đường cài đặt duy nhất mà README mô tả.

Sử Dụng Cơ Bản và Nâng Cao

SSRFmap cần hai đầu vào: một file HTTP request đã lưu (export từ Burp Suite là ổn) qua -r, và parameter cần fuzz qua -p. Chỉ định -m với một hoặc nhiều module cách nhau bằng dấu phẩy, ví dụ `ssrfmap.py -r examples/request.txt -p url -m readfiles,portscan`. Muốn nhắm vào một header thay vì parameter trong body, truyền thẳng tên header đó cho -p, ví dụ -p X-Custom-Header. Khi giá trị của parameter cần giữ gần như nguyên vẹn, đặt marker *FUZZ* đúng vị trí cần chèn thay vì để SSRFmap thay toàn bộ giá trị — marker này hoạt động ở GET param, header, body POST/PUT, JSON, XML, và trường multipart. Với reverse shell, chẳng hạn qua module redis, đặt --lhost/--lport rồi thêm -l để khởi động listener cục bộ. --ssl kết nối tới target HTTPS mà không xác minh chứng chỉ, --uagent đặt User-Agent tuỳ chỉnh, --proxy định tuyến traffic qua thứ như một Burp listener cục bộ, và --level (1-5, mặc định 1) mở rộng phạm vi các cách encode payload được thử trước bộ lọc WAF hoặc IDS. README cũng ghi lại `uv run pytest` và `uv run ruff check .` để chạy bộ test và lint check của chính SSRFmap.

Điểm mạnh

  • ✓21 module khai thác phủ một dải backend rộng trong một framework duy nhất — DNS zone transfer, nhiều mục tiêu RCE, bốn provider cloud metadata, đọc file tuỳ ý, và quét cả host lẫn mạng.
  • ✓Marker *FUZZ* chèn payload vào một phần giá trị của parameter ở GET param, header, body POST/PUT, JSON, XML, và trường multipart, thay vì lúc nào cũng chỉ thay toàn bộ giá trị.
  • ✓--level cho sẵn một cách thay đổi encode payload khi gặp WAF hay IDS, thay vì bạn phải tự xoay từng dạng IP.
  • ✓Xử lý reverse shell (-l, --lhost, --lport) đi theo đúng hình dạng của Metasploit, nên workflow khá quen nếu bạn từng dùng công cụ đó.
  • ✓Giấy phép MIT, cộng với hướng dẫn Docker được ghi rõ, nên bạn không bắt buộc phải cài uv và Python trên máy để chạy nó.

Giới Hạn Hiện Tại và Roadmap

  • △SSRFmap khai thác một SSRF đã được xác nhận; nó không tự phát hiện hay quét ra lỗ hổng, nên bạn cần công cụ khác, hoặc kiểm thử thủ công, để tìm parameter dính lỗi trước.
  • △Danh sách module nhắm vào các dịch vụ cụ thể đã biết — Redis, MySQL, Zabbix, Tomcat, bốn provider cloud metadata, và tương tự — nên một target chạy backend không được hỗ trợ sẽ không có module tương ứng.
  • △Roadmap trong chính README liệt kê khai thác Redis PHP và một module HTTP/Jenkins là chưa được xây dựng, nên phần hỗ trợ HTTP smuggling qua gopher vẫn chưa hoàn chỉnh.
  • △Không có số phiên bản, ngày phát hành, hay changelog nào được ghi lại, nên khó biết một bản checkout cụ thể được cập nhật gần đây tới đâu nếu không đọc trực tiếp git history.
  • △Việc thiết lập đòi hỏi uv và một request file kiểu Burp đã capture sẵn; không có chế độ tự khám phá lỗ hổng, nên bạn cần biết trước cách capture và định dạng request đó.

Công Cụ Truyền Cảm Hứng Cho SSRFmap

Gopherus — công cụ tạo payload gopher:// cho các dịch vụ như MySQL và Redis; README của SSRFmap liệt kê nó trong số các dự án truyền cảm hứng cho mình.SSRF-Testing (cujanovic) — một bộ sưu tập payload test SSRF mà README của SSRFmap cũng ghi nhận là nguồn cảm hứng cho cách tiếp cận của chính nó.Burp Suite — công cụ mà chính README của SSRFmap dùng để tạo ra các request file thô mà SSRFmap nhận vào qua -r; bạn vẫn cần thứ như vậy để capture request trước khi fuzz.

Câu Hỏi Thường Gặp

Server-Side Request Forgery (SSRF) là gì?

Server-Side Request Forgery là lỗ hổng khiến kẻ tấn công lừa server tự thực hiện request thay mình, thường để chạm tới các service nội bộ mà kẻ tấn công không thể truy cập trực tiếp. SSRFmap được xây dựng riêng để tự động hoá việc khai thác nhóm lỗ hổng này.

SSRFmap xử lý HTTP request như thế nào?

SSRFmap nhận một file HTTP request đã lưu, chẳng hạn export từ Burp Suite, cùng tên parameter cần fuzz. Nó chèn payload vào parameter đó — thay toàn bộ giá trị, hoặc chỉ một phần nếu dùng marker *FUZZ* — ở GET param, header, body POST/PUT, JSON, XML, và trường multipart.

SSRFmap có thể nhắm khai thác những dịch vụ nào?

SSRFmap có module cho các dịch vụ gồm Redis, MySQL, PostgreSQL, Zabbix, Tomcat, FastCGI, GitHub Enterprise (RCE dưới bản 2.8.7), Docker, SMTP, Memcache, và SMB, cùng các endpoint cloud metadata trên AWS, GCP, Alibaba, và DigitalOcean.

SSRFmap có giúp bypass tường lửa ứng dụng web (WAF) không?

Tham số --level của SSRFmap, từ 1 tới 5 với mặc định là 1, mở rộng phạm vi các biến thể và cách encode payload được thử, chẳng hạn viết lại 127.0.0.1 thành [::] hoặc 0000:, nhằm vượt qua bộ lọc WAF hoặc IDS phía trước target.

SSRFmap có tương thích với target dùng HTTPS không?

SSRFmap hỗ trợ target HTTPS qua tham số --ssl, kết nối mà không xác minh chứng chỉ — hữu ích với các target dùng chứng chỉ tự ký hoặc không thể xác minh, theo README.

SSRFmap dùng giấy phép nào?

SSRFmap được phát hành theo giấy phép MIT, như liệt kê trên repository GitHub của nó.

Vấn đề SSRFmap giải quyết

Khai thác một lỗ hổng SSRF đã xác nhận, đi xa hơn một proof of concept đơn giản, thường đòi hỏi tự tay xây payload cho bất cứ thứ gì đang lắng nghe phía sau server dính lỗi — một instance Redis, một endpoint cloud metadata, một service nội bộ — rồi làm lại việc đó ở mỗi lần kiểm thử. README của SSRFmap đóng khung lý do tồn tại của công cụ quanh đúng khoảng trống đó: biến một request đã capture và tên parameter thành khai thác tự động qua một thư viện module riêng cho từng backend, thay vì payload gopher viết tay từng lần.

Trường hợp sử dụng tốt nhất

  • •Biến một phát hiện SSRF đã xác nhận trong pentest được uỷ quyền thành tác động cụ thể — đọc /etc/passwd, lấy metadata instance của AWS, GCP, Alibaba, hoặc DigitalOcean, hoặc mở reverse shell trên backend Redis — mà không phải tự viết payload khai thác.
  • •Các thử thách CTF giấu một service nội bộ phía sau parameter dính SSRF; repo mang topic ctf và hacktoberfest trong số các topic của chính nó.
  • •Kiểm tra xem WAF hay IDS phía trước target có thực sự chặn payload SSRF hay không, dùng --level để xoay vòng qua các cách encode như 127.0.0.1 sang [::] sang 0000:.
  • •Vẽ ra những gì một server dính lỗi có thể tiếp cận trong nội bộ bằng module portscan và networkscan khi đã có SSRF nhưng không có truy cập mạng trực tiếp vào target.

Ai nên dùng — và ai nên bỏ qua

Hãy thử SSRFmap nếu bạn làm pentest được uỷ quyền hoặc CTF, đã phát hiện hoặc nghi ngờ mạnh một parameter dính SSRF, và muốn đi xa hơn việc xác nhận để đọc file, lấy cloud metadata, hoặc mở shell thật sự mà không tự viết payload gopher. Bỏ qua nếu bạn vẫn đang ở giai đoạn tìm lỗ hổng và cần một scanner lỗ hổng web tổng quát, hoặc nếu target của bạn không khớp với bất kỳ module backend nào được tài liệu hoá — SSRFmap sẽ không tự bịa ra đường khai thác cho một dịch vụ mà nó chưa có module.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repository GitHub swisskyrepo/SSRFmap và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

SSRFmap có đáng để bạn bỏ thời gian?

ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về SSRFmap.

GitHub