-
-
[原创]cve-2017-7494 Samba远程代码执行分析
-
2017-5-31 17:04 6156
-
1、背景
前几天小伙伴们一直在讨论的Samba漏洞,我也试着复现分析一下。
本来前几天搞定了,一直没时间上传上来。
2、复现
漏洞影响的是Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中间的所有版本,在github上下载了4.6.2版本,手工编译,配置一个可匿名读写等目录,运行 sudo ./bin/smbd -i。
两个exp 地址
1. https://github.com/omri9741/cve-2017-7494
2. https://www.exploit-db.com/exploits/42060/
经测试都能成功利用
3、exp分析
一开始看360博客,关于这个漏洞的利用过程有点懵,又看了看exploit-db漏洞利用的exp,还是没看懂
不过回过头来感觉还是要从exp入手
exp里面,作者重写了_retrieveFileFromOffset_SMB1Unix 这个方法
def hook_retrieveFile(self): self._retrieveFileFromOffset = self._retrieveFileFromOffset_SMB1Unix
看来关键就是这个函数改了什么
和原码对比之后就少了一句
path = path.replace('/', '\\'
不过也正好对应了360博客里面的利用过程:构造一个有’/’ 符号的管道名或路径名
光这么看感觉还不明朗,试着动态调试
4、动态分析
gdb 附加smbd 进程
来到触发漏洞等函数
进入函数,来到关键的判断
加载输入等模块
找到samba_init_module
返回并执行
这是这个漏洞触发的过程
如果增加之前的替换代码,看看会发生什么
‘\’ 被替换,也就无法利用
利用等话,主要依靠加载的so文件,而且smbd是root权限。
6、参考
http://blogs.360.cn/blog/samba%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9Ecve-2017-7494%E5%88%86%E6%9E%90/
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!