在php程序中包含有file inclusion的时候,php要开启一下两个功能:
allow_url_fopen on
allow_url_include on
但是开启这两个功能之后伴随的是url漏洞,例如:
http://192.168.2.109/DVWA-1.9/vulnerabilities/fi/?page=include.php
这个连接是正常的连接,但是如果在page后面访问的如果是C:\XXX文件,这样就是php的一个漏洞,如何去防御这种注入
有很多人说把allow_url_fopen on 以及allow_url_include on关闭,但是,关闭之后php很多功能模块无法使用,现在最好的解决方法是用Suhosin。
Suhosin是php的一个扩展模块,能够加强php脚本语言的安全性。
有关Suhosin的详细信息请参见:http://www.shenqhy.com/using-the-php-suhosin-protect-your-environment-install-suhosin.html
linux下php安装Suhosin
1、安装编译工具
yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils patch perl
2、安装suhosin
cd /usr/local/src #进入软件包存放目录
wget http://download.suhosin.org/suhosin-0.9.33.tgz #下载
tar zxvf suhosin-0.9.33.tgz #解压
cd suhosin-0.9.33 #进入安装目录
/usr/local/php5/bin/phpize #用phpize生成configure配置文件
./configure --with-php-config=/usr/local/php5/bin/php-config #配置
make #编译
make install #安装
安装完成之后,出现下面的界面,记住以下路径,后面会用到。
/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/ #suhosin模块路径
3、配置php支持suhosin
vi /usr/local/php5/etc/php.ini #编辑配置文件,在最后一行添加以下内容
extension="suhosin.so"
4、测试
vi /usr/local/nginx/html/phpinfo.php #编辑
<?php
phpinfo();
?>
:wq! #保存退出
service php-fpm restart #重启php-fpm
service nginx restart #重启nginx
至此可以用phpinfo查看php中关于SUhosin信息。
参见:http://www.osyunwei.com/archives/5313.html