加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-11-16 20:01:23 所属栏目:PHP教程 来源:互联网
导读: 0x00 Preface [前言/简介]
在一次内部对抗中,遇到一个存储系统,开发语言为PHP,主界面可进行用户名与口令字的爆破,因此在爆破成功获取用户名与口令后进入后台进行手工测试,测试一些功能

0x00 Preface [前言/简介]

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

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 文件上传 加密_PHP文件上传_php文件图片上传代码

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

具体漏洞调用链:

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

php 文件上传 加密_php文件图片上传代码_PHP文件上传

回溯该路由:

php文件图片上传代码_php 文件上传 加密_PHP文件上传

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

php 文件上传 加密_php文件图片上传代码_PHP文件上传

最终路由至文件:

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

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

php文件图片上传代码_PHP文件上传_php 文件上传 加密

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

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

/WEBROOT/themes/$theme/$template

PHP文件上传_php 文件上传 加密_php文件图片上传代码

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

php文件图片上传代码_php 文件上传 加密_PHP文件上传

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

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

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

php 文件上传 加密_php文件图片上传代码_PHP文件上传

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

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

0x04Summary总结

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

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

END

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

php文件图片上传代码_PHP文件上传_php 文件上传 加密

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

php文件图片上传代码_php 文件上传 加密_PHP文件上传

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

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

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

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!