vik*_*eve 1 php bash http-post code-injection webhooks
我写了一个webhook来集成到chat(slack/mattermost api)中.
启动和运行的最简单方法是一个快速的PHP脚本,如下所示:
<?php
$token = $_POST["token"];
$arg = $_POST["text"];
$output = exec("./webhook_script.sh {$token} {$arg}");
Run Code Online (Sandbox Code Playgroud)
目前,脚本工作正常,但我担心有人可以恶意地执行http POST,其中查询参数text(脚本:) $arg具有某种注入攻击.
例: http://myserver/webhook.php?token=abc&text=123;rm -rf *
因此$arg变得123; rm -rf和exec命令执行恶意rm -rf *
这与我熟悉的"sql注入"本质上类似,但我不确定如何使bash脚本安全...
是以某种方式引用参数,或者使用a regex来检查脚本参数是一件简单的事情吗?
您需要escapeshellarg()在传递每个shell参数之前调用它们exec().这将每个参数包装在单引号中,并转义可能存在的任何单引号,从而使任何此类攻击受挫.
$token = escapeshellarg($_POST["token"]);
$arg = escapeshellarg($_POST["text"]);
Run Code Online (Sandbox Code Playgroud)