优化 PHP 代码审计:深入探索 Taocms 的安全漏洞

环境搭建:

图片[1]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛
图片[2]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛
图片[3]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

首先我们来分析该系统的路由信息,以及如何进行参数的构造。

路由分析:

该系统有两个路由,一是前台功能点路由,二后台功能点路由,但两个路由代码类似只不过后台路由添
加了session校验,我们先来看看前台路由是怎么构造的。
前台路由放在api.php文件中。

图片[4]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

在common.php中22行代码处中调用__autoload() 魔术方法来加载 Model 文件夹下的功能代码,方便后续路由的调用。在代码30行去除 get_magic_quotes_gpc() 方法对特殊字符加载的反斜杠,这可能是为了代码的兼容性。

图片[5]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛
图片[6]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

代码5、6两行传入两个参数 ctrl 、 action ,第7行代码其实就是将 action 传过来的参数首字母转换为
大写,因为类名首字母都是大写的,第8行判断该类是否为 Api 或 Comment。

图片[7]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

后台路由代码 admin.php 文件与前台路由代码基本类似,只是在上面添加了session校验,检测是否为

登录状态。

图片[8]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

漏洞审计

1.任意文件读取/下载

通过上面的路由信息我们知道功能点文件存放在Model文件夹下,我们去翻找Model文件夹发现
file.php 文件也就是File这个类下存在一个 download() 方法。
在这个类中的第85行代码处,我们一目了然的看到了 file_get_contents() 函数,看到这个函数想要
利用,我们会下意思的想到两个点:第一该函数的参数是否可控;第二该函数是没有回显的,如果想要
利用是需要使用 echo 等函数配合。我们只需要查看这里file_get_contents() 中参数是否可控就可以了。

图片[9]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

漏洞复现:

由于在上面我们已经分析过路由的构造,所以我们可以不用特意去找功能点就能构造出利用路由。
在路由中 action 传入的是我们要实例化的类名 file , ctrl 则对应我们需要调用的方法 download 。

图片[10]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛

2.任意文件上传

首先我们去创建一个.php后缀的文件

图片[11]-优化 PHP 代码审计:深入探索 Taocms 的安全漏洞-山海云端论坛
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容