-
-
[投稿]PHP源程序中常见的后台绕过方法总结
-
发表于:
2018-1-9 22:50
5152
-
最近审计了几个开源的PHP源程序,发现都存在后台程序绕过的问题,而且绕过的方式均不相同,写篇总结一下。初步地将绕过方式分为了三个层次:
1.后台缺乏验证代码
2.后台验证代码不严谨
3.变量覆盖漏洞导致后台验证失效
以下就几个我审计过的PHP源程序进行说明。
比如在axublog 1.0.2
中后台存在一个验证管理员登录的函数chkadcookie()
。但是在后台的ad/art.php
中并没有chkadcookie()
,因而就造成了越权访问。
这种漏洞的原理也比较简单,一般情况下是经验不足的开发者漏掉了验证函数,这种漏洞目前已经比较少了。
这个漏洞的出现情况是最多的,出现的情况也是千奇百怪。
在axublog
中的后台验证函数是chkadcookie()
,代码如下:
分析代码发现非常有趣的问题:
问题很明显,既然我们知道了txtchkad.txt
中的内容,同时COOKIE
也是我们可控的,那么我们就可以绕过了。
只需要将COOKIE中的chkad
设置为_
就可以绕过后台的登录了。
在zzcms
中的后台验证代码如下:
可以发现如果SESSION中不存在admin
和pass
就会跳转到登录代码,跳转代码是echo("<script>top.location.href = '/admin/login.php';</script>");
。通过前台的JS进行跳转,但是后面没有立即exit()
,导致后面的代码仍然是可以执行的,所以这种验证方式也无用的。
绕过方式非常地简单,在浏览器段禁用JS代码就可以了。
检查登录的函数is_login()
的代码为:
正常情况下,如果用户无法控制SESSION中的值,上述代码是没有问题的。
但是后来分析发现,基本所有的文件都会引入includes/init.php
文件,其中有代码:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)