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 +32 -7
- package/dist/pentest.js +1 -1
- package/package.json +1 -1
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: '/
|
|
49
|
-
{ name: '/
|
|
50
|
-
{ name: '/
|
|
51
|
-
{ name: '/
|
|
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
|
-
|
|
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 = '';
|