ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

DolphinPHP RCE漏洞

2022-04-14 14:04:09  阅读:252  来源: 互联网

标签:log DolphinPHP ids param 漏洞 details action RCE id


DolphinPHP

DolphinPHP(海豚PHP)是一个基于ThinkPHP5.1.41LTS开发的一套开源PHP快速开发框架,DolphinPHP秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包。统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的冗余,以方便开发者快速构建自己的应用。

漏洞分析

看到application\common.php#action_log函数

观察到有一处call_user_func,向上回溯一下两个参数看是否可控

分别为$param[1]$log[$param[0]]

首先$param$value|为间隔分开的值,而$value实际上就是$match[1]的遍历,$match是通过正则匹配$action_info['log']得到,这个正则就是匹配中括号内的值,最终的$action_info是数据库查询得来,如下图

先看一下这个查询操作

对应的模型为

对应表的内容为

所以这里的查询操作就是通过module和name为条件查询dp_admin_action这一表,然后用log数据去正则匹配

$action_info = model('admin/action')->where('module', $module)->getByName($action);

而这里的log是可以自己修改的

也就是说现在可以控制log内的值,也就表示call_user_func的第一个参数也可控

至于$log[$param[0]],需要从$log中寻找可控的value,这里目前可能可以控制的就是$model$details

所以需要找调用action_log并且$model$details可控的地方

这里找了Attachment.php#delete

可以看到$ids完全可控,但是有一处if判断

if (AttachmentModel::where('id', 'in', $ids)->delete())

操作肯定就是根据$ids删附件了,所以这里还需要随便上传一个附件让他删,随便传个头像就行了

这里的$ids对应call_user_func的第二个参数,假设传入calc,这个where('id', 'in', $ids)->delete()会找不到文件删,所以每访问一次就需要删一个已存在的附件

经过测试可以用数组的形式,如$ids[]=calc%26&$ids[]=9这样,能正常找到id=9的图片

然后经过

$ids = is_array($ids) ? implode(',', $ids) : $ids;

变成calc&,9

两个参数都可控

漏洞利用

系统->行为管理->删除附件->编辑

将所属模块改为系统

将日志规则改为[details|system] test ([details])

然后随便传一张图片看它的id,之前传的图片id是9,所以

因为这里默认$module是admin,所以上面要把所属模块改为系统

此时$match = 'details|system'$param[1]='system'$log[$param[0]]=$log['details']='calc&,9'

执行calc

最后

这里通过IDE的find usages应该还能找到其他触发action_log的地方,暂时就不往下看了

转:w4nder

标签:log,DolphinPHP,ids,param,漏洞,details,action,RCE,id
来源: https://www.cnblogs.com/0daybug/p/16144177.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有