文库 | 以DolphinPHP为例的白盒审计分析

admin 2022年5月19日09:35:00评论262 views字数 1690阅读5分38秒阅读模式

高质量的安全文章,安全offer面试经验分享

尽在 # 掌控安全EDU #


作者:掌控安全—杰斯

DolphinPHP

1.简介

DolphinPHP(海豚PHP)是一个基于ThinkPHP5.1.41LTS开发的一套开源PHP快速开发框架,DolphinPHP秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种灵活快速构建工具,可方便快速扩展的模块、插件、钩子、数据包

统一了模块、插件、钩子、数据包之间的版本和依赖关系,进一步降低了代码和数据的冗余,以方便开发者快速构建自己的应用。

官网地址下载:http://www.dolphinphp.com/

2.搭建


第一步:下载完成后,直接解压缩到服务器内

文库 | 以DolphinPHP为例的白盒审计分析


第二步:访问网站,勾选已阅读,并点下一步。

文库 | 以DolphinPHP为例的白盒审计分析


第三步:下拉网页,继续下一步。

文库 | 以DolphinPHP为例的白盒审计分析


第四步:输入好配置之后,再点下一步。

文库 | 以DolphinPHP为例的白盒审计分析


第五步:安装成功

文库 | 以DolphinPHP为例的白盒审计分析


3.代码分析


在源码,application文件夹下的common.php的action_log函数,有一处call_user_func


其中,参数可控分别为$param[1]和$log[$param[0]]


首先$param为$value以|为间隔分开的值


而$value实际上就是$match[1]的遍历


$match是通过正则匹配,$action_info[‘log’]得到,这个正则就是匹配中括号内的值,最终的$action_info是数据库查询得来。


文库 | 以DolphinPHP为例的白盒审计分析


在这个$action_info的查询中


文库 | 以DolphinPHP为例的白盒审计分析


对应的日志模型


文库 | 以DolphinPHP为例的白盒审计分析


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

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

文库 | 以DolphinPHP为例的白盒审计分析


然而,这里的log内的值是可以控制的,也就表示call_user_func的第一个参数$param[1]可控


文库 | 以DolphinPHP为例的白盒审计分析


call_user_func的另外一个参数$log[$param[0]],需要从$log中寻找可控的value,这里目前可能可以控制的就是$model或$details。


文库 | 以DolphinPHP为例的白盒审计分析


在Attachment.php文件中的delete的函数中,存在有调用action_log并且$model或$details可控的地方。


文库 | 以DolphinPHP为例的白盒审计分析


可以发现,此处的$ids完全可控,但是有一处if判断。


可以看出,这里的判断应该就是删除附件的内容,所以这里只需要到时候删除附件就可以满足此条件。


文库 | 以DolphinPHP为例的白盒审计分析

文库 | 以DolphinPHP为例的白盒审计分析


这里的$ids对应call_user_func的第二个参数,假设传入calc,这个where(‘id’, ‘in’, $ids)->delete()会找不到文件删

所以每访问一次就需要删一个已存在的附件

经不断测试,这里可是使用数组的形式如$ids[]=calc%26&$ids[]=2这样,能正常找到id=2的图片,其中%26是&。经过

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

就变成了
calc&,9

所以参数全部可控。

4.漏洞利用


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


文库 | 以DolphinPHP为例的白盒审计分析


将所属模块改为系统,并且将日志规则改为[details|system] test ([details])


文库 | 以DolphinPHP为例的白盒审计分析

这里我们可以点击删除按钮的时候,并且构造参数:ids[]=calc%26&ids[]=2

文库 | 以DolphinPHP为例的白盒审计分析

文库 | 以DolphinPHP为例的白盒审计分析

最终导致RCE成功利用。

文库 | 以DolphinPHP为例的白盒审计分析


申明:本公众号所分享内容仅用于技术讨论,切勿用于违法途径,任何非经授权的渗透都是违法行为。违者必究,后果需自行承担,与本公众号及作者无关


回顾往期内容


Xray挂机刷漏洞

零基础学黑客,该怎么学?

网络安全人员必考的几本证书!

文库|内网神器cs4.0使用说明书

代码审计 | 这个CNVD证书拿的有点轻松

【精选】SRC快速入门+上分小秘籍+实战指南

    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

文库 | 以DolphinPHP为例的白盒审计分析


扫码白嫖视频+工具+进群+靶场等资料


文库 | 以DolphinPHP为例的白盒审计分析

 

文库 | 以DolphinPHP为例的白盒审计分析

 扫码白嫖


 还有免费的配套靶场交流群

原文始发于微信公众号(掌控安全EDU):文库 | 以DolphinPHP为例的白盒审计分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月19日09:35:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   文库 | 以DolphinPHP为例的白盒审计分析https://cn-sec.com/archives/1018415.html

发表评论

匿名网友 填写信息