一:漏洞名称:
PHPInfo信息泄漏、phpinfo()函数信息泄漏
描述:
PHPInfo函数信息泄露漏洞常发生一些默认的安装包,比如phpstudy等,默认安装完成后,没有及时删除这些提供环境测试的文件,比较常见的为phpinfo.php、1.php和test.php,虽然通过phpinfo获取的php环境以及变量等信息,但这些信息的泄露配合一些其它漏洞将有可能导致系统被渗透和提权。
phpinfo()函数返回的信息中包含了服务器的配置信息,包括:
1)PHP编译选项以及文件扩展名的相关信息;
2)php的版本信息
3)php的配置信息;
4)数据库信息;等敏感信息。这些敏感信息会帮助攻击者展开进一步的攻击。
检测条件:
1.被测网站web服务正常
2.采用PHP中间件架构的网站。
检测方法:
如果网站存在该漏洞,则通常通过web扫描工具进行扫描可得到链接。
手工构造网站url,类似http://127.0.0.1/index.php?cmd=phpinfo();或者http://127.0.0.1/phpinfo.php直接访问:
分析文件 :(参考:http://www.bubuko.com/infodetail-2468379.html)
1. 网站真实ip
当网站使用cdn或群集时,那么该文件会显示网站真实ip地址
2. 网站路径
当网站绝对路径泄漏时,如果能写webshell,则可以直接getshell;当日志文件路径泄露时,如果存在文件包含,则直接包含日志文件getshell
3. 应用信息
通过phpinfo可以查看到支持的特殊服务,例如:redis、fastcgi、memcache、ImageMagick等
如果存在redis、memcache等则可尝试未授权访问获取信息
如果存在fastcgi,则可尝试远程代码执行
如果使用了ImageMagick,则可根据版本尝试远程代码执行
4. 一些敏感配置
allow_url_include #该项如果开启,则支持远程文件包含,如果有存在文件包含的文件则可直接getshell,或可以使用php伪协议
disable_function #该项表示禁用的函数名
magic_quotes_gpc #php5.4以下版本有的函数,默认开启,会对特殊字符进行转移
5.php版本信息
php版本信息,每个php版本都有变化和特性
像php5.3.4以下 + magic_quotes_gpc off 可%00截断
关于%00截断可参考:(未完成,预计7月份补上(基于CTF靶场,单独写一篇博客))
漏洞修复:
1.建议限制此类脚本的访问权限或者删除对phpinfo()函数的调用:修改php.ini文件中的disable_functions配置项,把“phpinfo”添加到清单中:disable_functions=phpinfo
2.通过修改服务器环境内php.ini文件,将“expose_php = On”修改成“expose_php = Off”然后重启php即可。
3.如果确实需要该测试信息,在测试时使用,测试完毕后将该文件删除掉。
4.若无需要可以将一些php的危险函数禁用,打开/etc/php.ini文件,查找到 disable_functions,添加需禁用的以下函数名:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,
ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
备注:如果要禁用多个函数,函数名之间用逗号隔开