0x01 簡介
ThinkPHP框架是MVC結構的開源PHP框架,遵循Apache2開源協(xié)議發(fā)布,是為了敏捷WEB應用開發(fā)和簡化企業(yè)應用開發(fā)而誕生的。該漏洞源于ThinkPHP
6.0的某個邏輯漏洞,成功利用此漏洞的攻擊者可以實現(xiàn)“任意”文件創(chuàng)建,在特殊場景下可能會導致GetShell。
0x02 漏洞概述
2020年1月10日,ThinkPHP團隊發(fā)布一個補丁更新,修復了一處由不安全的SessionId導致的任意文件操作漏洞。該漏洞允許攻擊者在目標環(huán)境啟用session的條件下創(chuàng)建任意文件以及刪除任意文件,在特定情況下還可以getshell。
0x03 影響版本
ThinkPHP 6.0.0-6.0.1
0x04 環(huán)境搭建
利用PHPStudy對環(huán)境進行搭建
1.安裝Composer
下載Composer-Setup.exe ,鏈接:https://getcomposer.org/download/
執(zhí)行安裝文件,選擇php.exe位置,一路默認安裝成功
composer拉取環(huán)境會卡住,換成國內(nèi)鏡像。
composer config -g repo.packagist composer https://packagist.phpcomposer.com
2.安裝thinkphp
TP6下載:https://github.com/top-think/think 下載后放到phpstudy的根目錄即可
創(chuàng)新項目之前,先切換到web項目目錄windows R 進入cmd命令窗口
composer create-project topthink/think tp6 (tp6自定義,這個會生成一個文件夾)
這里說一個問題,我這個時間Thinkphp的最新版是6.0.2,用上面的命令下載下來framework是6.0.2版本的,我們需要再執(zhí)行一條命令:composer require topthink/framework:6.0.0
:此時就會把將6.0.0的版本把6.0.2給替換掉
成功后配置php對應的環(huán)境變量(這個自行百度),注意php開啟和配置的環(huán)境變量要對應且要php7.1以上,我這里用的是phpstudypro的最高版本php7.3
接著進入剛剛生成的tp6的目錄,輸入php think run, 默認運行在localhost:8000
接下來訪問127.0.0.1:8000就可以看到搭建成功了
0x05 漏洞利用
在目標環(huán)境為Windows且開啟session的情況下,容易遭受任意文件刪除攻擊。
在目標環(huán)境開啟session且寫入的session可控的情況下,容易遭受任意文件寫入攻擊。
修改/app/controller/Index.php 文件
session(‘demo’,$_GET[‘c’]);
修改 /app/middleware.php 文件如下
這里注意PHPSESSID的值一定要是32位(算上.php)這樣才可以,接著再通過變量c傳遞任意代碼。
可以看到文件在runtime\session下生成,內(nèi)容并寫入
聯(lián)系客服