xiaocms 审计笔记

admin 2018年5月8日02:54:31评论571 views字数 1067阅读3分33秒阅读模式
摘要

转自基友 XXOO5
周末在家刚吃完晚饭,基友 DM 叫我一起来审计 xiaocms系统,也不知道他是受到啥刺激了。正好,除了 Code Review 公司项目代码及框架代码,未审计过其他系统,就当拿来练手了。


前言

转自基友 XXOO5
周末在家刚吃完晚饭,基友 DM 叫我一起来审计 xiaocms系统,也不知道他是受到啥刺激了。正好,除了 Code Review 公司项目代码及框架代码,未审计过其他系统,就当拿来练手了。

代码审计的目的是发现代码中存在的缺陷,并对其进行修复或利用(灰盒测试)。通常是在本地部署一套环境,并进行反复调试直至发现缺陷。

首选需要知道目标代码具备那些功能模块,针对性的对相关模块进行审计排查。其次需要通读带目标代码,知道其功能类的加载顺序、目录结构、方法文件及配置文件路径。

目录结结构

xiaocms 审计笔记
根据上图中的目录,我们先看下前台 index.php 文件内容:
xiaocms 审计笔记
代码量很少,首先定义了一个常量用于保持文件夹路径,随后加载了 core/xiaocms.php 框架文件,最后运行了一个 run() 函数。
xiaocms 审计笔记
我们找到 xiaocms.php 文件并查看,里面大体分为两块部分,最上面定义了一些常量并载入了框架所需的类文件及方法文件,下面则定义了一个类及静态方法。这里都需要去跟踪一下文件,避免走弯路和做无用功的测试。

审计流程

    通过这些文件需要知道:      如何调用控制器中的对应方法及相关视图     框架对超全局变量做了那些处理及限制     相关功能模块逻辑及参数校验是否严谨     数据库使用 mysql 还是 PDO 

经过查看所有的加载文件,排查出几个函数需要我们注意下,如果在代码中有看到它们的出现就直接可以放弃了,避免浪费过多的时间。
xiaocms 审计笔记
上述方法都用到了 htmlspecialchars()函数对传递变量做了转义,转义了双引号尖括号及 & 符。在看数据库查询用的是 参数化查询加PDO ,所以避免浪费时间,碰到模块中使用这些方法处理的接收变量直接放弃。

随后用浏览器打开配置好的 xiaocms 站点,完成数据库的安装。尝试了一下,此处并不存在重复安装数据库的问题,说明这套cms安全意识很好。

开始审计前端控制器,去除安装模块和框架基础类就剩下:controller/index.php 、 controller/post.php 和 controller/api.php 三个文件。

前台文件少内容也相对较少,看了这三个文件的内容并没有发现可以利用的地方。前台暂时看来是没有问题的了,果断放弃。

后台控制器文件也并不多,均在 ./admin/controller 文件夹内。将文件全部查看后未发现有效利用的点,外部接收均经过 $this->post() 和 $this->get() 方法过滤。

后台模版编辑后触发文件包含

因为是在本地测试,本着 见框就X 的原则,尝试一遍后台所有能看到的输入框。随后在模板编辑方法内,找到可以 getshell 的方法。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2018年5月8日02:54:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   xiaocms 审计笔记http://cn-sec.com/archives/50599.html

发表评论

匿名网友 填写信息