Javaアプリケーションのバックドア

私は最近、サーバーでGroovyコードを実行できる最も単純なグルーブを説明する記事に出会いました。 デバッグバックドアを整理するのに非常に便利なように思えました。



問題は、グルーブがまだサーバーであり、まだ厚いSwingクライアントがあることです。 彼のために、私は似たようなことをしたいと思いますが、クライアントにこれのために埋め込まれたJettyまたはTomcatを埋め込むこともそのように見えました。



幸いなことに、標準Javaライブラリに単純なWebサーバーが存在するという別の記事が目を引きました。 だから私はそれを使用することにしました。



Mainを書きます:



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>" : ""} """ } }
      
      







開始、動作します!



画像






All Articles