php代码审计案例之Bluecms(一)

admin 2023年2月17日11:17:16评论32 views字数 1557阅读5分11秒阅读模式




 前 言

所谓代码审计是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。在安全领域,为了发现安全问题,常通过黑盒测试、白盒测试方法来尽可能的发现业务程序中的安全问题,代码审计就是白盒测试的常用方法,相较于黑盒测试,由于白盒测试能接触到源代码,可以更加详细的理解业务程序逻辑,也能更全面的发现安全风险。接下来本系列文章将以Bluecms v1.6 作为php代码审计案例为切入点,过程中结合常见源代码扫描工具和动态调试方法,来详细介绍php代码审计的思路,相关源代码网上也都有公开。





 审计环境说明
环境phpstudy
Apache 2.4.9
Mysql 5

Php 5.6.9





 源代码审计工具扫描结果
php代码审计案例之Bluecms(一)
php代码审计案例之Bluecms(一)
php代码审计案例之Bluecms(一)




 系统入口梳理

在对一个真实cms进行审计的时候,先整体对网站的目录结构大致做个全局分析,了解每个目录的基本功能以及目录入口文件index.php所在位置。对index.php的分析,个人认为主要是为了了解下面几个问题。

1.页面路由的流程
2.系统的认证、鉴权逻辑
3.初始化的数据过滤方法

4.数据库的连接方式

php代码审计案例之Bluecms(一)

根据index.php内容,大致可以看到,主要就是获取数据库数据,并在首页展现,这个过程中没有任何的交互判断,只是个静态展现。

php代码审计案例之Bluecms(一)
php代码审计案例之Bluecms(一)
php代码审计案例之Bluecms(一)

到这里应该就可以知道这个系统前台并没有做统一入口再分发,因此是一个多入口的系统。而多入口系统,一般就会需要通过标准化的函数来对多个入口进行过滤检查鉴权等。查看根目录下的其他文件,基本都引用了同一个文件,即/include/common.inc.php文件,接下来我们来看一下common.inc.php文件

会话相关配置

php代码审计案例之Bluecms(一)

外部数据过滤,如果没有配置gpc,则通过addslashes函数进行过滤,但这里我们要注意无论是gpc还是addslashes,它都没有对$_SERVER进行过滤,且无法对数字型的注入产生效果,这两个点要注意,是可能存在漏洞的地方。

php代码审计案例之Bluecms(一)

设置时区和获取请求ip

php代码审计案例之Bluecms(一)

配置数据库连接,这里注意是使用mysql直接连接,针对数据库连接类型,我们注意是否数据库内使用gbk编码,如果是,可能存在宽字节注入

php代码审计案例之Bluecms(一)
php代码审计案例之Bluecms(一)

而这里正好是gbk编码方式,因此这是一个可能存在漏洞的点,要注意。

Smarty模版配置

php代码审计案例之Bluecms(一)

用户黑名单排查。注意这里虽然经过了黑名单排查,但其实即使是在黑名单中,后面的程序逻辑也是可以继续走下去的。

php代码审计案例之Bluecms(一)

用户权限校验,若不存在SESSION,则进行COOKIE校验。

php代码审计案例之Bluecms(一)

因此总的来看,这个入口检查文件的主要功能包括有配置phpsession会话、使用gpc/addslashes进行外部数据初始化过滤、设置时区、过滤黑名单IP、初始化数据库连接、Smarty渲染、用户session及cookie的校验。当然这只是前端普通用户的流程。根据目录,我们可以看到存在admin管理员后台。

php代码审计案例之Bluecms(一)

同理,我们也需要了解下admin管理员的index.php和入口文件。来把握住后台的逻辑

Index.php基本是类似的,渲染首页的页面,同时通过admin/include/common.inc.php进行入口检查

php代码审计案例之Bluecms(一)

接下来看下admin/include/common.inc.php文件,其它方面都是和前台一样的,在鉴权这个地方,它主要对管理员身份进行检查。即如果session为空,则检查cookie,如果不为空,则更新session。

php代码审计案例之Bluecms(一)

到这里我们基本上把bluecms的前后端的入口流程理清,其中涉及到用户鉴权、数据库连接、外部数据过滤、页面渲染展示等。而且从流程看,目前发现外部数据过滤和数据库连接处,存在理论上的安全风险。想要全面地进行代码审计,这一步是必不可少的,切记。

以上是本章节的主要介绍内容,后续将继续更新具体漏洞的审计方法,敬请期待。

php代码审计案例之Bluecms(一)


php代码审计案例之Bluecms(一)

原文始发于微信公众号(第59号):php代码审计案例之Bluecms(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月17日11:17:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   php代码审计案例之Bluecms(一)http://cn-sec.com/archives/1556795.html

发表评论

匿名网友 填写信息