某开源PHP存储系统后台文件上传漏洞分析

  • A+
所属分类:代码审计

某开源PHP存储系统后台文件上传漏洞分析



△△△点击上方“蓝字”关注我们了解更多精彩




0x00 Preface [前言/简介]

在一次内部对抗中,遇到一个存储系统,开发语言为PHP,主界面可进行用户名与口令字的爆破,因此在爆破成功获取用户名与口令后进入后台进行手工测试,测试一些功能点,是否存在可以利用的地方。因为是开源的系统,首先读了一下源码,发现是通过MVC模式编写的,对于我来说,审计起来较为困难,所以先进行黑盒测试,测试具体功能点。




0x01 黑盒测试-存储功能

     在进入到后台后,因为是一个私人网盘,首先浏览了以下是否存在一些私密文件,包含目标公司的相关信息等内容(无果);

接下来针对该系统进行测试,因为目标系统允许上传任意类型的文件,所以黑盒测试中,我第一个测试的功能就是;在不知道目标系统如何存储上传文件的情况下,是否可以将上传文件跨目录存储,(这里猜测存储文件的目录下是没有执行权限的,所以是否可以通过拼接路径等方式,将文件存储到其他目录下面)。

经测试,未果。




0x02 黑盒测试-用户管理界面模板编辑功能

在针对上述测试无果后,直接来到了后台的功能区,经测试,在模板编辑这一功能中发现可以用户自定义模板文件来上传任意PHP代码。





0x03 白盒审计

MVC开发模式的审计仅停留在国内的ThinkPHP框架中,复现了一些漏洞,具体动态调试查看请求是如何路由到哪一个具体的控制器的方法中。所以根据之前的经验,小弟的审计思路如下:

已经通过黑盒测试得到了具体漏洞触发的URL,并且此版本的系统无法搭建在windows环境下,没有具体搭建linux + php + Xdebug环境。


URL:domain/index.php/apps/templateeditor/settings/mailtempalte

所以根据漏洞触发URL,直接定位到apps/templateeditor下的目标文件

 

使用的视图文件直接是该文件夹下的 /templates/settings-admin.php 文件

某开源PHP存储系统后台文件上传漏洞分析

所以定位到了该文件夹下。这个步骤是跳过了从index.php文件路由至该编辑模板文件的这一过程。后续寻找也没有准确的找出这一过程,先存疑。


具体漏洞调用链: 

OCATemplateEditorApp 这个命令空间下实例化的 TemplateEditor 类,(这个类是继承的OCPAppFrameworkApp 这个类)并是使用了其中的注册路由的方法;

某开源PHP存储系统后台文件上传漏洞分析


回溯该路由:

某开源PHP存储系统后台文件上传漏洞分析


回溯RouteConfig类中的Register方法, 调用了processSimpleRoutes方法,具体解析字符串设置路由在该函数中。通过解析字符串来匹配

某开源PHP存储系统后台文件上传漏洞分析

最终路由至文件:

WBEROOT/apps/templateeditor/controller/adminsettingscontroller.php文件中的updateTemplate方法;

该方法中实例化调用了MailTemplate类中的setContent方法

某开源PHP存储系统后台文件上传漏洞分析

传入的参数为POST所提交的Content参数值;

 

最终调用到了 file_put_contents方法,将恶意代码写入到文件中,路径为

/WEBROOT/themes/$theme/$template 

某开源PHP存储系统后台文件上传漏洞分析

在黑盒测试+审计后,尝试该漏洞是否可经未授权直接写入文件,在WEBROOT/index.php文件中引用了 lib/base.php 文件

某开源PHP存储系统后台文件上传漏洞分析

该文件中定义了OC类并于最底部初始化了该类:

某开源PHP存储系统后台文件上传漏洞分析

其中又交叉引用了许多类与方法来初始化系统的一些全局参数,其中

index.php中引用的OC::handleRequest();方法检测了用户的凭据。

某开源PHP存储系统后台文件上传漏洞分析

所以无法未授权直接调用。

并且后续查看IREQUEST接口,该接口为对HTTP 所提交的参数有多余的过滤操作。




0x04 Summary 总结


在审计过程中使用的是逆向思维“通过漏洞找代码触发点”,但如果正向审计估计以我现在的阶段,审计起来较为困难。还望师傅们能够不吝赐教!  --征鞍


感谢师傅的积极投稿,也欢迎大家加入我们,互相交流和分享技术,共同成长进步!   --NOVASEC


END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

某开源PHP存储系统后台文件上传漏洞分析

或添加NOVASEC-MOYU 以便于及时回复。

某开源PHP存储系统后台文件上传漏洞分析


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!



本文始发于微信公众号(NOVASEC):某开源PHP存储系统后台文件上传漏洞分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: