@intentsolutionsio/penetration-tester 2.0.0 → 3.0.4

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 (112) hide show
  1. package/.claude-plugin/plugin.json +8 -3
  2. package/README.md +8 -0
  3. package/commands/pentest.md +5 -0
  4. package/package.json +8 -3
  5. package/skills/analyzing-tls-config/SKILL.md +221 -0
  6. package/skills/analyzing-tls-config/references/AUTHORIZATION.md +133 -0
  7. package/skills/analyzing-tls-config/references/PLAYBOOK.md +267 -0
  8. package/skills/analyzing-tls-config/references/THEORY.md +128 -0
  9. package/skills/analyzing-tls-config/scripts/analyze_tls.py +415 -0
  10. package/skills/auditing-cors-policy/SKILL.md +186 -0
  11. package/skills/auditing-cors-policy/references/PLAYBOOK.md +220 -0
  12. package/skills/auditing-cors-policy/references/THEORY.md +142 -0
  13. package/skills/auditing-cors-policy/scripts/audit_cors.py +350 -0
  14. package/skills/auditing-npm-dependencies/SKILL.md +254 -0
  15. package/skills/auditing-npm-dependencies/references/PLAYBOOK.md +175 -0
  16. package/skills/auditing-npm-dependencies/references/THEORY.md +122 -0
  17. package/skills/auditing-npm-dependencies/scripts/audit_npm.py +408 -0
  18. package/skills/auditing-python-dependencies/SKILL.md +251 -0
  19. package/skills/auditing-python-dependencies/references/PLAYBOOK.md +193 -0
  20. package/skills/auditing-python-dependencies/references/THEORY.md +122 -0
  21. package/skills/auditing-python-dependencies/scripts/audit_python.py +459 -0
  22. package/skills/checking-http-security-headers/SKILL.md +176 -0
  23. package/skills/checking-http-security-headers/references/PLAYBOOK.md +212 -0
  24. package/skills/checking-http-security-headers/references/THEORY.md +137 -0
  25. package/skills/checking-http-security-headers/scripts/check_headers.py +362 -0
  26. package/skills/checking-license-compliance/SKILL.md +225 -0
  27. package/skills/checking-license-compliance/references/PLAYBOOK.md +161 -0
  28. package/skills/checking-license-compliance/references/THEORY.md +152 -0
  29. package/skills/checking-license-compliance/scripts/check_licenses.py +461 -0
  30. package/skills/composing-vulnerability-report/SKILL.md +212 -0
  31. package/skills/composing-vulnerability-report/references/PLAYBOOK.md +180 -0
  32. package/skills/composing-vulnerability-report/references/THEORY.md +178 -0
  33. package/skills/composing-vulnerability-report/scripts/compose_report.py +396 -0
  34. package/skills/confirming-pentest-authorization/SKILL.md +247 -0
  35. package/skills/confirming-pentest-authorization/references/PLAYBOOK.md +189 -0
  36. package/skills/confirming-pentest-authorization/references/THEORY.md +167 -0
  37. package/skills/confirming-pentest-authorization/scripts/check_authorization.py +457 -0
  38. package/skills/defining-pentest-scope/SKILL.md +227 -0
  39. package/skills/defining-pentest-scope/references/PLAYBOOK.md +238 -0
  40. package/skills/defining-pentest-scope/references/THEORY.md +170 -0
  41. package/skills/defining-pentest-scope/scripts/define_scope.py +472 -0
  42. package/skills/detecting-command-injection-patterns/SKILL.md +144 -0
  43. package/skills/detecting-command-injection-patterns/references/PLAYBOOK.md +302 -0
  44. package/skills/detecting-command-injection-patterns/references/THEORY.md +206 -0
  45. package/skills/detecting-command-injection-patterns/scripts/scan_cmdi.py +290 -0
  46. package/skills/detecting-debug-endpoints/SKILL.md +207 -0
  47. package/skills/detecting-debug-endpoints/references/PLAYBOOK.md +402 -0
  48. package/skills/detecting-debug-endpoints/references/THEORY.md +218 -0
  49. package/skills/detecting-debug-endpoints/scripts/probe_debug.py +518 -0
  50. package/skills/detecting-directory-listing/SKILL.md +206 -0
  51. package/skills/detecting-directory-listing/references/PLAYBOOK.md +277 -0
  52. package/skills/detecting-directory-listing/references/THEORY.md +203 -0
  53. package/skills/detecting-directory-listing/scripts/probe_directory_listing.py +180 -0
  54. package/skills/detecting-eval-exec-usage/SKILL.md +128 -0
  55. package/skills/detecting-eval-exec-usage/references/PLAYBOOK.md +306 -0
  56. package/skills/detecting-eval-exec-usage/references/THEORY.md +159 -0
  57. package/skills/detecting-eval-exec-usage/scripts/scan_eval.py +223 -0
  58. package/skills/detecting-exposed-secrets-files/SKILL.md +179 -0
  59. package/skills/detecting-exposed-secrets-files/references/PLAYBOOK.md +274 -0
  60. package/skills/detecting-exposed-secrets-files/references/THEORY.md +174 -0
  61. package/skills/detecting-exposed-secrets-files/scripts/probe_secrets.py +207 -0
  62. package/skills/detecting-insecure-deserialization/SKILL.md +148 -0
  63. package/skills/detecting-insecure-deserialization/references/PLAYBOOK.md +333 -0
  64. package/skills/detecting-insecure-deserialization/references/THEORY.md +199 -0
  65. package/skills/detecting-insecure-deserialization/scripts/scan_deserialization.py +250 -0
  66. package/skills/detecting-sql-injection-patterns/SKILL.md +161 -0
  67. package/skills/detecting-sql-injection-patterns/references/PLAYBOOK.md +317 -0
  68. package/skills/detecting-sql-injection-patterns/references/THEORY.md +261 -0
  69. package/skills/detecting-sql-injection-patterns/scripts/scan_sqli.py +354 -0
  70. package/skills/detecting-ssl-cert-issues/SKILL.md +182 -0
  71. package/skills/detecting-ssl-cert-issues/references/PLAYBOOK.md +203 -0
  72. package/skills/detecting-ssl-cert-issues/references/THEORY.md +133 -0
  73. package/skills/detecting-ssl-cert-issues/scripts/check_cert_chain.py +481 -0
  74. package/skills/detecting-weak-cryptography/SKILL.md +147 -0
  75. package/skills/detecting-weak-cryptography/references/PLAYBOOK.md +466 -0
  76. package/skills/detecting-weak-cryptography/references/THEORY.md +194 -0
  77. package/skills/detecting-weak-cryptography/scripts/scan_weak_crypto.py +417 -0
  78. package/skills/fingerprinting-server-software/SKILL.md +191 -0
  79. package/skills/fingerprinting-server-software/references/PLAYBOOK.md +337 -0
  80. package/skills/fingerprinting-server-software/references/THEORY.md +183 -0
  81. package/skills/fingerprinting-server-software/scripts/fingerprint_server.py +347 -0
  82. package/skills/generating-executive-summary/SKILL.md +261 -0
  83. package/skills/generating-executive-summary/references/PLAYBOOK.md +201 -0
  84. package/skills/generating-executive-summary/references/THEORY.md +195 -0
  85. package/skills/generating-executive-summary/scripts/exec_summary.py +538 -0
  86. package/skills/mapping-findings-to-owasp-top10/SKILL.md +235 -0
  87. package/skills/mapping-findings-to-owasp-top10/references/PLAYBOOK.md +193 -0
  88. package/skills/mapping-findings-to-owasp-top10/references/THEORY.md +160 -0
  89. package/skills/mapping-findings-to-owasp-top10/scripts/map_owasp.py +540 -0
  90. package/skills/performing-penetration-testing/SKILL.md +282 -190
  91. package/skills/performing-penetration-testing/references/OWASP_TOP_10.md +22 -0
  92. package/skills/performing-penetration-testing/references/REMEDIATION_PLAYBOOK.md +46 -0
  93. package/skills/performing-penetration-testing/references/SECURITY_HEADERS.md +41 -0
  94. package/skills/performing-penetration-testing/scripts/code_security_scanner.py +144 -79
  95. package/skills/performing-penetration-testing/scripts/dependency_auditor.py +116 -93
  96. package/skills/performing-penetration-testing/scripts/security_scanner.py +574 -446
  97. package/skills/probing-dangerous-http-methods/SKILL.md +182 -0
  98. package/skills/probing-dangerous-http-methods/references/PLAYBOOK.md +234 -0
  99. package/skills/probing-dangerous-http-methods/references/THEORY.md +145 -0
  100. package/skills/probing-dangerous-http-methods/scripts/probe_methods.py +263 -0
  101. package/skills/recording-pentest-engagement/SKILL.md +253 -0
  102. package/skills/recording-pentest-engagement/references/PLAYBOOK.md +203 -0
  103. package/skills/recording-pentest-engagement/references/THEORY.md +195 -0
  104. package/skills/recording-pentest-engagement/scripts/record_engagement.py +461 -0
  105. package/skills/scanning-for-hardcoded-secrets/SKILL.md +215 -0
  106. package/skills/scanning-for-hardcoded-secrets/references/PLAYBOOK.md +325 -0
  107. package/skills/scanning-for-hardcoded-secrets/references/THEORY.md +175 -0
  108. package/skills/scanning-for-hardcoded-secrets/scripts/scan_secrets.py +395 -0
  109. package/skills/tracing-transitive-vulnerabilities/SKILL.md +235 -0
  110. package/skills/tracing-transitive-vulnerabilities/references/PLAYBOOK.md +233 -0
  111. package/skills/tracing-transitive-vulnerabilities/references/THEORY.md +138 -0
  112. package/skills/tracing-transitive-vulnerabilities/scripts/trace_vulns.py +484 -0
@@ -11,11 +11,13 @@ recommended values, and implementation across common frameworks.
11
11
  resources the browser is allowed to load.
12
12
 
13
13
  **Recommended value:**
14
+
14
15
  ```
15
16
  Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
16
17
  ```
17
18
 
18
19
  **What security_scanner.py checks:**
20
+
19
21
  - Header is present
20
22
  - `default-src` directive exists
21
23
  - No `unsafe-eval` in `script-src`
@@ -24,6 +26,7 @@ Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'
24
26
  **Implementation:**
25
27
 
26
28
  Express.js:
29
+
27
30
  ```javascript
28
31
  const helmet = require("helmet");
29
32
  app.use(helmet.contentSecurityPolicy({
@@ -38,6 +41,7 @@ app.use(helmet.contentSecurityPolicy({
38
41
  ```
39
42
 
40
43
  Django:
44
+
41
45
  ```python
42
46
  # settings.py
43
47
  CSP_DEFAULT_SRC = ("'self'",)
@@ -48,11 +52,13 @@ CSP_FRAME_ANCESTORS = ("'none'",)
48
52
  ```
49
53
 
50
54
  Nginx:
55
+
51
56
  ```nginx
52
57
  add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-ancestors 'none';" always;
53
58
  ```
54
59
 
55
60
  Apache:
61
+
56
62
  ```apache
57
63
  Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-ancestors 'none';"
58
64
  ```
@@ -65,11 +71,13 @@ Header always set Content-Security-Policy "default-src 'self'; script-src 'self'
65
71
  preventing protocol downgrade attacks and cookie hijacking.
66
72
 
67
73
  **Recommended value:**
74
+
68
75
  ```
69
76
  Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
70
77
  ```
71
78
 
72
79
  **What security_scanner.py checks:**
80
+
73
81
  - Header is present (critical if site supports HTTPS)
74
82
  - `max-age` >= 31536000 (1 year)
75
83
  - `includeSubDomains` directive present
@@ -78,6 +86,7 @@ Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
78
86
  **Implementation:**
79
87
 
80
88
  Express.js:
89
+
81
90
  ```javascript
82
91
  app.use(helmet.hsts({
83
92
  maxAge: 31536000,
@@ -87,6 +96,7 @@ app.use(helmet.hsts({
87
96
  ```
88
97
 
89
98
  Django:
99
+
90
100
  ```python
91
101
  # settings.py
92
102
  SECURE_HSTS_SECONDS = 31536000
@@ -95,11 +105,13 @@ SECURE_HSTS_PRELOAD = True
95
105
  ```
96
106
 
97
107
  Nginx:
108
+
98
109
  ```nginx
99
110
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
100
111
  ```
101
112
 
102
113
  Apache:
114
+
103
115
  ```apache
104
116
  Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
105
117
  ```
@@ -112,29 +124,35 @@ Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains
112
124
  in a frame, iframe, embed, or object.
113
125
 
114
126
  **Recommended value:**
127
+
115
128
  ```
116
129
  X-Frame-Options: DENY
117
130
  ```
131
+
118
132
  Or `SAMEORIGIN` if framing by same-origin pages is needed.
119
133
 
120
134
  **What security_scanner.py checks:**
135
+
121
136
  - Header is present
122
137
  - Value is DENY or SAMEORIGIN (not ALLOW-FROM, which is deprecated)
123
138
 
124
139
  **Implementation:**
125
140
 
126
141
  Express.js:
142
+
127
143
  ```javascript
128
144
  app.use(helmet.frameguard({ action: "deny" }));
129
145
  ```
130
146
 
131
147
  Django:
148
+
132
149
  ```python
133
150
  # settings.py (default in Django 3+)
134
151
  X_FRAME_OPTIONS = "DENY"
135
152
  ```
136
153
 
137
154
  Nginx:
155
+
138
156
  ```nginx
139
157
  add_header X-Frame-Options "DENY" always;
140
158
  ```
@@ -147,28 +165,33 @@ add_header X-Frame-Options "DENY" always;
147
165
  interpret files as a different content type than declared.
148
166
 
149
167
  **Recommended value:**
168
+
150
169
  ```
151
170
  X-Content-Type-Options: nosniff
152
171
  ```
153
172
 
154
173
  **What security_scanner.py checks:**
174
+
155
175
  - Header is present
156
176
  - Value is exactly `nosniff`
157
177
 
158
178
  **Implementation:**
159
179
 
160
180
  Express.js:
181
+
161
182
  ```javascript
162
183
  app.use(helmet.noSniff());
163
184
  ```
164
185
 
165
186
  Django:
187
+
166
188
  ```python
167
189
  # Enabled by default via SecurityMiddleware
168
190
  SECURE_CONTENT_TYPE_NOSNIFF = True
169
191
  ```
170
192
 
171
193
  Nginx:
194
+
172
195
  ```nginx
173
196
  add_header X-Content-Type-Options "nosniff" always;
174
197
  ```
@@ -181,12 +204,15 @@ add_header X-Content-Type-Options "nosniff" always;
181
204
  preventing leakage of sensitive URLs to third parties.
182
205
 
183
206
  **Recommended values:**
207
+
184
208
  ```
185
209
  Referrer-Policy: strict-origin-when-cross-origin
186
210
  ```
211
+
187
212
  Or `no-referrer` for maximum privacy.
188
213
 
189
214
  **What security_scanner.py checks:**
215
+
190
216
  - Header is present
191
217
  - Value is not `unsafe-url` (leaks full URL including path and query)
192
218
  - Value is not empty
@@ -194,16 +220,19 @@ Or `no-referrer` for maximum privacy.
194
220
  **Implementation:**
195
221
 
196
222
  Express.js:
223
+
197
224
  ```javascript
198
225
  app.use(helmet.referrerPolicy({ policy: "strict-origin-when-cross-origin" }));
199
226
  ```
200
227
 
201
228
  Django:
229
+
202
230
  ```python
203
231
  SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin"
204
232
  ```
205
233
 
206
234
  Nginx:
235
+
207
236
  ```nginx
208
237
  add_header Referrer-Policy "strict-origin-when-cross-origin" always;
209
238
  ```
@@ -216,17 +245,20 @@ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
216
245
  its iframes (camera, microphone, geolocation, etc.).
217
246
 
218
247
  **Recommended value:**
248
+
219
249
  ```
220
250
  Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
221
251
  ```
222
252
 
223
253
  **What security_scanner.py checks:**
254
+
224
255
  - Header is present
225
256
  - Notes which features are restricted
226
257
 
227
258
  **Implementation:**
228
259
 
229
260
  Express.js:
261
+
230
262
  ```javascript
231
263
  app.use(helmet.permittedCrossDomainPolicies());
232
264
  // Or manually:
@@ -238,6 +270,7 @@ app.use((req, res, next) => {
238
270
  ```
239
271
 
240
272
  Nginx:
273
+
241
274
  ```nginx
242
275
  add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
243
276
  ```
@@ -251,13 +284,16 @@ Deprecated in modern browsers in favor of CSP. Can cause issues if set to
251
284
  `1; mode=block` on some older browsers.
252
285
 
253
286
  **Recommended value:**
287
+
254
288
  ```
255
289
  X-XSS-Protection: 0
256
290
  ```
291
+
257
292
  Set to 0 (disabled) since the browser feature is deprecated and CSP is the
258
293
  proper replacement.
259
294
 
260
295
  **What security_scanner.py checks:**
296
+
261
297
  - Notes if present
262
298
  - Info-level finding (not a vulnerability)
263
299
 
@@ -269,6 +305,7 @@ proper replacement.
269
305
  unauthorized users.
270
306
 
271
307
  **Recommended value for sensitive pages:**
308
+
272
309
  ```
273
310
  Cache-Control: no-store, no-cache, must-revalidate, private
274
311
  ```
@@ -276,6 +313,7 @@ Cache-Control: no-store, no-cache, must-revalidate, private
276
313
  **Implementation:**
277
314
 
278
315
  Express.js:
316
+
279
317
  ```javascript
280
318
  app.use("/api/private", (req, res, next) => {
281
319
  res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate, private");
@@ -284,6 +322,7 @@ app.use("/api/private", (req, res, next) => {
284
322
  ```
285
323
 
286
324
  Django:
325
+
287
326
  ```python
288
327
  from django.views.decorators.cache import never_cache
289
328
 
@@ -309,6 +348,7 @@ X-XSS-Protection: 0
309
348
  ```
310
349
 
311
350
  ### Nginx complete block:
351
+
312
352
  ```nginx
313
353
  # Security Headers
314
354
  add_header Content-Security-Policy "default-src 'self'; script-src 'self'; frame-ancestors 'none'" always;
@@ -324,6 +364,7 @@ server_tokens off;
324
364
  ```
325
365
 
326
366
  ### Apache complete block:
367
+
327
368
  ```apache
328
369
  # Security Headers
329
370
  Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; frame-ancestors 'none'"