linux 远程执行漏洞,Linux版“永恒之蓝”远程代码执行漏洞技术分析

作者:天融信阿尔法实验室 李喆 李闪 姜利晓

一、漏洞描述

Samba 是一套可使 UNIX 系列的操作系统与微软 Windows 操作系统的 SMB/CIFS 网络协议做连结的自由软件。这个漏洞使得 Samba 客户端可以主动上传共享库到 Samba 服务器同时加载并执行该动态库导出函数。

攻击者利用漏洞可以进行远程代码执行,具体执行条件如下:

系统开启了文件/打印机共享端口445

共享文件夹拥有写入权限

恶意攻击者需猜解 Samba 服务端共享目录的物理路径

满足以上条件时,由于 Samba 能够为选定的目录创建网络共享,当恶意的客户端连接上一个可写的共享目录时,通过上传恶意的共享库文件,触发漏洞使 Samba 服务端加载并执行它,从而实现了远程代码执行。根据服务器的配置情况,恶意代码还有可能以 root 权限执行。

漏洞编号:CVE-2017-7494

危害评级:高危

影响范围:所有介于 Samba 3.5.0 ~ 4.6.4 之间的版本。其中(4.6.4/4.5.10/4.4.14 版本)不受影响。

二、漏洞复现

通过一个可写账号,上传恶意共享库文件,触发恶意共享库文件实现远程命令执行。

安装 Samba 按照以下要求安装即可

Samba Version < 4.6.4

Samba Version < 4.5.10

Samba Version < 4.4.14

配置 Samba 添加下面这些即可,如果之前 conf 文件中包含的注释即可

workgroup = WORKGROUP

netbios name = LinuxSir05

server string = Linux Samba Server TestServer

#security = share

[models]

path = /tmp

available = yes

browsable = yes

writable = yes

create mask = 0777

write list = debian

guest ok = yes

如下图所示:

24abbbe4c7d1bdb9d2d7a6a90fe7019c.png

然后重新加载

/etc/init.d/samba reload

最后启动服务

/etc/init.d/samba restart

26cf0794b84673b79fe12278088efcb3.png

配置 msf

Use exploit/linux/samba/is_known_pipename

e6c871211485692ef14f8b5e004d6004.png

Set target 0

Set RHOST localhost

Exploit

4cf8369e7f9aed5a53178b597dd5ea6a.png

最终结果如图所示:

c47742de895270c0c62e57d73aa5d777.png

三、漏洞原理分析

下载版本4.6.3 进行静态分析漏洞原理:

漏洞通过一个具有可以权限的 Samba 账号上传一个恶意共享动态库上去,并触发恶意功能。

我们这里阐述的是如何加载的恶意动态库。

漏洞触发位置:

56b7d47689aa76e6b15b04fd36865a80.png

4476ea8d98f8bbd8b1790db7c8ac4a00.png

在这里可以看到 pipename ,这个是管道名,需要利用这个管道名是恶意共享库so文件参数,比如/tmp/xxx.so , 这个参数在传递进 smb_probe_module 里,跟进下这个函数:

03f262eb92eb7656ad019e1932861978.png

10b2d3c3fbbfd610e3ea79c74158c2e2.png

又把参数传递进入了do_smb_load_module()函数里,再跟进

3df4a75f5b63feda77f3707b1b9398ae.png

可以看到如果管道名字存在/, 会进入else 里调用load_module()函数,把管道名传递进来,再继续跟进:

2c1c233d37c1510961f6ad72f4206bcb.png

可以看到把管道名传递进入到 dlopen 函数也就是打开恶意构造的共享库文件,接着把句柄给了 dlsym 加载SAMBA\_INIT\_MODULE,也就是说恶意共享库的功能要写入到 Samba 初始化函数里才能被加载,这样就触发了恶意构造的函数功能呢。

四、修复建议

官方补丁:

官方已经发布安全更新包,用户可以通过以下2种方案进行安全更新操作。

通过源码安装的 Samba 使用者,从 Samba 官方下载补丁包或者安装最新版 Samba

安全补丁下载地址

使用二进制分发包(RPM等方式)的 Samba 使用者通过yum,apt-get update等命令进行安全更新操作。

临时缓解策略:

修改 Samba 文件系统中可写文件共享目录的安全属性,使用 “noexec” 选项。

注:noexec 选项指明在该文件系统上不允许二进制文件或脚本的执行

修改 Samba 配置文件smb.conf,在 [global] 节中增加如下信息

“nt pipe support = no”。 修改完毕重启 Samba 服务。

本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/307/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值