前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新型php漏洞挖掘之debug导致的安全漏洞(Edusoho)

新型php漏洞挖掘之debug导致的安全漏洞(Edusoho)

作者头像
phith0n
发布2020-10-15 11:12:25
3.4K0
发布2020-10-15 11:12:25
举报
文章被收录于专栏:离别歌 - 信息安全与代码审计

【过年了,每天发一篇以前的存货,一共七篇。】

现代cms框架(laraval/symfony/slim)的出现,导致现今的php漏洞出现点、原理、利用方法,发生了一些变化,这个系列希望可以总结一下自己挖掘的此类cms漏洞。

今天这个漏洞是Edusoho的一个user表dump漏洞。

首先,我简要说明一下漏洞原理。

【漏洞源码下载: https://mega.nz/#!4chVWCAB!xBVyC9QqxMCmeuLu3rGx__PwgkLe_a5NWUITLS3QzuM

0x01 开启DEBUG模式造成的隐患

Edusoho开启调试模式以后将会在程序出错后输出debug信息,其中包括当前环境中所有变量的值。默认的index.php是不开启debug的,但/api/index.php将会开启debug:

跟进一下框架的异常处理方法。Index.php里注册了异常处理:

代码语言:javascript
复制
ErrorHandler::register();
ExceptionHandler::register();

这里用的是Symfony框架自带的异常处理类:use Symfony\Component\Debug\ExceptionHandler;

跟进:

调用了set_exception_handler注册的异常处理方法。不断跟进,发现该类的getContent方法是输出错误内容的方法:

可见,这个异常类,将异常对象的”args”属性输出了。

认真学习过php异常处理类的同学应该知道,异常类的getTrace方法( http://php.net/manual/zh/exception.gettrace.php )是可以获取到当前上下文中所有变量的。

所以,这里这个debug模式,等于说可以将当前函数中定义的所有变量输出。那么试想,假设当前函数在出异常前,从数据库或文件中读取到了一些『敏感』信息,那么输出这个异常是不是就可以dump出这个『敏感变量』了呢?

明显这个猜想是可行的。

那么,我只需要在/api下找到一处出错的代码,并且当前函数中有敏感信息的地方,即可触发成一个『大漏洞』。

很幸运的是我找到了好几处。最简单的一处,/api/src/user.php:373

这个$follwers变量是一个未定义的变量呀,所以一定会触发错误。

正好,当前函数中有user、follwings两个变量,user变量是指定的用户,follwings是它关注的用户。

所以,在报错输出调试信息以后,将会完全打印出这两个变量的值。而这两个变量都是从数据库user表里取出的数据,其中包含用户的所有信息(邮箱、密码hash、交易密码hash、salt、session、IP地址、昵称、登录时间等)。

另外,$follwings变量里也有这些信息,我只要批量关注所有人,这个漏洞就变成了一个dump数据库user表的漏洞。

0x02 利用方式一,直接获取任意用户user表信息

访问 http://demo.edusoho.com/api/users/{用户id}/followings 即可,如 http://demo.edusoho.com/api/users/5/followings

0x03 利用方式二,利用社交属性批量获取信息

利用方式二,首先关注你想获取密码的人,比如我关注了这四个,分别是Id为1、2、3、4的用户,其中1、4是管理员:

我的id是15670,直接访问 http://demo.edusoho.com/api/users/15670/followings ,即可获取我关注的所有人的所有信息,包括密码等:

诸如此处的地方还有一个。

http://demo.edusoho.com/api/users/1/friendship?toIds[]=a 通过传入数组制造warning:

其他位置肯定不止,还可能泄露其他信息,我就不一一挖掘了,只为证明问题存在。

这个漏洞已经私下里报给官方了,所以demo站已经修复。但搜索“powered by edusoho” 还是能找到很多存在漏洞的站,在时间上这个漏洞还是属于一个0day。

比如这个站:

http://mooc.sinepharm.com/api/users/1/followings

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 开启DEBUG模式造成的隐患
  • 0x02 利用方式一,直接获取任意用户user表信息
  • 0x03 利用方式二,利用社交属性批量获取信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档