thinkAdmin框架0day

渗透技巧 6个月前 admin
228 0 0
thinkAdmin框架0day

01

项目介绍   

ThinkAdmin 是一款遵循 MIT 协议开源的快速开发框架,基于最新版本 ThinkPHP6 的极简后台管理系统 ( 已兼容 ThinkPHP8 )
官网:https://thinkadmin.top/

审计版本:ThinkAdmin Version v6.1.53


thinkAdmin框架0day

经过检索,公众号、百度都没有相关漏洞信息,本篇公众号为首发

thinkAdmin框架0day

02

检索语句   

fofa : body=”/admin/api.plugs/script”

thinkAdmin框架0day


thinkAdmin框架0day

03

漏洞一:目录穿越+文件上传

漏洞一:目录穿越+文件上传=getshell
漏洞所在位置:/app/admin/controller/api/Upload.php
188-251行 file函数

thinkAdmin框架0day
thinkAdmin框架0day

196行 限制../无法存在 但是可以通过…/绕过
200行 对比key参数与文件的后缀是否一致

204行 对比数据库中的允许上传的后缀

212行 可以看到强制限制的php无法上传
其保存文件命名使用的是key参数非filename
综上所述
可以利用目录穿越上传.user.ini或者.htaccess
进行图片马的上传和使用

thinkAdmin框架0day

04

漏洞二 :逻辑缺陷 getshell

漏洞位置 /app/admin/controller/Config.php 80-111行 system函数


thinkAdmin框架0day

102行 设置setFavicon传入参数site_icon
跟随进去到文件位置:

/vendor/zoujingli/think-library/src/service/SystemService.php

340 – 362行 setFavicon函数


thinkAdmin框架0day

344行对传进来的site_icon参数进行正则判断是否含有http https

347行对文件目录进行查询是否已经有文件

351行出现down函数跟进去到文件位置为
/vendor/zoujingli/think-library/src/Storage.php 86-180行 down函数


thinkAdmin框架0day

此函数注释为下载文件到本地

首先实例化一个LocalStorage对象
然后使用name方法构造出filename变量 这个很重要

位置在相同文件下的72-77行


thinkAdmin框架0day

91行又对文件是否已经存在进行判断

96行出现set函数跟随进去看一下 传入的参数为filename和远程拉取site_icon url文件的内容

文件位置

/vendor/zoujingli/think-library/src/storage/LocalStorage.php

60-71行


thinkAdmin框架0day

此处可以看到其使用传入进来的filename变量和site_icon参数url文件内容写入文件 至此漏洞发生


thinkAdmin框架0day

05

漏洞一复现

在官网进行composer 安装
安装后登录进入后台
首先对后台设置可上传后缀


thinkAdmin框架0day

http://localhost/admin/config/storage.html?spm=m-1-2-3
param


storage%5Bname_type%5D=xmd5&storage%5Blink_type%5D=none&storage%5Ballow_exts%5D=doc%2Cgif%2Cico%2Cjpg%2Cmp3%2Cmp4%2Cp12%2Cpem%2Cpng%2Czip%2Crar%2Cxls%2Cxlsx%2Chtaccess%2Cini&storage%5Blocal_http_protocol%5D=follow&storage%5Blocal_http_domain%5D=&storage%5Btype%5D=local

thinkAdmin框架0day

先上传一个任意文件内容为webshell的木马


thinkAdmin框架0day
thinkAdmin框架0day

构造payload上传
http://localhost/admin/api.upload/file


thinkAdmin框架0day
thinkAdmin框架0day
thinkAdmin框架0day

可以看到都上传成功了


thinkAdmin框架0day

Webshell也成功解析


thinkAdmin框架0day

06

漏洞二复现

登录后台设置系统参数


thinkAdmin框架0day

此处填写纯静态的可下载的php webshell文件url 

也就是webshell下载路径

点击保存配置

保存完毕需计算一下下载到服务器上的路径

脚本如下


thinkAdmin框架0day
thinkAdmin框架0day

使用如上计算 url变量为设置系统参数的url

拼接路径即可


thinkAdmin框架0day



















以上内容为青山ya师傅的代码审计投稿


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

thinkAdmin框架0day

原文始发于微信公众号(梅苑安全学术):thinkAdmin框架0day

版权声明:admin 发表于 2023年11月16日 下午9:30。
转载请注明:thinkAdmin框架0day | CTF导航

相关文章

暂无评论

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