Skip to content

Commit f2a9a69

Browse files
committed
some fixes and add exec/rce vulnerability
1 parent 9d38fce commit f2a9a69

File tree

5 files changed

+58
-16
lines changed

5 files changed

+58
-16
lines changed

index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,9 @@ const port = 300
99
app.get('/', (req, res) => res.send('Hello World!'))
1010

1111
app.use('/xss', require('./vulnerabilities/xss'));
12+
app.use('/sqli', require('./vulnerabilities/sqli'));
13+
app.use('/nosqli', require('./vulnerabilities/nosqli'));
14+
app.use('/exec', require('./vulnerabilities/exec'));
15+
1216

1317
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))

vulnerabilities/exec.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
const express = require('express');
2+
const router = express.Router()
3+
4+
const { exec, spawn } = require('child_process');
5+
6+
7+
router.post('/ping', (req,res) => {
8+
exec(`${req.body.url}`, (error, stdout, stderr) => {
9+
if (error) {
10+
return res.send('error');
11+
}
12+
res.send('pong')
13+
})
14+
15+
})
16+
17+
router.post('/gzip', (req,res) => {
18+
exec(
19+
'gzip ' + req.query.file_path,
20+
function (err, data) {
21+
console.log('err: ', err)
22+
console.log('data: ', data);
23+
res.send('done');
24+
});
25+
})
26+
27+
router.get('/run', (req,res) => {
28+
let cmd = req.params.cmd;
29+
runMe(cmd,res)
30+
});
31+
32+
function runMe(cmd,res){
33+
// return spawn(cmd);
34+
35+
const cmdRunning = spawn(cmd, []);
36+
cmdRunning.on('close', (code) => {
37+
res.send(`child process exited with code ${code}`);
38+
});
39+
}

vulnerabilities/lib/db.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
1-
const config = require('../../config')
2-
var mysql = require('mysql');
3-
var connection = mysql.createConnection({
4-
host : config.MYSQL_HOST,
5-
port : config.MYSQL_PORT,
6-
user : config.MYSQL_USER,
7-
password : config.MYSQL_PASSWORD,
8-
database : config.MYSQL_DB_NAME,
9-
});
10-
1+
112

123
module.exports.getConnection = function(){
13-
connection.connect();
4+
145
return connection;
156
};

vulnerabilities/nosqli.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ router.post('/customers/find', async (req, res) => {
3737
const db = client.db(config.MONGODB_DB_NAME);
3838
const customers = db.collection("customers")
3939

40-
let myobj = { name: req.body.name };
40+
let name = req.body.name
41+
let myobj = { name: name };
4142
customers.findOne(myobj, function (err, result) {
4243
if (err) throw err;
4344
db.close();

vulnerabilities/sqli.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
const express = require('express');
22
const router = express.Router()
33

4-
const database = require('./db');
5-
const connection = database.getConnection();
6-
7-
4+
const config = require('../../config')
5+
const mysql = require('mysql');
6+
const connection = mysql.createConnection({
7+
host : config.MYSQL_HOST,
8+
port : config.MYSQL_PORT,
9+
user : config.MYSQL_USER,
10+
password : config.MYSQL_PASSWORD,
11+
database : config.MYSQL_DB_NAME,
12+
});
13+
14+
connection.connect();
815

916
router.get('/example1/user/:id', (req,res) => {
1017
let userId = req.params.id;

0 commit comments

Comments
 (0)