2022-12-15 00:52:34
SQL注入失败的主要原因包括参数未真正进入SQL查询、前端或后端过滤、误判注入类型及WAF/IDS早期拦截;排查需确认技术栈、分析注入点特性、解读错误信息、识别防御机制;解决方案涵盖绕过WAF/IDS的策略、应对盲注挑战、坚持防御原则并利用工具辅助分析。
一、SQL注入失败的核心原因参数未真正进入SQL查询Web应用可能对用户输入进行严格的类型转换或白名单校验。例如,若参数预期为整数,输入'or 1=1--可能被直接转换为0或过滤非数字字符,导致payload无法成为SQL语句的一部分。
前端或应用层面的强过滤前端JavaScript可能限制字符输入,后端框架(如PHP的magic_quotes_gpc)可能默认转义单引号、双引号等特殊字符,甚至直接删除。这些字符可能被编码为%27,但服务器端未正确解码,导致无法形成有效SQL语法。
误判注入类型攻击者可能误判注入类型(如基于错误的注入或联合查询),但目标不返回详细错误信息,或字段数、数据类型不兼容,导致payload失效。
WAF/IDS的早期拦截基础SQL注入特征(如' OR 1=1、UNION SELECT)可能在请求到达应用服务器前被WAF/IDS拦截,返回403 Forbidden或通用错误页面,难以判断拦截来源。
确认目标环境与技术栈需明确数据库类型、版本、Web服务器、编程语言及ORM框架使用情况。例如,MySQL与PostgreSQL的函数差异会影响payload设计,ORM框架可能自带参数化查询机制。
分析注入点特性检查参数类型(GET/POST/Header/Cookie)、数据编码、输入验证机制(前端/后端)及转义处理。例如,GET参数可能通过URL编码传递,而POST参数需关注JSON或表单数据的处理方式。
捕获并解读错误信息应用程序返回的错误信息(哪怕是通用“系统错误”)能提示后端处理方式。例如,数据库连接错误可能暗示权限问题,而语法错误可能暴露SQL语句结构。
识别与评估防御机制通过多次尝试不同payload,观察响应差异,判断是否存在WAF/IDS及其拦截规则。例如,' OR 1=1被拦但' OR '1'='1通过,可能说明WAF对数字1有特埋漏殊处理。
识别WAF的存在与类型观察HTTP响应头(如X-WAF-Rule、Server头中的Cloudflare或ModSecurity),或通过特定错误页面/返回码推断WAF类型。
定位拦截点与规则发送微调后的payload,观察触发拦截的字符或关键词。例如,SELECT被弯悉烂拦但SeLeCt通过,可能说明WAF不区分大小写。
利用编码绕过尝试URL编码(%27)、Unicode编码(%u0027)、十六进制编码(0x27)或HTML实体编码(')。关键在于WAF是否解码及解码后是否匹配规则。
混淆与变异使用SQL注释符号(//、--、#)拆分关键词(如SEL//ECT),或替换空格为非标准空白字符(如%0a、%0b)。等价函数(如CONCAT_WS()替代CONCAT())和大小写/双写(如selselectect)也可尝试。
HTTP参数污染(HPP)若Web服务器处理多个同名参数的方式存在缺陷,可通过发送?id=1&id=2'OR 1=1--绕过WAF。WAF可能只检查第一个参数,而后端拼接所有参数值。
工具辅助分析使用Burp Suite的Intruder模块对payload进行模糊测试,观察HTTP响应变化,比手动尝试更高效。
挑战
效率低下:盲注需逐字、逐位猜测数据,提取一个数据库名可能需上百次请求。
网络波动影响判断:时间盲注依赖响应时间,网络延迟或服务器负载波动可能导致误判。
数据库函数差异:不同数据库的时间延迟函数不同(如MySQL的SLEEP()、SQL Server的WAITFOR DELAY),需针对性构造payload。
WAF/IDS检测异常流量:大量重复、具有特定时间延迟的请求模式易被拦陆氏截。
应对策略
利用自动化工具:SQLMap可自动化构造payload、发送请求、解析响应并提取数据,提高效率。
优化payload:采用二分法查找或位运算,减少请求次数。例如,判断字符串长度时一次性判断范围,而非逐个尝试。
绕过WAF/IDS:分散请求(多线程、多IP代理)、调整时间延迟(如将SLEEP(5)改为SLEEP(0.5)),并结合编码、混淆等技巧。
参数化查询:使用预编译语句(Prepared Statements)或ORM框架的参数化查询,确保用户输入作为数据处理而非SQL代码。
最小权限原则:限制Web应用连接数据库的用户权限,仅授予完成业务逻辑所需的最小权限(如禁止DROP TABLE或读取敏感文件)。
日志监控与异常行为分析:实时监控Web服务器和数据库访问日志,针对异常高频请求、特殊字符或响应时间延迟及时告警。
WAF部署与调优:定期更新WAF规则,并根据实际攻击情况调优,拦截大部分自动化扫描和初级攻击。