diff --git a/generator/src/main/java/com/reajason/javaweb/probe/ProbeContent.java b/generator/src/main/java/com/reajason/javaweb/probe/ProbeContent.java index 03dd6b72..b5f4a6ad 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/ProbeContent.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/ProbeContent.java @@ -10,5 +10,6 @@ public enum ProbeContent { JDK, Bytecode, Command, - BasicInfo + BasicInfo, + ScriptEngine } diff --git a/generator/src/main/java/com/reajason/javaweb/probe/generator/response/ResponseBodyGenerator.java b/generator/src/main/java/com/reajason/javaweb/probe/generator/response/ResponseBodyGenerator.java index a63a875f..0e94fa67 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/generator/response/ResponseBodyGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/generator/response/ResponseBodyGenerator.java @@ -9,6 +9,7 @@ import com.reajason.javaweb.probe.config.ResponseBodyConfig; import com.reajason.javaweb.probe.generator.ByteBuddyShellGenerator; import com.reajason.javaweb.probe.payload.ByteCodeProbe; import com.reajason.javaweb.probe.payload.CommandProbe; +import com.reajason.javaweb.probe.payload.ScriptEngineProbe; import com.reajason.javaweb.probe.payload.response.*; import com.reajason.javaweb.utils.ShellCommonUtil; import net.bytebuddy.ByteBuddy; @@ -51,6 +52,8 @@ public class ResponseBodyGenerator extends ByteBuddyShellGenerator { const filterMap = { - ResponseBody: ["Command", "Bytecode"], + ResponseBody: ["Command", "Bytecode", "ScriptEngine"], DNSLog: ["JDK", "Server"], Sleep: ["Server"], } as const; @@ -207,12 +208,12 @@ export default function MainConfigCard({ form, servers }: MainConfigCardProps) { const renderDynamicFields = useCallback(() => { const isBodyMethod = watchedProbeMethod === "ResponseBody"; - const isCommandOrBytecode = - watchedProbeContent === "Command" || watchedProbeContent === "Bytecode"; + const needParam = + watchedProbeContent === "Command" || watchedProbeContent === "Bytecode" || watchedProbeContent === "ScriptEngine"; const isSleepMethod = watchedProbeMethod === "Sleep"; const isServerContent = watchedProbeContent === "Server"; - if (isBodyMethod && isCommandOrBytecode) { + if (isBodyMethod && needParam) { return RequestParamField; } diff --git a/web/src/i18n/probeshell/en.json b/web/src/i18n/probeshell/en.json index 9df96e4a..aeadd073 100644 --- a/web/src/i18n/probeshell/en.json +++ b/web/src/i18n/probeshell/en.json @@ -3,6 +3,7 @@ "dnslog.host": "DNSLog Host", "probeContent": "ProbeContent", "probeContent.bytecode": "Bytecode", + "probeContent.script": "ScriptEngine", "probeContent.command": "Command", "probeContent.jdk": "JDK", "probeContent.server": "Server", diff --git a/web/src/i18n/probeshell/zh-CN.json b/web/src/i18n/probeshell/zh-CN.json index 7379bb2c..4ecc3f47 100644 --- a/web/src/i18n/probeshell/zh-CN.json +++ b/web/src/i18n/probeshell/zh-CN.json @@ -2,7 +2,8 @@ "buttons.generate": "生成探测马", "dnslog.host": "DNSLog 地址", "probeContent": "探测内容", - "probeContent.bytecode": "自定义字节码执行", + "probeContent.bytecode": "字节码执行", + "probeContent.script": "脚本引擎执行", "probeContent.command": "命令执行", "probeContent.jdk": "JDK 信息", "probeContent.server": "服务类型",