CTF实战:利用SMB协议漏洞挖掘敏感信息

张开发
2026/4/13 17:58:16 15 分钟阅读

分享文章

CTF实战:利用SMB协议漏洞挖掘敏感信息
1. SMB协议基础与漏洞原理SMB协议全称Server Message Block是微软和英特尔在1987年联合开发的网络文件共享协议。简单理解就是让不同电脑之间能够像访问本地文件一样共享文档和打印机。Linux系统通过Samba项目实现了对SMB的支持这使得Windows和Linux之间也能互通有无。这个协议主要运行在139和445端口139端口是早期通过NetBIOS over TCP/IP实现的445端口则是直接基于TCP/IP的现代实现我在实际渗透测试中发现很多管理员会忽略SMB服务的安全配置。最常见的问题有三个允许匿名访问空口令登录共享目录权限设置不当使用存在漏洞的旧版Samba服务去年参加某次CTF比赛时就遇到一个典型案例。靶机开放了445端口使用smbclient -L //靶机IP命令尝试匿名登录居然直接列出了所有共享文件夹。其中一个名为confidential的共享目录里赫然存放着数据库配置文件里面包含管理员账号密码。2. 实验环境搭建要点搭建实验环境时最容易踩的坑就是网络配置。建议使用VirtualBox的仅主机(Host-Only)网络模式这样攻击机和靶机就能处于同一网段。我常用的配置步骤如下在VirtualBox全局设置中创建Host-Only网络适配器为Kali和靶机虚拟机都选择这个网络适配器在Kali中执行ip a查看本机IP比如192.168.56.101使用netdiscover -i eth0 -r 192.168.56.0/24扫描靶机IP最近发现很多新手会遇到靶机IP无法获取的问题。这时候可以尝试arp-scan -l --interfaceeth0这个命令比netdiscover更轻量响应也更快。如果还是找不到靶机记得检查虚拟机的网络适配器是否启用以及防火墙是否阻止了SMB流量。3. 信息探测实战技巧使用nmap扫描时我习惯先用快速扫描确认存活主机nmap -sn 192.168.56.0/24发现靶机后再进行深度扫描nmap -A -T4 -p- 靶机IP -oN scan_result.txt重点要关注这几个关键信息开放的SMB端口139/445Samba版本号可能存在已知漏洞匿名访问是否允许去年在某次演练中我发现一个有趣的技巧如果nmap显示Samba版本较旧可以尝试searchsploit samba 3.0.20可能会找到远程代码执行漏洞。不过现在大多数CTF靶机更倾向于考察信息泄露漏洞而非直接利用远程溢出。4. SMB信息泄露利用详解当发现允许匿名访问的SMB服务时可以按照这个流程深入挖掘列出所有共享目录smbclient -L //靶机IP -N尝试访问敏感共享目录smbclient //靶机IP/share -N进入共享后使用这些命令ls查看文件列表get filename下载文件mget *下载所有文件我曾在某个靶机的backup共享目录中发现过.ssh文件夹里面竟然有id_rsa私钥文件。拿到这个私钥后直接通过ssh登录就获得了系统权限。这种信息泄露往往比复杂的漏洞利用更有效。对于WordPress站点一定要检查这些文件wp-config.php数据库凭证.htaccess可能包含敏感配置/wp-content/uploads/可能包含备份文件5. 权限提升与flag获取拿到初始shell后我通常会立即做这几件事升级交互式shellpython -c import pty; pty.spawn(/bin/bash)查看当前用户权限sudo -l搜索敏感文件find / -name *flag* 2/dev/null find / -name *.txt -o -name *.php 2/dev/null检查历史命令history cat ~/.bash_history在某个CTF比赛中我通过SMB泄露的数据库密码竟然和系统用户密码相同。直接使用su - username切换用户就拿到了更高权限。这种密码复用的情况在实际渗透中也很常见。最后提醒一点拿到flag后记得检查是否有多个flag文件。有些CTF会设置阶段性flag比如user.txt和root.txt分别对应不同权限级别的flag。

更多文章