我正在寻找一些建议..
我设法得到一个php脚本来调用另一个页面,然后以root身份运行系统命令。
这就是我所做的,我想知道我是否能够保护它。
在etc/sudoers.d
我添加了一个包含文件列表的文件,wwwrun用户可以以root身份运行而无需密码。它包含类似于:
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filea
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/fileb
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filec
我的主网站上有一个test.php页面,对此的权限为777
& wwwrun:root
在test.php中我有一些jquery,它使用ajax来调用action.php&action=aaa
在action.php中我有:
if ($_REQUEST['action']) == 'aaa') {
exec('/Web/scripts/helper/filea', $res);
}
if ($_REQUEST['action']) == 'bbb') {
exec('/Web/scripts/helper/fileb', $res);
}
if ($_REQUEST['action']) == 'bbb') {
exec('/Web/scripts/helper/filec', $res);
}
filea
包含几个bash命令。此文件包含655
& root:root
权限。
filea,fileb和filec中的命令是固定的,如果传递了一个变量,它只是告诉它在文件中运行另一个固定命令。
如何让这更安全?显然没有root权限是最好的,但我需要运行一些命令来移动,编辑,更新,安装文件等。
更新
只是为了确认这是有效的。我想让它更安全一点。
我尝试将所有权更改为wwwrun:root和权限更改为744
这使得只有root才能编辑文件,我认为这是一个好主意..
由于
答案 0 :(得分:2)
关于保护应用程序的一些建议,按影响排序:
尝试重新设计系统,以便不需要root权限。您指出了这一点,如果您可以提供有关应用程序功能的更多详细信息,我们可以探索它。这可能是您花时间保护应用程序的最佳投资。
保护脚本不被非root用户修改。如果wwwroot可以修改脚本内容,则可以以root身份运行任何命令:
确保文件归root用户所有,并且wwwdata属于一个组,除root之外的任何人都可以修改它们。您可以将wwwrun权限限制为仅执行并取消其他权限,否则攻击者只能覆盖文件内容并执行任意命令:
wwwrun$ cp evil /Web/scripts/helper/filea && sudo /Web/scripts/helper/filea
确保所有直到并包含脚本的路径都归root所有,并且只有root才能修改它们。否则,攻击者只能移动目录来执行任意命令:
wwwrun$ rm -rf /Web/script && mkdir -p /Web/script/helper
wwwrun$ cp evil /Web/scripts/helper/filea && sudo /Web/scripts/helper/filea
对您在脚本中运行的所有命令执行此操作
确保所有引用的命令和文件都使用绝对路径
检查正在执行的脚本的安全性:它们以root用户身份运行,如果它们不是以root身份运行(临时文件,不安全的依赖项等),攻击者将利用它们
< / LI>修改sudoers文件以确保命令不能使用参数运行,方法是使用&#34;&#34;语法,例如:
wwwrun ALL=(ALL) NOPASSWD: /Web/scripts/helper/filea ""
检查比赛条件 - 例如攻击者可以同时并发执行多个命令,检查这种并发是否会引入漏洞。如果需要,请确保脚本不能通过使用锁定机制同时运行
答案 1 :(得分:0)
尝试向root
授予www-data
权限!
要求www-data
有权阅读。您还可以尝试将文件owner
和group
更改为www-data
。