0day漏洞:KDE4/5可通过打开文件执行命令

原文:Lawrence Abrams 2019.8.6

翻译:小雅 2019.8.20

 

漏洞来源:该漏洞是安全研究员Dominik Penner发现后,联系BleepingComputer网站发布,由小编翻译并发布于公众号“网络安全雅讯”,转载请标明。

漏洞描述:国外安全研究员发现KDE存在0day,攻击者可以通过欺骗用户下载存档文件、提取存档文件并打开文件夹来执行代码,涉及版本为4和5,几乎覆盖现使用的所有Linux系统。注:KDE是一种运行于 Linux、Unix 以及FreeBSD 等操作系统上的自由图形桌面环境

经研究发现KDEKDesktopFile类容易受到命令注入攻击。当实例化.desktop或.directory文件时,它允许通过KConfigGroup::readEntry()函数用KConfigPrivate::expandString()计算环境变量和shell扩展。攻击者可将命令嵌入.desktop文件远程用户下载并在文件管理器中查看该文件,或者将该文件的链接拖放到他们的文档或桌面中,即可执行攻击命令

漏洞成因:KDE 4/5中,允许.desktop和.directory文件中嵌入的命令只需要打开一个文件夹就可以执行,在某些情况下,还可以将存档解压缩到桌面。

现状:Penner在公开披露之后向Ubuntu报告了这个bug。几乎所有Linux发行版目前都在使用KDE的脆弱版本。

 

Shell扩展可致代码执行

兼容freedesktop .org的桌面环境利用特殊的.desktop和.directory文件来配置应用程序和文件夹的显示方式。

.desktop文件用于在KDE菜单中注册应用程序,而.directory文件用于描述KDE应该如何显示文件夹,.directory文件类似于Windows系统的desktop.ini文件。

每个文件中都有不同的字段,这些字段告诉桌面应该如何显示目录和应用程序。其中一个字段称为“Icon”,在.desktop文件中,它指定KDE应该在菜单中显示的图标路径,对于.directory文件,它将指定在模拟器中查看文件夹时使用的图标。造成这个漏洞的原因是KDE允许使用shell扩展通过环境变量或执行命令动态生成这些字段的值。

Penner:“他们使用与freedesktop规范相同的语法,但是因为他们也允许shell扩展(freedesktop不允许这个ifself,注:freedesktop是一个致力于Linux和其他类Unix上的X窗口系统的桌面环境之间的互操作性和基础技术共享的项目),所以它是可利用的。这更像是一个设计缺陷,.desktop和.directory文件的配置语法应该与freedesktop的规范一致。

而且,任何入口都可以被注入。从理论上讲,这可以在其他很多领域得到应用,但是通过图标阅读条目是最容易的。

由于这些类型的文件在海豚或桌面中被自动读取,因此攻击者可以创建恶意的. Desktop和.directory文件夹来执行位于“Icon”字段中的命令。

当被问及是否有办法减轻这个缺陷时,Penner告诉我们,修复必须来自KDE,禁用文件预览也没有帮助。

“即使在文件管理器的视图属性中禁用文件预览,它仍然会触发。”

 

测试漏洞

在测试中,简单地创建了一个ZIP文件,其中包含一个带有.directory文件的子文件夹。这个目录文件的Icon字段包含一个命令,用于从服务器下载test.sh脚本并执行它来启动计算器

Zip文件内容

一旦用户下载test.zip文件,提取并打开它,KDE将读取.directory文件并执行分配给Icon字段的命令。您可以在下面看到这个PoC的实际演示。

BleepingComputer PoC demo

Penner还创建了一个演示视频,展示如何使用这个bug打开反向shell。

视频地址:https://www.youtube.com/watch?v=l4z7EOQQs84

视频打不开的可以去公众号看

公众号二维码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值