我一直在尝试修复用户输入传递到 php exec 函数的漏洞。使用 escapeshellarg 对输入进行清理,但它似乎仍然允许注入和执行代码。我通过执行 nslookup 使用 Burp Suite 的协作者功能对此进行了测试。
我无法提供确切的代码,但下面是一个非常接近的示例。有人可以解释一下为什么这有效吗?
$input = 'filename$(whoami).pdf';
$cmd = 'rm -rf ' . escapeshellarg($input) . ' 2>&1';
exec($cmd);
逃跑攻击命令不够。 攻击者避免逃逸功能。
基本上不应该使用exec()函数。 因为,exec()函数是一个非常强大的函数,所以,func给了我们意想不到的举动。