wormclaude 1.0.193 → 1.0.194

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.
package/dist/commands.js CHANGED
@@ -62,6 +62,8 @@ export const COMMANDS = [
62
62
  { name: '/fullscan', desc: '[seviye 3+] tam kapsamlı DETERMİNİSTİK tarama: recon+XSS+SQLi tek komutta: /fullscan <hedef>' },
63
63
  { name: '/audit', desc: 'kaynak kod güvenlik denetimi (SAST — sır/açık/CVE, yerel): /audit [klasör]' },
64
64
  { name: '/jwt', desc: 'JWT token güvenlik analizi (alg=none/zayıf-secret/expiry/claim, yerel): /jwt <token>' },
65
+ { name: '/spray', desc: 'login formuna parola-spray (yetkili test, trust 3+): /spray <login-url> [kullanıcı]' },
66
+ { name: '/defaultcreds', desc: 'login\'e varsayılan kimlik denemesi (admin/admin vb, trust 3+): /defaultcreds <login-url>' },
65
67
  { name: '/exploit', desc: 'yetkili testte doğrulanmış PoC üret: /exploit <cve|açıklama>' },
66
68
  { name: '/harden', desc: 'savunma çıktısı üret (YARA/Sigma + yama önerisi): /harden <hedef|tehdit>' },
67
69
  { name: '/phish', desc: '[yetkili] phishing simülasyonu: pretext + e-posta şablonu: /phish <hedef|senaryo>' },
package/dist/pentest.js CHANGED
@@ -243,10 +243,10 @@ async function execReq(req, allowed, auth) {
243
243
  }
244
244
  }
245
245
  // Tam akış: plan al → her round'da istekleri yerelde at → /exec ile analiz ettir → done'a dek döngü.
246
- export async function runPentest(config, tool, target, scopeAck, log, auth) {
246
+ export async function runPentest(config, tool, target, scopeAck, log, auth, extra) {
247
247
  const _authed = !!(auth && (auth.cookie || auth.authHeader || auth.headers));
248
248
  // authenticated: SUNUCUYA SADECE BAYRAK gider (login-arkası crawl/POST planlasın diye) — sır/cookie DEĞİL.
249
- const plan = await postJson(config, '/pentest/plan', { tool, target, scope_ack: scopeAck, authenticated: _authed }, 15000);
249
+ const plan = await postJson(config, '/pentest/plan', { tool, target, scope_ack: scopeAck, authenticated: _authed, extra: extra || undefined }, 15000);
250
250
  if (!plan.ok)
251
251
  return { ok: false, reason: plan.reason, plan };
252
252
  const allowed = new Set((plan.allowed_hosts || [plan.host || '']).map((x) => x.toLowerCase()));
package/dist/theme.js CHANGED
@@ -16,4 +16,4 @@ export const theme = {
16
16
  synType: '#a78bfa', // tip/sınıf adları, sabitler
17
17
  synProp: '#e0e0e0', // özellik/anahtar adları
18
18
  };
19
- export const VERSION = '1.0.193';
19
+ export const VERSION = '1.0.194';
package/dist/tools.js CHANGED
@@ -230,7 +230,7 @@ export const toolSchemas = [
230
230
  parameters: {
231
231
  type: 'object',
232
232
  properties: {
233
- tool: { type: 'string', enum: ['full', 'recon', 'scan', 'xss', 'sqli', 'dirscan', 'idor', 'portscan', 'osint', 'cloudscan'], description: 'full → tam kapsamlı web taraması; recon/scan/dirscan/portscan/osint/cloudscan → domain/host/şirket; xss/sqli/idor → parameterized URL. portscan = TCP port/servis. osint = DNS + e-posta güvenliği (SPF/DMARC). cloudscan = açık bulut bucket keşfi (S3/GCP/Azure şirket/domain adından aday üretip public erişim test eder; "bucket tara"/"s3 tara"/"açık depolama"/"cloud" denince)' },
233
+ tool: { type: 'string', enum: ['full', 'recon', 'scan', 'xss', 'sqli', 'dirscan', 'idor', 'portscan', 'osint', 'cloudscan', 'spray', 'defaultcreds'], description: 'full → tam kapsamlı web taraması; recon/scan/dirscan/portscan/osint/cloudscan → domain/host/şirket; xss/sqli/idor → parameterized URL. portscan = TCP port/servis. osint = DNS + e-posta güvenliği (SPF/DMARC). cloudscan = açık bulut bucket keşfi (S3/GCP/Azure). spray = login formuna parola-spray (target = login URL, username param ile; "parola dene"/"spray"/"brute" denince, trust 3+). defaultcreds = login\'e varsayılan kimlikler (admin/admin vb.) dene (target = login URL, trust 3+)' },
234
234
  target: { type: 'string', description: 'Domain for recon/scan/dirscan (example.com) OR parameterized URL for xss/sqli (https://example.com/p?id=1)' },
235
235
  cookie: { type: 'string', description: 'Optional. Session cookie for AUTHENTICATED / behind-login scanning, e.g. "sessionid=abc123; csrftoken=xyz". The user copies it from their logged-in browser (DevTools → Application → Cookies, or the Cookie request header). Sent only to the target from the user IP — never stored on the server. Provide it whenever the user wants to scan pages behind a login.' },
236
236
  auth_header: { type: 'string', description: 'Optional. Authorization header value for token-based authenticated scanning, e.g. "Bearer eyJhbGci..." or "Basic dXNlcjpwYXNz". Use instead of / together with cookie when the site authenticates via a token header.' },
@@ -767,7 +767,7 @@ async function execOne(call, hooks) {
767
767
  if (call.name === 'SecurityScan') {
768
768
  let tool = String(args?.tool || '').toLowerCase().trim();
769
769
  const target = String(args?.target || '').trim();
770
- if (!['recon', 'scan', 'xss', 'sqli', 'dirscan', 'idor', 'portscan', 'osint', 'cloud', 'cloudscan', 'full', 'fullscan'].includes(tool) || !target) {
770
+ if (!['recon', 'scan', 'xss', 'sqli', 'dirscan', 'idor', 'portscan', 'osint', 'cloud', 'cloudscan', 'spray', 'credspray', 'defaultcreds', 'full', 'fullscan'].includes(tool) || !target) {
771
771
  return { ok: false, output: 'SecurityScan: tool (recon|scan|xss|sqli|dirscan|full) ve target gerekli.', args };
772
772
  }
773
773
  if (tool === 'scan')
@@ -921,7 +921,8 @@ async function execOne(call, hooks) {
921
921
  }
922
922
  try {
923
923
  const { runPentest } = await import('./pentest.js');
924
- const out = await runPentest(cfg(), tool, target, true, () => { }, _auth);
924
+ const _extra = ['spray', 'credspray', 'defaultcreds'].includes(tool) ? { username: _username || 'admin' } : undefined;
925
+ const out = await runPentest(cfg(), tool, target, true, () => { }, _auth, _extra);
925
926
  if (!out?.ok) {
926
927
  const reason = out?.reason || out?.plan?.reason || 'error';
927
928
  const tip = reason === 'trust_required' ? ' (Doğrulanmış Araştırmacı / seviye 3+ gerekir: /dogrula)'
package/dist/tui.js CHANGED
@@ -852,6 +852,28 @@ export async function runTui() {
852
852
  runTurn(`JwtAudit aracıyla şu JWT'yi güvenlik için analiz et: ${a}. Bulguları severity-sıralı özetle.`, v);
853
853
  return;
854
854
  }
855
+ // /spray — login formuna parola-spray (yetkili test); modele SecurityScan tool=spray çağırt
856
+ if (tok === '/spray') {
857
+ const rest = v.slice(tok.length).trim().split(/\s+/);
858
+ const url = rest[0] || '';
859
+ const usr = rest[1] || 'admin';
860
+ if (!url) {
861
+ printItem({ kind: 'note', text: 'Kullanım: /spray <login-url> [kullanıcı]' });
862
+ return;
863
+ }
864
+ runTurn(`SecurityScan aracıyla tool=spray, target=${url}, username=${usr} çalıştır (yetkili parola-spray testi). Sonucu özetle.`, v);
865
+ return;
866
+ }
867
+ // /defaultcreds — login'e varsayılan kimlik denemesi
868
+ if (tok === '/defaultcreds') {
869
+ const a = v.slice(tok.length).trim();
870
+ if (!a) {
871
+ printItem({ kind: 'note', text: 'Kullanım: /defaultcreds <login-url>' });
872
+ return;
873
+ }
874
+ runTurn(`SecurityScan aracıyla tool=defaultcreds, target=${a} çalıştır (varsayılan kimlik denemesi). Sonucu özetle.`, v);
875
+ return;
876
+ }
855
877
  // /exploit · /harden — aktif tarama değil, model-üretim (PoC / YARA-Sigma) → çerçeveli istemle modele
856
878
  if (tok === '/exploit') {
857
879
  const a = v.slice(tok.length).trim();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.193",
3
+ "version": "1.0.194",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {