rtexit-method 0.1.0 → 0.1.2

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 (224) hide show
  1. package/package.json +9 -7
  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/commands/install.js +0 -1
  202. package/tools/installer/lib/asset-manifest.js +10 -5
  203. package/tools/installer/lib/banner.js +14 -6
  204. package/tools/installer/lib/copy-assets.js +5 -2
  205. package/tools/installer/lib/prompts.js +1 -11
  206. package/tools/installer/lib/write-config.js +8 -2
  207. /package/{_rtexit → packaged-assets/_rtexit}/config.toml +0 -0
  208. /package/{_rtexit → packaged-assets/_rtexit}/config.user.toml +0 -0
  209. /package/{_rtexit → packaged-assets/_rtexit}/custom/config.toml +0 -0
  210. /package/{_rtexit → packaged-assets/_rtexit}/scripts/autodoc_engine.py +0 -0
  211. /package/{_rtexit → packaged-assets/_rtexit}/scripts/finding_tracker.py +0 -0
  212. /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_config.py +0 -0
  213. /package/{_rtexit → packaged-assets/_rtexit}/scripts/resolve_customization.py +0 -0
  214. /package/{resources → packaged-assets/resources}/certifications.md +0 -0
  215. /package/{resources → packaged-assets/resources}/payloads.md +0 -0
  216. /package/{resources → packaged-assets/resources}/tools.md +0 -0
  217. /package/{resources → packaged-assets/resources}/wordlists.md +0 -0
  218. /package/{templates → packaged-assets/templates}/attack-chain-template.md +0 -0
  219. /package/{templates → packaged-assets/templates}/executive-report-template.md +0 -0
  220. /package/{templates → packaged-assets/templates}/executive-report.md +0 -0
  221. /package/{templates → packaged-assets/templates}/finding-template.md +0 -0
  222. /package/{templates → packaged-assets/templates}/remediation-roadmap.md +0 -0
  223. /package/{templates → packaged-assets/templates}/sead-template.md +0 -0
  224. /package/{templates → packaged-assets/templates}/technical-report.md +0 -0
@@ -0,0 +1,665 @@
1
+ ---
2
+ name: rt-remediation-roadmap
3
+ description: "Build prioritized remediation roadmap from all findings. Groups by timeline: Critical (0-24h), High (1-7 days), Medium (1-30 days), Low (1-3 months). Includes effort estimates (hours), responsible team (Dev/Ops/Security/Management), verification steps, and business risk reduction percentage per group. Creates executive-friendly Gantt-style timeline."
4
+ ---
5
+
6
+ # rt-remediation-roadmap — Skill Guide
7
+
8
+ ## 1. Overview and Purpose
9
+
10
+ The `rt-remediation-roadmap` skill transforms a completed red team engagement's raw findings into a structured, actionable remediation plan that both technical teams and executive leadership can act on immediately.
11
+
12
+ ### Where It Fits in the Engagement Lifecycle
13
+
14
+ ```
15
+ Reconnaissance → Exploitation → Lateral Movement → Exfiltration
16
+ ↓ ↓ ↓ ↓
17
+ finding_tracker.py collects all findings throughout engagement
18
+
19
+ [Engagement Close-Out]
20
+
21
+ rt-remediation-roadmap ←── YOU ARE HERE
22
+
23
+ autodoc_engine.py renders final deliverable
24
+
25
+ Executive Briefing / Client Handoff
26
+ ```
27
+
28
+ This skill is the final technical step before report delivery. It answers the client's most pressing question: "We have 47 findings — where do we start, who does what, and how long will it take?"
29
+
30
+ ### What This Skill Produces
31
+
32
+ - A timeline-bucketed remediation plan (Critical / High / Medium / Low)
33
+ - Per-finding effort estimates in engineer-hours
34
+ - Responsible team assignment (Dev / Ops / Security / Management)
35
+ - Verification steps for each remediation item
36
+ - Business risk reduction percentage per timeline bucket
37
+ - An executive Gantt-style timeline visual (ASCII or Markdown table)
38
+ - Integration-ready JSON/YAML output for finding_tracker.py status tracking
39
+
40
+ ---
41
+
42
+ ## 2. Step-by-Step Workflow
43
+
44
+ ### Step 1 — Pull Findings from finding_tracker.py
45
+
46
+ Before building the roadmap, export all open findings from the tracker:
47
+
48
+ ```bash
49
+ python finding_tracker.py export --status open --format json --out findings_export.json
50
+ ```
51
+
52
+ Review the export to confirm:
53
+ - Every finding has a CVSS score or manual severity rating
54
+ - Each finding has an affected asset tag (e.g., `web-app`, `internal-network`, `ad-domain`)
55
+ - No duplicate finding IDs exist
56
+
57
+ If findings are missing severity scores, assign them now using the tracker's update command:
58
+
59
+ ```bash
60
+ python finding_tracker.py update --id RT-2025-0041 --severity critical --cvss 9.8
61
+ ```
62
+
63
+ ### Step 2 — Triage and Bucket Findings
64
+
65
+ Apply the following bucketing criteria. Use business context to override pure CVSS scores when warranted (e.g., a CVSS 7.5 finding on a PCI-scoped system may warrant Critical treatment).
66
+
67
+ | Bucket | Default Trigger | Timeline |
68
+ |----------|------------------------------------------|------------|
69
+ | Critical | CVSS >= 9.0 OR active exploitation path | 0–24 hours |
70
+ | High | CVSS 7.0–8.9 OR significant data access | 1–7 days |
71
+ | Medium | CVSS 4.0–6.9 OR hardening gap | 1–30 days |
72
+ | Low | CVSS < 4.0 OR informational / best practice | 1–3 months |
73
+
74
+ Document any overrides with a brief justification in the `override_reason` field.
75
+
76
+ ### Step 3 — Estimate Remediation Effort
77
+
78
+ For each finding, assign an effort estimate in engineer-hours using this reference table:
79
+
80
+ | Finding Type | Low Estimate | High Estimate |
81
+ |---------------------------------------|-------------|---------------|
82
+ | Patch/version update (single system) | 1h | 4h |
83
+ | Patch/version update (fleet rollout) | 4h | 16h |
84
+ | Configuration change (single system) | 0.5h | 2h |
85
+ | Configuration change (policy/GPO) | 2h | 8h |
86
+ | Code fix (input validation) | 2h | 8h |
87
+ | Code fix (auth/session logic) | 4h | 24h |
88
+ | Architecture change (network segment) | 16h | 80h |
89
+ | Process/policy creation | 4h | 16h |
90
+ | Security tooling deployment | 8h | 40h |
91
+
92
+ Always provide a range and note dependencies (e.g., "requires change freeze window").
93
+
94
+ ### Step 4 — Assign Responsible Teams
95
+
96
+ Use these standard team labels. Assign primary and, where needed, secondary teams:
97
+
98
+ - **Dev** — Application development team; owns code-level fixes
99
+ - **Ops** — Infrastructure / SRE / DevOps; owns system configuration and patching
100
+ - **Security** — Internal security team; owns tooling, policy, and verification
101
+ - **Management** — Executive sponsor; owns resource allocation and policy sign-off
102
+
103
+ A finding may have multiple teams listed (e.g., `Dev + Security` for a vulnerability requiring both a code fix and WAF rule).
104
+
105
+ ### Step 5 — Write Verification Steps
106
+
107
+ Each remediation item must include specific, testable verification steps. Generic statements like "verify the fix was applied" are not acceptable. Write steps an analyst can run on Day 1 after remediation:
108
+
109
+ Good example:
110
+ ```
111
+ Verification for RT-2025-0038 (SQLi on /api/orders endpoint):
112
+ 1. Run sqlmap against https://orders.acme.com/api/orders?id=1 with tamper=space2comment
113
+ 2. Confirm all payloads return HTTP 400 with no database error strings in response body
114
+ 3. Review application WAF logs to confirm rule RT-SQL-001 is triggering on test payloads
115
+ 4. Run DAST scan profile "OWASP-SQLi" and confirm zero findings on endpoint
116
+ ```
117
+
118
+ ### Step 6 — Calculate Business Risk Reduction
119
+
120
+ Assign a business risk reduction percentage to each timeline bucket. This represents the estimated reduction in overall organizational risk exposure if all items in that bucket are remediated.
121
+
122
+ Use this formula as a starting point:
123
+
124
+ ```
125
+ Risk Reduction % = (Sum of CVSS scores in bucket / Sum of all CVSS scores) * exploitability_weight
126
+ ```
127
+
128
+ Where `exploitability_weight` is:
129
+ - 1.3x if the engagement demonstrated active exploitation of findings in this bucket
130
+ - 1.0x for theoretical/undemonstrated findings
131
+ - 0.7x for informational/hardening items
132
+
133
+ Round to the nearest 5% for executive readability. These numbers will be challenged — document your methodology.
134
+
135
+ ### Step 7 — Build the Gantt Timeline
136
+
137
+ Create the executive-facing Gantt table using the template in Section 3. The timeline must be calendar-anchored to the report delivery date, not relative ("Week 1" is ambiguous — use "June 2–6, 2025").
138
+
139
+ ### Step 8 — Write to autodoc_engine.py
140
+
141
+ Pass the completed roadmap data to the autodoc engine for rendering into the final report:
142
+
143
+ ```bash
144
+ python autodoc_engine.py render \
145
+ --template remediation_roadmap \
146
+ --data roadmap_data.json \
147
+ --out reports/acme-corp-remediation-roadmap.md \
148
+ --client "Acme Corporation" \
149
+ --engagement-id RT-2025-Q2-ACME
150
+ ```
151
+
152
+ Then update finding_tracker.py with roadmap assignments:
153
+
154
+ ```bash
155
+ python finding_tracker.py bulk-update \
156
+ --from-roadmap roadmap_data.json \
157
+ --set-status "remediation_assigned"
158
+ ```
159
+
160
+ ---
161
+
162
+ ## 3. Templates with Example Content
163
+
164
+ ### 3.1 Roadmap Data JSON (input to autodoc_engine.py)
165
+
166
+ ```json
167
+ {
168
+ "engagement_id": "RT-2025-Q2-ACME",
169
+ "client": "Acme Corporation",
170
+ "report_delivery_date": "2025-06-01",
171
+ "analyst": "M. Hegazy",
172
+ "total_findings": 18,
173
+ "business_risk_reduction_if_all_remediated": "94%",
174
+ "buckets": [
175
+ {
176
+ "label": "Critical",
177
+ "timeline": "0–24 hours",
178
+ "deadline": "2025-06-02",
179
+ "risk_reduction_pct": 42,
180
+ "findings": [
181
+ {
182
+ "id": "RT-2025-0001",
183
+ "title": "Domain Admin via AS-REP Roasting — svc_backup account",
184
+ "cvss": 9.8,
185
+ "asset": "ad.acme.internal",
186
+ "affected_systems": ["DC01.acme.internal", "DC02.acme.internal"],
187
+ "effort_hours": "2–4",
188
+ "primary_team": "Ops",
189
+ "secondary_team": "Security",
190
+ "override_reason": null,
191
+ "remediation_steps": [
192
+ "Enable Kerberos pre-authentication on svc_backup account in Active Directory Users and Computers",
193
+ "Audit all service accounts for DONT_REQUIRE_PREAUTH flag: Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true}",
194
+ "Reset svc_backup password to 25+ character random string and store in PAM vault",
195
+ "Review svc_backup permissions — principle of least privilege audit required"
196
+ ],
197
+ "verification_steps": [
198
+ "Run: impacket-GetNPUsers acme.internal/ -usersfile service_accounts.txt -no-pass",
199
+ "Confirm svc_backup no longer returns AS-REP hash",
200
+ "Verify EventID 4768 logs show pre-auth required for all service accounts"
201
+ ]
202
+ },
203
+ {
204
+ "id": "RT-2025-0002",
205
+ "title": "Unauthenticated RCE — Apache Struts 2.5.28 (CVE-2023-50164)",
206
+ "cvss": 9.8,
207
+ "asset": "erp.acme.com",
208
+ "affected_systems": ["erp.acme.com (10.20.1.45)"],
209
+ "effort_hours": "1–2",
210
+ "primary_team": "Ops",
211
+ "secondary_team": "Dev",
212
+ "override_reason": null,
213
+ "remediation_steps": [
214
+ "Upgrade Apache Struts to 2.5.33 or 6.3.0.2 immediately",
215
+ "Deploy WAF rule to block multipart content-type path traversal patterns as interim control",
216
+ "Isolate erp.acme.com from internal network segments until patch is confirmed"
217
+ ],
218
+ "verification_steps": [
219
+ "Confirm Struts version: curl -s https://erp.acme.com/struts2-showcase/ | grep 'Struts'",
220
+ "Run PoC script RT-CVE-2023-50164-check.py against patched host — must return 'NOT VULNERABLE'",
221
+ "Verify WAF logs show blocked multipart traversal attempts"
222
+ ]
223
+ }
224
+ ]
225
+ },
226
+ {
227
+ "label": "High",
228
+ "timeline": "1–7 days",
229
+ "deadline": "2025-06-08",
230
+ "risk_reduction_pct": 31,
231
+ "findings": [
232
+ {
233
+ "id": "RT-2025-0005",
234
+ "title": "Kerberoastable Service Account with Weak Password — svc_sql",
235
+ "cvss": 8.1,
236
+ "asset": "ad.acme.internal",
237
+ "affected_systems": ["SQL01.acme.internal"],
238
+ "effort_hours": "1–3",
239
+ "primary_team": "Ops",
240
+ "secondary_team": "Security",
241
+ "override_reason": null,
242
+ "remediation_steps": [
243
+ "Rotate svc_sql password to 30+ character random string",
244
+ "Convert svc_sql to Managed Service Account (gMSA) to eliminate manual password management",
245
+ "Audit all SPN-registered accounts: Get-ADUser -Filter {ServicePrincipalName -ne '$null'}"
246
+ ],
247
+ "verification_steps": [
248
+ "Run: impacket-GetUserSPNs acme.internal/analyst:password -dc-ip 10.10.1.10",
249
+ "Attempt offline crack of new svc_sql hash with rockyou.txt — should not crack within 24h",
250
+ "Confirm gMSA conversion in AD: Get-ADServiceAccount -Identity svc_sql"
251
+ ]
252
+ },
253
+ {
254
+ "id": "RT-2025-0006",
255
+ "title": "SSRF in Document Preview Service — Internal AWS Metadata Accessible",
256
+ "cvss": 7.7,
257
+ "asset": "app.acme.com",
258
+ "affected_systems": ["app.acme.com /api/v2/preview"],
259
+ "effort_hours": "4–8",
260
+ "primary_team": "Dev",
261
+ "secondary_team": "Security",
262
+ "override_reason": null,
263
+ "remediation_steps": [
264
+ "Implement allowlist-based URL validation for preview endpoint — deny all private RFC1918 ranges and 169.254.0.0/16",
265
+ "Deploy IMDSv2 on all EC2 instances to require session tokens for metadata access",
266
+ "Add egress filtering on preview service container to block metadata IP 169.254.169.254"
267
+ ],
268
+ "verification_steps": [
269
+ "Submit request: POST /api/v2/preview with url=http://169.254.169.254/latest/meta-data/",
270
+ "Confirm response is HTTP 400 with error 'URL not permitted'",
271
+ "Verify IMDSv2 enforcement: aws ec2 describe-instances --query 'HttpTokens' must return 'required'"
272
+ ]
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ "label": "Medium",
278
+ "timeline": "1–30 days",
279
+ "deadline": "2025-07-01",
280
+ "risk_reduction_pct": 16,
281
+ "findings": [
282
+ {
283
+ "id": "RT-2025-0009",
284
+ "title": "Missing HTTP Security Headers — X-Frame-Options, CSP Absent",
285
+ "cvss": 5.4,
286
+ "asset": "portal.acme.com",
287
+ "affected_systems": ["portal.acme.com"],
288
+ "effort_hours": "2–4",
289
+ "primary_team": "Dev",
290
+ "secondary_team": null,
291
+ "override_reason": null,
292
+ "remediation_steps": [
293
+ "Add to nginx.conf: add_header X-Frame-Options 'SAMEORIGIN';",
294
+ "Implement Content-Security-Policy header — start with report-only mode for 1 week before enforcing",
295
+ "Add Permissions-Policy header to restrict camera/microphone/geolocation"
296
+ ],
297
+ "verification_steps": [
298
+ "Run: curl -I https://portal.acme.com | grep -E 'X-Frame|Content-Security|Permissions-Policy'",
299
+ "Verify all three headers present with correct values",
300
+ "Run Mozilla Observatory scan — target score B+ or above"
301
+ ]
302
+ },
303
+ {
304
+ "id": "RT-2025-0010",
305
+ "title": "Default Credentials on Grafana Instance — admin:admin",
306
+ "cvss": 6.8,
307
+ "asset": "monitoring.acme.internal",
308
+ "affected_systems": ["monitoring.acme.internal:3000"],
309
+ "effort_hours": "0.5–1",
310
+ "primary_team": "Ops",
311
+ "secondary_team": null,
312
+ "override_reason": null,
313
+ "remediation_steps": [
314
+ "Change admin password immediately to 20+ character random string",
315
+ "Disable local admin login and enforce SSO via SAML/OIDC with corporate IdP",
316
+ "Restrict Grafana access to VPN/internal network only — remove public exposure"
317
+ ],
318
+ "verification_steps": [
319
+ "Attempt login with admin:admin — must return 401",
320
+ "Confirm Grafana is not accessible from external IPs via nmap scan from external vantage point",
321
+ "Verify SSO login flow works for standard users"
322
+ ]
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "label": "Low",
328
+ "timeline": "1–3 months",
329
+ "deadline": "2025-09-01",
330
+ "risk_reduction_pct": 5,
331
+ "findings": [
332
+ {
333
+ "id": "RT-2025-0015",
334
+ "title": "TLS 1.0/1.1 Enabled on Legacy API Gateway",
335
+ "cvss": 3.7,
336
+ "asset": "api-legacy.acme.com",
337
+ "affected_systems": ["api-legacy.acme.com:443"],
338
+ "effort_hours": "1–2",
339
+ "primary_team": "Ops",
340
+ "secondary_team": null,
341
+ "override_reason": null,
342
+ "remediation_steps": [
343
+ "Disable TLS 1.0 and 1.1 in nginx SSL configuration",
344
+ "Enforce TLS 1.2 minimum with TLS 1.3 preferred",
345
+ "Update cipher suite to modern AEAD-only list"
346
+ ],
347
+ "verification_steps": [
348
+ "Run: nmap --script ssl-enum-ciphers -p 443 api-legacy.acme.com",
349
+ "Confirm TLS 1.0 and 1.1 are absent from supported protocols",
350
+ "Run testssl.sh and confirm grade A-"
351
+ ]
352
+ }
353
+ ]
354
+ }
355
+ ]
356
+ }
357
+ ```
358
+
359
+ ### 3.2 Executive Gantt Timeline (Markdown output)
360
+
361
+ ```markdown
362
+ ## Remediation Roadmap — Acme Corporation
363
+ **Engagement:** RT-2025-Q2-ACME | **Delivered:** June 1, 2025 | **Analyst:** M. Hegazy
364
+
365
+ | Phase | Timeline | Calendar Window | Findings | Effort | Owner(s) | Risk Reduction |
366
+ |----------|-----------------|--------------------|----------|----------|------------------|----------------|
367
+ | Critical | 0–24 hours | Jun 2, 2025 | 2 | 3–6h | Ops + Security | -42% |
368
+ | High | 1–7 days | Jun 2–8, 2025 | 4 | 12–28h | Dev + Ops | -31% |
369
+ | Medium | 1–30 days | Jun 2 – Jul 1 | 8 | 18–44h | Dev + Ops | -16% |
370
+ | Low | 1–3 months | Jun 2 – Sep 1 | 4 | 8–20h | Ops + Security | -5% |
371
+ | **TOTAL**| | | **18** | **41–98h** | | **-94%** |
372
+
373
+ ### Visual Timeline
374
+
375
+ ```
376
+ Jun 2025 Jul 2025 Aug 2025 Sep 2025
377
+ | | | |
378
+ █ CRITICAL (Jun 2)
379
+ ████████ HIGH (Jun 2–8)
380
+ ████████████████████████████ MEDIUM (Jun 2 – Jul 1)
381
+ ████████████████████████████████████████████████████████████ LOW (Jun 2 – Sep 1)
382
+ ```
383
+
384
+ > Risk reduction percentages represent estimated reduction in overall organizational
385
+ > risk exposure based on CVSS scoring and exploitability demonstrated during engagement.
386
+ > Percentages are additive across sequential phases.
387
+ ```
388
+
389
+ ---
390
+
391
+ ## 4. Integration with finding_tracker.py and autodoc_engine.py
392
+
393
+ ### finding_tracker.py Integration
394
+
395
+ The roadmap skill reads from and writes back to finding_tracker.py at multiple points:
396
+
397
+ **Read: Export findings before bucketing**
398
+ ```bash
399
+ # Export all open findings sorted by CVSS descending
400
+ python finding_tracker.py export \
401
+ --status open \
402
+ --sort cvss-desc \
403
+ --format json \
404
+ --out findings_export.json
405
+
406
+ # Export with asset filter for scoped roadmaps
407
+ python finding_tracker.py export \
408
+ --status open \
409
+ --asset-tag web-app \
410
+ --format json \
411
+ --out findings_webapp_only.json
412
+ ```
413
+
414
+ **Write: Update findings with roadmap assignments**
415
+ ```bash
416
+ # Bulk update all findings with bucket, team, and deadline
417
+ python finding_tracker.py bulk-update \
418
+ --from-roadmap roadmap_data.json \
419
+ --set-status "remediation_assigned"
420
+
421
+ # Update individual finding status after client confirms fix
422
+ python finding_tracker.py update \
423
+ --id RT-2025-0001 \
424
+ --status "remediation_in_progress" \
425
+ --assigned-team "Ops" \
426
+ --deadline "2025-06-02"
427
+ ```
428
+
429
+ **Query: Track remediation progress post-delivery**
430
+ ```bash
431
+ # Show remediation completion dashboard
432
+ python finding_tracker.py status-report \
433
+ --engagement RT-2025-Q2-ACME \
434
+ --format table
435
+
436
+ # Show overdue critical/high items
437
+ python finding_tracker.py overdue \
438
+ --severity critical,high \
439
+ --engagement RT-2025-Q2-ACME
440
+ ```
441
+
442
+ **Expected finding_tracker.py finding schema fields used by this skill:**
443
+
444
+ | Field | Type | Required | Description |
445
+ |--------------------|----------|----------|------------------------------------------|
446
+ | `id` | string | Yes | Unique finding ID (e.g., RT-2025-0001) |
447
+ | `title` | string | Yes | Short descriptive title |
448
+ | `cvss` | float | Yes | CVSS 3.x base score |
449
+ | `severity` | string | Yes | critical/high/medium/low |
450
+ | `asset` | string | Yes | Asset hostname or tag |
451
+ | `status` | string | Yes | Lifecycle status |
452
+ | `assigned_team` | string | No | Set by roadmap skill |
453
+ | `deadline` | date | No | Set by roadmap skill |
454
+ | `roadmap_bucket` | string | No | Set by roadmap skill |
455
+ | `effort_hours` | string | No | Range string, e.g., "4–8" |
456
+
457
+ ### autodoc_engine.py Integration
458
+
459
+ The autodoc engine consumes `roadmap_data.json` and renders it against the `remediation_roadmap` template:
460
+
461
+ ```bash
462
+ # Standard render
463
+ python autodoc_engine.py render \
464
+ --template remediation_roadmap \
465
+ --data roadmap_data.json \
466
+ --out reports/acme-corp-remediation-roadmap.md \
467
+ --client "Acme Corporation" \
468
+ --engagement-id RT-2025-Q2-ACME
469
+
470
+ # With custom branding/logo path
471
+ python autodoc_engine.py render \
472
+ --template remediation_roadmap \
473
+ --data roadmap_data.json \
474
+ --out reports/acme-corp-remediation-roadmap.md \
475
+ --client "Acme Corporation" \
476
+ --engagement-id RT-2025-Q2-ACME \
477
+ --logo assets/acme-logo.png \
478
+ --theme corporate-blue
479
+
480
+ # Render executive summary only (no technical details)
481
+ python autodoc_engine.py render \
482
+ --template remediation_roadmap_exec \
483
+ --data roadmap_data.json \
484
+ --out reports/acme-corp-exec-summary.md \
485
+ --client "Acme Corporation" \
486
+ --engagement-id RT-2025-Q2-ACME
487
+ ```
488
+
489
+ **Template variants available:**
490
+
491
+ | Template Name | Audience | Includes Technical Detail |
492
+ |-------------------------------|------------------|--------------------------|
493
+ | `remediation_roadmap` | Security team | Yes — full steps |
494
+ | `remediation_roadmap_exec` | C-suite / board | No — risk % and timeline only |
495
+ | `remediation_roadmap_ticketed` | Dev / Ops teams | Yes — formatted as tickets |
496
+
497
+ **autodoc_engine.py variable mapping:**
498
+
499
+ The engine expects these top-level keys in `roadmap_data.json`:
500
+
501
+ ```
502
+ engagement_id → report header
503
+ client → report header and footer
504
+ report_delivery_date → timeline anchor for Gantt
505
+ analyst → sign-off block
506
+ total_findings → executive summary stat
507
+ business_risk_reduction_if_all_remediated → executive summary stat
508
+ buckets[] → each bucket becomes a report section
509
+ buckets[].label → section heading
510
+ buckets[].deadline → Gantt calendar date
511
+ buckets[].risk_reduction_pct → risk bar chart value
512
+ buckets[].findings[] → finding detail rows
513
+ ```
514
+
515
+ ---
516
+
517
+ ## 5. Quality Checklist
518
+
519
+ Run through this checklist before finalizing the roadmap. Every item must be checked before the document is delivered to the client.
520
+
521
+ ### Completeness
522
+ - [ ] Every open finding from finding_tracker.py appears in exactly one bucket
523
+ - [ ] No finding is bucketed in two places
524
+ - [ ] All findings have a non-null `effort_hours` value
525
+ - [ ] All findings have a `primary_team` assigned
526
+ - [ ] Every finding has at least two `verification_steps`
527
+ - [ ] The `business_risk_reduction_if_all_remediated` percentage sums correctly across buckets
528
+
529
+ ### Accuracy
530
+ - [ ] CVSS scores match the finding_tracker.py records (no manual edits without override justification)
531
+ - [ ] All override decisions are documented with `override_reason` text
532
+ - [ ] Deadline dates are calendar dates, not relative ("7 days from now")
533
+ - [ ] Effort estimates account for testing/staging environments, not just production application
534
+
535
+ ### Clarity (Executive-Facing Content)
536
+ - [ ] No jargon in executive Gantt section (no "AS-REP Roasting", "Kerberoasting" — use plain English)
537
+ - [ ] Risk reduction percentages are rounded to nearest 5%
538
+ - [ ] Visual timeline renders correctly in both light and dark mode Markdown viewers
539
+ - [ ] Client name spelled correctly throughout (run: grep -i "acme" report.md | head -20)
540
+
541
+ ### Verification Steps Quality
542
+ - [ ] Every verification step uses specific commands, not vague instructions
543
+ - [ ] Commands include actual tool names (nmap, sqlmap, curl, impacket-*)
544
+ - [ ] Expected output or pass/fail condition is stated
545
+ - [ ] Steps are runnable by the client's internal security team without red team access
546
+
547
+ ### Finding Descriptions
548
+ - [ ] Title is specific enough that two separate findings are not confused
549
+ - [ ] Affected systems list is accurate and current (re-verify against scope doc)
550
+ - [ ] Remediation steps are ordered logically (interim controls before permanent fixes)
551
+
552
+ ---
553
+
554
+ ## 6. Example Output — Finished Product Excerpt
555
+
556
+ Below is a complete rendered section as it would appear in the final client deliverable.
557
+
558
+ ---
559
+
560
+ ### CRITICAL — Remediate Within 24 Hours
561
+ **Deadline: June 2, 2025 | Risk Reduction: 42% | Owner: Ops + Security**
562
+
563
+ Immediate action is required on the following two findings. Both were actively exploited during the engagement and represent a direct path to full domain compromise and data exfiltration. These items should be treated as an active incident response scenario, not a scheduled remediation task.
564
+
565
+ ---
566
+
567
+ **RT-2025-0001 | Domain Admin via AS-REP Roasting — svc_backup**
568
+
569
+ - **Asset:** ad.acme.internal (DC01, DC02)
570
+ - **CVSS:** 9.8 (Critical)
571
+ - **Effort:** 2–4 hours
572
+ - **Primary Team:** Ops | **Secondary:** Security
573
+
574
+ During the engagement, the `svc_backup` service account was found to have Kerberos pre-authentication disabled. An unauthenticated attacker on the internal network requested an AS-REP response for this account and cracked the resulting hash offline within 8 minutes using Hashcat on a modest GPU, yielding the cleartext password `Backup2022!`. This account held Domain Admin privileges.
575
+
576
+ **Remediation Steps:**
577
+ 1. Enable Kerberos pre-authentication on `svc_backup` in Active Directory Users and Computers immediately.
578
+ 2. Audit all service accounts for the `DONT_REQUIRE_PREAUTH` flag:
579
+ `Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true} -Properties DoesNotRequirePreAuth`
580
+ 3. Reset `svc_backup` password to a 25+ character random string and store in the PAM vault.
581
+ 4. Initiate a least-privilege audit on `svc_backup` — Domain Admin rights are not justified for a backup service account.
582
+
583
+ **Verification Steps:**
584
+ 1. Run `impacket-GetNPUsers acme.internal/ -usersfile service_accounts.txt -no-pass` from an internal network host.
585
+ 2. Confirm `svc_backup` does not return an AS-REP hash in the output.
586
+ 3. Verify EventID 4768 logs in the Windows Security event log show `Pre-Authentication Type: 2` for `svc_backup`.
587
+
588
+ ---
589
+
590
+ **RT-2025-0002 | Unauthenticated RCE — Apache Struts 2.5.28 (CVE-2023-50164)**
591
+
592
+ - **Asset:** erp.acme.com (10.20.1.45)
593
+ - **CVSS:** 9.8 (Critical)
594
+ - **Effort:** 1–2 hours
595
+ - **Primary Team:** Ops | **Secondary:** Dev
596
+
597
+ The ERP application runs Apache Struts 2.5.28, which is vulnerable to CVE-2023-50164, a critical file upload path traversal vulnerability that enables unauthenticated remote code execution. The engagement demonstrated full RCE, achieving a shell running as `www-data` with subsequent privilege escalation to root via a local sudo misconfiguration.
598
+
599
+ **Remediation Steps:**
600
+ 1. Upgrade Apache Struts to version 2.5.33 or 6.3.0.2 immediately. Test in staging first; estimated 1 hour if staging mirrors production.
601
+ 2. As an interim control, deploy a WAF rule blocking multipart content-type requests containing `../` or `%2e%2e%2f` patterns.
602
+ 3. Isolate `erp.acme.com` from all internal network segments (firewall rule: deny all inbound except port 443 from load balancer) until patch is confirmed in production.
603
+
604
+ **Verification Steps:**
605
+ 1. Confirm Struts version post-patch: `curl -s https://erp.acme.com/struts2-showcase/ | grep -i struts`
606
+ 2. Run the engagement's PoC verification script: `python RT-CVE-2023-50164-check.py --target https://erp.acme.com` — output must be `[NOT VULNERABLE]`.
607
+ 3. Verify WAF logs show blocked multipart traversal attempts during the verification test.
608
+
609
+ ---
610
+
611
+ ## 7. Common Mistakes to Avoid
612
+
613
+ ### Mistake 1 — Vague Verification Steps
614
+ **Bad:**
615
+ > "Verify that the patch has been applied and the vulnerability is resolved."
616
+
617
+ **Good:**
618
+ > "Run `nmap --script http-struts2-multi-ite -p 443 erp.acme.com` and confirm the output shows 'VULNERABLE: false'. Then run the PoC script from the engagement toolkit."
619
+
620
+ Clients cannot verify what they cannot measure. Vague steps lead to false confidence.
621
+
622
+ ---
623
+
624
+ ### Mistake 2 — Ignoring Business Context in Bucketing
625
+ Applying CVSS scores mechanically without considering environment produces a misleading roadmap. A CVSS 6.5 finding on a system that processes all payment card data may be more urgent than a CVSS 8.0 finding on a dev box with no sensitive data. Always ask: "What is the worst realistic outcome if this is exploited tomorrow?"
626
+
627
+ ---
628
+
629
+ ### Mistake 3 — Missing Interim Controls
630
+ Remediation of complex findings (architecture changes, major code refactors) can take weeks. Every Critical and High finding must have at least one interim control documented alongside the permanent fix. Examples: WAF rules, network segmentation, account disablement, feature flags to disable vulnerable functionality.
631
+
632
+ ---
633
+
634
+ ### Mistake 4 — Assigning Unrealistic Effort Estimates
635
+ Effort estimates that are too low destroy trust when teams miss deadlines. Be conservative. Account for:
636
+ - Change advisory board (CAB) approval cycles (often 1–2 weeks for production changes)
637
+ - Testing in staging environments
638
+ - Rollback planning
639
+ - Communication and coordination time across teams
640
+
641
+ ---
642
+
643
+ ### Mistake 5 — Putting Technical Jargon in the Executive Section
644
+ The Gantt timeline and risk summary table are read by CISOs, CTOs, and board members. "AS-REP Roasting" and "Kerberoasting" mean nothing to them. Use: "Weak password on privileged service account — cracked in 8 minutes."
645
+
646
+ ---
647
+
648
+ ### Mistake 6 — Not Anchoring Timelines to Calendar Dates
649
+ "Week 1", "Day 7", "Month 2" are useless in a delivered report. The report may sit in legal review for three weeks before the client reads it. Always use actual calendar dates anchored to the report delivery date. Update dates if delivery is delayed.
650
+
651
+ ---
652
+
653
+ ### Mistake 7 — Forgetting to Update finding_tracker.py
654
+ The roadmap is not a static document — it is a living artifact. After delivery, the tracker should reflect assignment status. Failure to update the tracker means progress checks, follow-up assessments, and closure verification all operate on stale data.
655
+
656
+ Run after every client status meeting:
657
+ ```bash
658
+ python finding_tracker.py update --id RT-2025-0001 --status "remediation_complete" --closed-date "2025-06-02"
659
+ python finding_tracker.py status-report --engagement RT-2025-Q2-ACME
660
+ ```
661
+
662
+ ---
663
+
664
+ ### Mistake 8 — Risk Reduction Percentages That Don't Add Up
665
+ If Critical = 42%, High = 31%, Medium = 16%, Low = 5%, the total should be 94% (not 100% — there is always residual risk). Percentages that sum to exactly 100% look fabricated. Percentages greater than 100% are a math error. Review the methodology documented in Step 6 before finalizing.