wormclaude 1.0.88 → 1.0.90

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
@@ -45,10 +45,11 @@ export const COMMANDS = [
45
45
  { name: '/izinler', desc: 'onayli shell komutlarini yonet (list/add/remove/clear)' },
46
46
  { name: '/program', desc: 'Doğrulanmış Araştırmacı Programı — güven seviyeni göster' },
47
47
  { name: '/dogrula', desc: 'Doğrulanmış Araştırmacı başvurusu gönder: /dogrula <profil/şirket/gerekçe>' },
48
- { name: '/recon', desc: '[seviye 3+] yetkili hedefte keşif (alt-alan/host/crawl): /recon <alan>' },
49
- { name: '/scan', desc: '[seviye 3+] yetkili hedefte zafiyet taraması (nuclei): /scan <url>' },
50
- { name: '/xss', desc: '[seviye 3+] yetkili hedefte XSS taraması (dalfox): /xss <url>' },
51
- { name: '/sqli', desc: '[seviye 3+] yetkili hedefte SQLi taraması (sqlmap): /sqli <url>' },
48
+ { name: '/skill', desc: 'güvenlik tarama skill\'leri: /skill xss|sqli|recon <hedef> (seviye 3+)' },
49
+ { name: '/recon', desc: '[seviye 3+] yetkili hedefte keşif (alt-alan/host/başlık/ifşa): /recon <alan>' },
50
+ { name: '/scan', desc: '[seviye 3+] yetkili hedefte genel tarama (keşif+başlıklar): /scan <alan>' },
51
+ { name: '/xss', desc: '[seviye 3+] yetkili hedefte XSS taraması (kendi motorumuz): /xss <url>' },
52
+ { name: '/sqli', desc: '[seviye 3+] yetkili hedefte SQLi taraması (kendi motorumuz): /sqli <url>' },
52
53
  { name: '/export', desc: 'sohbeti dosyaya kaydet' },
53
54
  { name: '/resume', desc: 'en son kaydedilen oturumu yükle' },
54
55
  { name: '/quit', desc: 'çıkış' },
@@ -124,15 +125,19 @@ const PT_REASON = {
124
125
  function formatFinding(x) {
125
126
  const sev = x.severity ? `[${String(x.severity).toUpperCase()}] ` : '';
126
127
  if (x.type === 'xss')
127
- return `${sev}XSS · param ${x.param || '?'} — ${x.url || ''}`;
128
+ return `${sev}XSS (${x.context || '?'}) · param ${x.param || '?'} — ${x.url || ''}`;
128
129
  if (x.type === 'sqli')
129
130
  return `${sev}SQLi (${x.technique || '?'}) · param ${x.param || '?'} — ${x.evidence || ''}`;
130
131
  if (x.type === 'subdomain')
131
132
  return `alt-alan: ${x.value}`;
132
133
  if (x.type === 'host')
133
134
  return `${x.status || ''} ${x.url || ''}${x.title ? ' · ' + x.title : ''}${x.server ? ' · ' + x.server : ''}`;
135
+ if (x.type === 'tech')
136
+ return `teknoloji: ${x.value}`;
134
137
  if (x.type === 'weak_headers')
135
138
  return `${sev}eksik güvenlik başlıkları: ${(x.missing || []).join(', ')}`;
139
+ if (x.type === 'cors')
140
+ return `${sev}CORS yanlış yapılandırma: ${x.url || ''} — ${x.evidence || ''}`;
136
141
  if (x.type === 'exposure')
137
142
  return `${sev}ifşa: ${x.url || ''} — ${x.evidence || ''}`;
138
143
  if (x.value)
@@ -141,9 +146,11 @@ function formatFinding(x) {
141
146
  }
142
147
  // /recon /scan /xss /sqli — ince runner'ı sürer. Zorunlu yetki onayı + trust 3+ teaser.
143
148
  async function pentestCmd(tool, arg, ctx) {
149
+ if (tool === 'scan')
150
+ tool = 'recon'; // genel tarama = keşif+başlıklar
144
151
  const parts = (arg || '').trim().split(/\s+/).filter(Boolean);
145
152
  let scopeAck = false;
146
- if (parts.length && /^(onayla|--yes|-y|yes|evet)$/i.test(parts[parts.length - 1])) {
153
+ if (parts.length && /^(run|onayla|çalıştır|calistir|--yes|-y|yes|evet)$/i.test(parts[parts.length - 1])) {
147
154
  scopeAck = true;
148
155
  parts.pop();
149
156
  }
@@ -158,7 +165,7 @@ async function pentestCmd(tool, arg, ctx) {
158
165
  `Hedef: ${target}\n\n` +
159
166
  `Bu tarama hedefe GERÇEK istekler gönderir ve trafik SENİN IP'nden çıkar. Yalnız sahibi olduğun ya da\n` +
160
167
  `yazılı izin/angajman bulunan sistemlerde çalıştır. Yetkisiz tarama yasa dışıdır ve kayıt altına alınır.\n\n` +
161
- `Onaylıyorsan tekrar çalıştır: /${tool} ${target} onayla`);
168
+ `Çalıştırmak için sonuna "run" ekle: /${tool} ${target} run`);
162
169
  return;
163
170
  }
164
171
  ctx.note(`${label} başlatılıyor — ${target}`);
@@ -733,6 +740,24 @@ export async function runSlashCommand(input, ctx) {
733
740
  case '/sqli':
734
741
  await pentestCmd(cmd.slice(1), arg, ctx);
735
742
  return true;
743
+ case '/skill': {
744
+ const m = (arg || '').trim().split(/\s+/).filter(Boolean);
745
+ const sub = (m.shift() || '').toLowerCase();
746
+ // dahili (xss/sqli/recon) VEYA sunucudaki şablon id'si — sunucu doğrular
747
+ if (sub && !['list', 'help', 'ls', ''].includes(sub)) {
748
+ await pentestCmd(sub, m.join(' '), ctx);
749
+ return true;
750
+ }
751
+ ctx.note('Güvenlik tarama skill\'leri (seviye 3+ · motor sunucuda gizli):\n' +
752
+ ' /skill xss <url> reflected XSS\n' +
753
+ ' /skill sqli <url> SQL injection (error/boolean/time)\n' +
754
+ ' /skill recon <alan> alt-alan + başlık + ifşa\n' +
755
+ ' /skill <şablon-id> <hedef> sunucudaki özel şablonlar (.md)\n' +
756
+ 'Çalıştırmak için sonuna "run" ekle:\n' +
757
+ ' /skill xss https://site/p?id=1 run\n' +
758
+ '(kısa yol: /xss /sqli /recon)');
759
+ return true;
760
+ }
736
761
  case '/export': {
737
762
  fs.mkdirSync(SESSION_DIR, { recursive: true });
738
763
  const file = path.join(SESSION_DIR, `session-${tsStamp()}.json`);
package/dist/pentest.js CHANGED
@@ -36,7 +36,7 @@ async function execReq(req, allowed) {
36
36
  method: req.method || 'GET',
37
37
  headers: req.headers,
38
38
  body: req.body,
39
- redirect: 'follow',
39
+ redirect: req.follow === false ? 'manual' : 'follow', // open-redirect vb. için Location'ı görmek
40
40
  signal: AbortSignal.timeout(Math.max(3, req.timeout || 20) * 1000),
41
41
  });
42
42
  let body = '';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.88",
3
+ "version": "1.0.90",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {