RCE漏洞面对各种过滤的绕过方法总结如下:
关键字过滤绕过:
- 使用转义符号:通过转义字符来绕过对关键字的直接过滤。
- 拼接法:将命令拆分为多个部分,在运行时进行拼接。
- 特殊变量:利用如$*、$@和${x}等特殊变量来构造命令。
- 反引号:使用反引号来执行命令,有时可以绕过对特定函数的过滤。
- 编码:使用Base64、8进制或16进制编码来隐藏命令内容。
命令执行函数过滤绕过:
- 编码:对命令或函数名进行编码,以规避过滤规则。
- 内敛执行:通过内敛PHP代码或其他脚本语言代码来执行命令。
- 利用find命令:通过find命令结合其他命令来绕过文件读取限制。
- $PATH环境变量:调整$PATH环境变量,使系统调用特定的命令版本。
- 字符串长度调整:通过增加或减少命令字符串中的空格或字符来规避长度限制。
空格、目录分隔符和特殊字符过滤绕过:
- 构造复杂请求字符串:利用URL编码、HTML实体编码等方式构造复杂的请求字符串。
- 无回显函数:使用如sleep等无回显函数来控制输出,通过观察系统响应时间来判断命令是否执行。
- 记录脚本:将命令执行结果记录到日志文件或其他可访问的位置。
- 利用GET请求中的open命令:即使在有输出限制的情况下,也能通过GET请求中的open命令引发RCE。
无字母数字RCE绕过:
- 正则表达式:利用正则表达式结合异或、或和取反等操作来创建特殊的payload。
- 脚本生成:根据PHP版本选择合适的脚本生成方式,以构造无字母数字的payload。
注意:以上方法仅为技术探讨,旨在提高安全意识和防护能力。在实际应用中,防范RCE漏洞的最佳方法是始终保持系统的安全更新,严格过滤输入并实施多层防御策略。务必时刻关注并加强代码审查和安全防护措施。