PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞

代码审计(Code audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。

代码审计的内容包括:

            1.前后台分离的运行架构
            2.WEB服务的目录权限分类
            3.认证会话与应用平台的结合
            4.数据库的配置规范
            5.SQL语句的编写规范
            6.WEB服务的权限配置
            7.对抗爬虫引擎的处理措施
PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第1张图片
代码审计

盾灵科技(dunling.com)专注于网络智能系统的研究开发,基于PHP+MYSQL,针对网站自动流量系统具有多年的研究经验,为广大用户提供了安全,方便,智能,便捷,提高工作效率的智能系统程序。

盾灵投稿内容管理系统安装方便。配置好数据库,点击下一步即可完成安装:
PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第2张图片
网站首页

查看源代码目录结构:

admin:管理员后台目录(管理员的功能)

editor:编辑器

style,images,js:风格,图片,js

template:模板HTML

config.php:数据库配置文件

......
对于渗透测试人员比较关心的是后台的安全性,盾灵默认的管理员后台是/admin:
PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第3张图片
管理后台页面
查看一下管理后台的源代码/admin/index.php:
PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第4张图片
/admin/index.php

忽略乱码问题,主要关心这一段form表单:


我们可以得到两个条件:
1.form表单限制了文本框的输入:
onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"
文本框只能输入英文字母和数字,不能输入中文 。
2.form表单把我们输入的数据提交到login.php处理。

跟踪form表单提交查看login.php:
PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第5张图片
/admin/login.php

$adminname = $_POST['adminname']; $adminpass = $_POST['adminpass']; $adminpass .= "Axphp.com"; $adminpass = md5($adminpass); $adminsql = "select * from axphp_admin where adminname='$adminname' and adminpass='$adminpass'";
这段代码的意思是先获取到前面表单POST提交过来的数据,把adminpass字符串拼接后再经过MD5加密后传入查询的SQL语句中在数据库中验证。

但是这个SQL语句可以尝试绕过一下:

先修改源代码,echo出数据库报错语句,然后尝试抓包重放,通过截断SQL语句,造成权限绕过漏洞,不需要密码的情况下成功登陆后台。
截断以后的SQL语句为:
select * from axphp_admin where adminname='root' # ' and adminpass='$adminpass'

PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞_第6张图片
权限绕过,登陆成功

注:在 mysql 中 # 代表注释。


除了代码层的防御,在系统防御方面可以开启magic_quote_gpc

开启magic_quote_gpc=on之后,能实现addslshes()和stripslashes()这两个函数的功能。输入的注入攻击代码将会全部被转换,将给攻击者带来非常大的困难。

不过 一切皆可绕 ...欲知后事如何,请听下回分解。

你可能感兴趣的:(PHP_Code_Audit 盾灵投稿CMS_v1.0登陆权限绕过漏洞)