您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關ThinkPHP6.0中怎么利用Getshell創建任意文件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
ThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協議發布,從Struts結構移植過來并做了改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式,融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服務器環境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多種數據庫以及PDO擴展,ThinkPHP框架本身沒有什么特別模塊要求,具體的應用系統運行環境要求視開發所涉及的模塊。
該漏洞源于ThinkPHP 6.0的某個邏輯漏洞,成功利用此漏洞的攻擊者可以實現“任意”文件創建,在特殊場景下可能會導致GetShell。
2020年1月10日,ThinkPHP團隊發布一個補丁更新,修復了一處由不安全的SessionId導致的任意文件操作漏洞。該漏洞允許攻擊者在目標環境啟用session的條件下創建任意文件以及刪除任意文件,在特定情況下還可以getshell。
ThinkPHP6.0.0-6.0.1
1.phpstudy中PHP設置成7.2版本,并把對應的文件夾放入環境變量path中
點擊此處添加圖片說明文字
2.在Phpstudy服務器中打開php.ini文件,找到extension=php_openssl.dll前面的分號去掉,意思是打開ssl擴展,目的是為了能在cmd命令中能進行訪問
點擊此處添加圖片說明文字
3.安裝composer.phar,找到下載內容的地方,去下載當前最新版本的composer.phar
下載地址https://getcomposer.org/download/
點擊此處添加圖片說明文字
4. 雙擊安裝,不用勾選,選擇下一步
點擊此處添加圖片說明文字
5.配置環境變量后自動選擇了
點擊此處添加圖片說明文字
然后一直下一步,安裝完成
點擊此處添加圖片說明文字
輸入composer查看是否安裝成功
點擊此處添加圖片說明文字
6.安裝tp6 php composer.phar create-project topthink/think tp 6.0.*
點擊此處添加圖片說明文字
我這個時間Thinkphp的最新版是6.0.3,用上面的命令下載下來framework是6.0.3版本的,我們需要再執行一條命令,進入下載的目錄tp6,使用cmd命令
composer require topthink/framework:6.0.0
點擊此處添加圖片說明文字
8. 瀏覽器訪問一下
點擊此處添加圖片說明文字
首先在得到可控session參數名,這是本地構造的,實戰需要自己fuzz。
構造位置:tp6\app\controller\index.php
構造的內容
use think\facade\Session;
Session::set('user',$_GET['username']);
點擊此處添加圖片說明文字
開啟session且寫入的session可控,/tp6/app/middleware.php 文件開啟session,去掉注釋session的//
點擊此處添加圖片說明文字
使用Burp抓取首頁的包構造payload:username就是我們剛才構造的接受參數,然后將PHPSESSID的值修改為32位的保存路徑
點擊此處添加圖片說明文字
點擊發送,在瀏覽器訪問
點擊此處添加圖片說明文字
官方給出的修復方式
對session id 加一個過濾 使用 ctype_alnum()
$this->id = is_string($id) && strlen($id) === 32 ctype_alnum($id) && ? $id : md5(microtime(true) . session_create_id());
關于ThinkPHP6.0中怎么利用Getshell創建任意文件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。