Skip to content

Commit 974ac83

Browse files
authored
Create vulnerable.js
1 parent e60bf3c commit 974ac83

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

vulnerable.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
const express = require('express');
2+
const fs = require('fs');
3+
const vm = require('vm');
4+
const jwt = require('jsonwebtoken');
5+
6+
const app = express();
7+
app.use(express.urlencoded({ extended: true }));
8+
app.use(express.json());
9+
10+
// Insecure Deserialization
11+
app.post('/deserialize', (req, res) => {
12+
const serializedData = req.body.data;
13+
try {
14+
const deserializedData = JSON.parse(serializedData);
15+
res.send(`Deserialized data: ${deserializedData}`);
16+
} catch (e) {
17+
res.status(400).send('Invalid data');
18+
}
19+
});
20+
21+
// Cross-Site Scripting (XSS)
22+
app.get('/greet', (req, res) => {
23+
const name = req.query.name;
24+
res.send(`<h1>Hello, ${name}</h1>`);
25+
});
26+
27+
// Insecure JWT Handling
28+
app.post('/login', (req, res) => {
29+
const user = { id: 1, username: req.body.username };
30+
const token = jwt.sign(user, 'secretkey'); // Weak secret
31+
res.json({ token });
32+
});
33+
34+
// Unsafe File Operations
35+
app.get('/read-file', (req, res) => {
36+
const filename = req.query.filename;
37+
fs.readFile(`/var/data/${filename}`, 'utf8', (err, data) => {
38+
if (err) {
39+
res.status(500).send('File read error');
40+
return;
41+
}
42+
res.send(`File content: ${data}`);
43+
});
44+
});
45+
46+
// Server-Side JavaScript Injection
47+
app.post('/execute', (req, res) => {
48+
const code = req.body.code;
49+
try {
50+
const result = vm.runInNewContext(code, {});
51+
res.send(`Execution result: ${result}`);
52+
} catch (e) {
53+
res.status(500).send('Execution error');
54+
}
55+
});
56+
57+
app.listen(3000, () => {
58+
console.log('Server running on port 3000');
59+
});

0 commit comments

Comments
 (0)