рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рджрд░рд╡рд╛рдЬреЗ

рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЦрд╛рдВрдЪреЗ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдЧреНрд░реВрд╡реА рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбрд┐рдмрдЧ рдмреИрдХрдбреЛрд░ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрд╛ред

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЦрд╛рдВрдЪреЗ рдЕрднреА рднреА рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдореЛрдЯреА рд╕реНрд╡рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдореНрдмреЗрдбреЗрдб рдЬреЗрдЯреНрдЯреА рдпрд╛ рдЯреЛрдореИрдЯ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рднреА рдРрд╕рд╛ рд╣реА рд▓рдЧрддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рдФрд░ рд▓реЗрдЦ рдиреЗ рдореЗрд░реА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ - рдорд╛рдирдХ рдЬрд╛рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╣рдо рдореБрдЦреНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

public class Main { public static void main(String[] args) { //      ,     HttpBackdoorRunner runner = new HttpBackdoorRunner(18999, true); runner.start(); } } 


рд╣рдо рдЦрд╛рдВрдЪреЗ рдкрд░ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрд╕рд╛рди рд╣реИ :)

 import com.sun.net.httpserver.HttpServer import java.util.concurrent.Executors /** *        (  -    !) */ class HttpBackdoorRunner { final int port final boolean silent HttpBackdoorRunner(int port, boolean silent) { this.port = port this.silent = silent } def start() { try { InetSocketAddress addr = new InetSocketAddress(port); HttpServer server = HttpServer.create(addr, 0); server.createContext("/", new BackdoorHandler()); server.setExecutor(Executors.newCachedThreadPool( )); server.start(); } catch(Exception e) { if (silent) { // Ignore } else throw new RuntimeException(e) } } } 


рдЕрдм HTTP рд╕реНрд╡рдпрдВ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ:

 /** *             -     *      , URI      ,    -   */ class BackdoorScriptRunner { void runScript(script, responseBody, uri) { def scriptOutput = new ByteArrayOutputStream() if (script) { // Redirect output def saveOut = System.out def stream = new PrintStream(scriptOutput) System.out = stream try{ def result = new GroovyShell().run(script, "dynamic.groovy"); } catch (Throwable e) { e.printStackTrace(stream); } System.out = saveOut } responseBody.println createHTML(uri, script, scriptOutput) responseBody.close(); } String createHTML(uri, script, scriptOutput) { """ <form action="${uri}" method="post"> <h2>BackDoor</h2> Code comes here: <br> <textarea cols="120" rows="5" name="groovyscript"> ${script ? script : ""}</textarea> <br> <input type="submit" value="Go!" /> </form> <br> ${scriptOutput.toString() ? "<h2>Output</h2><pre>${scriptOutput}</pre>" : ""} """ } } 


рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдЫрд╡рд┐

Source: https://habr.com/ru/post/In149427/


All Articles