使用Suhosin保护PHP应用系统(禁用eval)
来源:互联网 发布:网络匿名举报占比 编辑:程序博客网 时间:2024/04/30 01:47
一、什么是Suhosin?
Suhosin是一个PHP程序的保护系统。它的设计初衷是为了保护服务器和用户抵御PHP程序和PHP核心中,已知或者未知的缺陷。Suhosin有两个独立的部分,使用时可以分开使用或者联合使用。第一部分是一个用于PHP核心的补丁,它能抵御缓冲区溢出或者格式化串的弱点;第二部分是一个强大的PHP扩展,包含其他所有的保护措施。
二、下载地址
使用Gentoo linux或者 FreeBSD的朋友,可以ports中找到Suhosin。使用OpenSuSE linux ,Mandriva Linux,Debian Linux的朋友在发行版发布的包中找到Suhosin
http://www.hardened-php.net/suhosin/download.html
打开后,下载Suhosin Extension 0.9.31,Suhosin Patch要对应PHP的版本下载
三、特性列表
1)引擎保护(仅补丁)
- 保护内部的内存管理抵御缓冲区溢出
- 防止Zend哈希表被破坏
- 防止Zend链接列表被破坏
- 保护PHP核心及其扩展抵御格式化串弱点
- 某些libc realpath() 产生的错误
2)各种特性
- 模拟器保护模式
- 增加两个函数sha256()和sha256_file()到PHP核心中
- 所有平台,加入CRYPT_BLOWFISH到函数crypt()中
- 打开对phpinfo()页的透明保护
- SQL数据库用户保护(测试阶段)
3)运行时保护
- 加密cookies
- 防止不同种类的包含漏洞(不允许远程URL包含(黑/白名单);不允许包含已上传的文件;防止目录穿越攻击)
- 允许禁止preg_replace() /e 修改选项
- 允许禁止eval()函数
- 通过配置一个最大执行深度,来防止无穷递归
- 支持每个vhost配置黑白名单
- 为代码执行提供分离的函数黑白名单
- 防止HTTP响应拆分漏洞
- 防止脚本控制memory_limit选项
- 保护PHP的superglobals,对于函数extract() import_request_vars()
- 防止mail()函数的新行攻击
- 防止preg_replace()的攻击
4)Session 保护
- 加密session数据
- 防止session被劫持
- 防止超长的session id
- 防止恶意的session id
5)过滤特性
6)日志特性(略)
参考http://www.hardened-php.net/suhosin/a_feature_list.html
四、安装Suhosin
1)下载,地址上面已经给出
2)解压和打补丁
# tar jxvf php-5.2.10.tar.bz2
# gunzip suhosin-patch-5.2.10-0.9.7.patch.gz
# cd php-5.2.10
# patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch
# ./configure --your-options
# make
# make install
安装扩展
# tar zxvf suhosin-0.9.31.tgz
# cd subosin-0.9.31
# phpize
# ./configure –with-php-config=/usr/local/php/bin/php-config(这个路径根据自己实际情况设置)
# make
# make install
然后编辑php.ini 加入extension=suhosin.so
重启httpd,写一个phpinfo()页,如下
五、配置
所有配置选项参考
http://www.hardened-php.net/suhosin/configuration.html
六、代码测试
eval执行漏洞
//ex2.php
<?php
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("$var = $arg;");
echo "$var =".$var;
}
?>
suhosin有三个选项控制eval
suhosin.executor.eval.whitelist 白名单
suhosin.executor.eval.blacklist 黑名单
suhosin.executor.disable_eval 禁用eval
很多程序需要eval,所以我们不能禁用,使用黑名单禁止一些危险的函数
编辑php.ini
[Suhosin]
suhosin.executor.eval.blacklist=phpinfo,fputs,fopen,fwrite
根据实际情况自行设定
未设置前
设置后
包含漏洞
suhosin.executor.include.max_traversal 包含的最大目录深度,在包含的文件名中有多少个../就禁止,例如值为2时,../../etc/passwd会禁止,值为3则允许,对于大多数程序,这个值设为4或5比较合适
suhosin.executor.include.whitelist 允许包含的URL,用逗号分隔
suhosin.executor.include.blacklist 禁止包含的URL,用逗号分隔
<?php
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
require_once($arg);
}
?>
未设置前
设置suhosin.executor.include.max_traversal=3
上传漏洞
suhosin.upload.max_uploads
suhosin.upload.disallow_elf
suhosin.upload.disallow_binary
suhosin.upload.remove_binary
suhosin.upload.verification_script 上传文件检查脚本
可以自己写一个脚本检查上传文件是否有webshell特征,然后suhosin.upload.verification_script 的值是这个脚本的绝对路径
注入漏洞
suhosin.sql.bailout_on_error 还不支持 -_-#
其他更深入的防护措施,还有待研究,参考suhosin选项
http://www.hardened-php.net/suhosin/configuration.html
- 使用Suhosin保护PHP应用系统(禁用eval)
- 使用Suhosin保护PHP应用系统
- 使用suhosin加固PHP
- 如何禁用php eval
- 如何禁用php eval
- 如何禁用php eval
- php如何禁用eval函数
- 防止一句话木马,php禁用eval函数
- php eval使用
- flyme5禁用系统应用
- 用Suhosin加强PHP脚本语言安全性
- 用Suhosin加强PHP脚本语言安全性
- 用Suhosin加强PHP脚本语言安全性
- 用Suhosin加强PHP脚本语言安全性
- php中eval函数的危害与正确禁用方法
- php中eval函数的危害与正确禁用方法
- php 如何禁用eval() 函数实例详解_php实例
- PHP中eval函数的危害与正确禁用方法
- 歌词
- H5开发时,利用谷歌浏览器模拟手机浏览器详细配置教程
- 程序员如何快速提升自己?有的人工作多年还是老样子的原因是什么?最后谈谈PDCA
- XAMPP 的 Linux 版 (x86 兼容处理器版)安装配置使用详细介绍,教你建好一个LAMPP站!
- 网站环境apache + php + mysql 的XAMPP,如何实现一个服务器上配置多个网站?
- 使用Suhosin保护PHP应用系统(禁用eval)
- &与&&的区别及使用位运算做乘法
- Aaron Swartz – 互联网天才开挂的人生历程:每时每刻都问自己,现在这世界有什么最重要的事是我能参与去做的?
- 春节将至,又到了评绩效拿年终奖的时候!程序员绩效KPI 这个弥久历史谜题该怎么算呢?
- 深度学习:从头设计一个TensorFlow3一样的新一代深度学习系统,到底需要把握哪些要点?
- 移动端UI设计越来越流行的高斯模糊(Gaussian blur)和毛玻璃效果(磨砂效果),如何使用Android RenderScript简单实现?
- 如何在程序开发项目中选择合适的 JavaScript 框架,节省时间和成本的9款极佳的JavaScript框架介绍
- 代码示例:一些简单技巧优化JavaScript编译器工作详解,让你写出高性能运行的更快JavaScript代码
- 一个优秀程序员必须知道的十大开发用到的最实用最基本算法详解,你了解几种?