amon.so:劫持系统呼吁加强PHP - Debian Lenny和挤压
amon.so是一个与PHP解释器集成的库,拦截和操作由libc6提供的系统调用。 它用一个自定义函数替换execve()syscall,该函数执行额外的健全检查,以防止攻击者在系统中执行任意代码,从而利用基于Web的应用程序中的漏洞(例如bug cms)。 它是根据GPL许可证的条款发布的开放源代码软件,与兼容于CGI进程或Apache的DSO模块的PHP兼容。 官方网站是http://www.lucaercoli.it/
对于这个全新的项目,目前还没有预先构建的包,因此要使用它,您必须下载源代码并进行编译。
为了安装具有开发库和头文件的编译器(gcc),打开一个终端并执行以下命令:
apt-get install build-essential
下一步是下载源代码,以便我们可以使用wget获取文件:
wget http://www.lucaercoli.it/amon/amon.c
既然您拥有安装软件所需的一切,请执行此命令生成共享库文件:
gcc -fPIC -shared -ldl -o amon.so amon.c
最后在目录/ lib
中移动“amon.so”
mv ./amon.so /lib/
安装是完整的,只有将模块加载到Apache中。
根据您的配置,您必须遵循以下方法之一:
1)如果您的PHP通过mod_fcgid执行,打开调用PHP的包装器,并在其中插入字符串“export LD_PRELOAD = amon.so”。 例如:
#!/bin/sh export PHPRC=/etc/php5/cgi export LD_PRELOAD = amon.so exec /usr/lib/cgi-bin/php
之后重新加载apache2:
/etc/init.d/apache2 restart
2)如果PHP解释器与Apache的suEXEC支持一起使用,则创建一个简单的包装器来修改你的vhost配置。
添加这些指令:
ScriptAlias /php_amon/ "/usr/local/bin/" AddHandler php-script .php Action php-script /php_amon/php5-cgi
创建文件/ usr / local / bin / php5-cgi
并写入:
#!/bin/sh export LD_PRELOAD=amon.so exec /path/of/the/real/php5 "$@"
重新加载apache2:
/etc/init.d/apache2 restart
3)如果您使用libapache2-mod-php5运行PHP,请写入/ etc / apache2 / envvars
指令
export LD_PRELOAD=amon.so
并重新加载Web服务:
/etc/init.d/apache2 restart
要检查库是否加载,请在文件中写入以下PHP代码,并使用Web浏览器调用它:
<?php phpinfo(); ?>
就是这样,您的PHP安装已经被加固,并且您受到保护,不受任何基于Web的后门(如r57shell)和脚本小孩的攻击! 如果攻击者尝试执行不允许的命令(例如/ bin / bash
),则会生成警报并将其保存在站点的错误日志中。这是日志格式:
sh:command_name:命令未找到
这些是webuser可以执行的唯一命令:
“/ usr / sbin / sendmail”
“/ usr / lib / sendmail”
“/etc/alternatives/lib.sendmail”
“/usr/lib/sm.bin/sendmail”
“/ usr / bin / mail”
“/ bin / mv”
“/ bin / rm”
“/ usr / bin / unlink”
“/ bin / rmdir”
“/ bin / cp”
“/ bin / date”
“/ bin / bzip2”
“/ bin / gunzip”
“/ bin / gzip”
“/ usr / bin / unzip”
“/ bin / tar”
“/ usr / bin / host”
“/ usr / bin / file”
“/ usr / bin / uptime”
“/ bin / grep”
“/ usr / bin / diff3”
“/ bin / pwd”
如果要添加或删除某些命令,请在源代码中编辑变量“char * cmds []”,然后重新编译。