Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[教程] 部分主机php的#注释符解析不当的问题

[复制链接]
gov365 发表于 2012-3-8 14:24:32 | 显示全部楼层 |阅读模式
漏洞代码是:
if ( !file_exists( $this->logFile ) ) { file_put_contents( $this->logFile, "#<?php exit()?>\n" ); }

程序偷懒只在PHP后缀的日志文件的第一行写了#<?php exit()?>,以为后面再写什么都没不会有事了。

例如在SHOPEC中是:
http://bbs.shopex.cn/read.php?tid-160492.html
本补丁主要解决部分主机php的#注释符解析不当。这个解释有点搞笑,程序员去怪主机注释符解析不当。
虚拟主机推荐采用真如互联的,可安装SHOPEX和Discuz等多种程序,方便管理操作。
真正的原因是程序员没有考虑PHP的CGI情况,一般cgi程序第一行按惯例需要声明cgi解释程序的路径,如:
#!/usr/bin/perl
所以就算是PHP的WEB程序,走CGI模式的话,第一行如果带#号的话,这一行是不会当PHP代码解析的。

另外这个原理可以延展成为ngnix\IIS类的cgi script name漏洞的一个比较准确的扫描策略:
比如访问DISCZU论坛的ROBOTS https://discuz.dismall.com/robots.txt ,可以看到第一行带#号。
https://discuz.dismall.com/robots.txt/xx.php 这类形式访问,如果PHP走的CGI模式,那么第一行的#号肯定会被吃掉,基本上可以准确判断服务器存在漏洞,避免误判Content-Type:text/html却是404的情况。
happy13888 发表于 2012-3-16 13:19:46 | 显示全部楼层
这个问题确实很棘手。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-26 12:49 , Processed in 0.023489 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表