這篇文章將為大家詳細(xì)講解有關(guān)ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、弋陽網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為弋陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
ThinkPHP是一個快速、兼容而且簡單的輕量級國產(chǎn)PHP開發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過來并做了改進(jìn)和完善,同時也借鑒了國外很多優(yōu)秀的框架和模式,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的思想和TagLib(標(biāo)簽庫)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服務(wù)器環(huán)境,正式版需要PHP5.0以上版本支持,支持MySQL、PgSQL、Sqlite多種數(shù)據(jù)庫以及PDO擴(kuò)展,ThinkPHP框架本身沒有什么特別模塊要求,具體的應(yīng)用系統(tǒng)運(yùn)行環(huán)境要求視開發(fā)所涉及的模塊。
該漏洞源于ThinkPHP 6.0的某個邏輯漏洞,成功利用此漏洞的攻擊者可以實(shí)現(xiàn)“任意”文件創(chuàng)建,在特殊場景下可能會導(dǎo)致GetShell。
2020年1月10日,ThinkPHP團(tuán)隊發(fā)布一個補(bǔ)丁更新,修復(fù)了一處由不安全的SessionId導(dǎo)致的任意文件操作漏洞。該漏洞允許攻擊者在目標(biāo)環(huán)境啟用session的條件下創(chuàng)建任意文件以及刪除任意文件,在特定情況下還可以getshell。
ThinkPHP6.0.0-6.0.1
1.phpstudy中PHP設(shè)置成7.2版本,并把對應(yīng)的文件夾放入環(huán)境變量path中
點(diǎn)擊此處添加圖片說明文字
2.在Phpstudy服務(wù)器中打開php.ini文件,找到extension=php_openssl.dll前面的分號去掉,意思是打開ssl擴(kuò)展,目的是為了能在cmd命令中能進(jìn)行訪問
點(diǎn)擊此處添加圖片說明文字
3.安裝composer.phar,找到下載內(nèi)容的地方,去下載當(dāng)前最新版本的composer.phar
下載地址https://getcomposer.org/download/
點(diǎn)擊此處添加圖片說明文字
4. 雙擊安裝,不用勾選,選擇下一步
點(diǎn)擊此處添加圖片說明文字
5.配置環(huán)境變量后自動選擇了
點(diǎn)擊此處添加圖片說明文字
然后一直下一步,安裝完成
點(diǎn)擊此處添加圖片說明文字
輸入composer查看是否安裝成功
點(diǎn)擊此處添加圖片說明文字
6.安裝tp6 php composer.phar create-project topthink/think tp 6.0.*
點(diǎn)擊此處添加圖片說明文字
我這個時間Thinkphp的最新版是6.0.3,用上面的命令下載下來framework是6.0.3版本的,我們需要再執(zhí)行一條命令,進(jìn)入下載的目錄tp6,使用cmd命令
composer require topthink/framework:6.0.0
點(diǎn)擊此處添加圖片說明文字
8. 瀏覽器訪問一下
點(diǎn)擊此處添加圖片說明文字
首先在得到可控session參數(shù)名,這是本地構(gòu)造的,實(shí)戰(zhàn)需要自己fuzz。
構(gòu)造位置:tp6\app\controller\index.php
構(gòu)造的內(nèi)容
use think\facade\Session;
Session::set('user',$_GET['username']);
點(diǎn)擊此處添加圖片說明文字
開啟session且寫入的session可控,/tp6/app/middleware.php 文件開啟session,去掉注釋session的//
點(diǎn)擊此處添加圖片說明文字
使用Burp抓取首頁的包構(gòu)造payload:username就是我們剛才構(gòu)造的接受參數(shù),然后將PHPSESSID的值修改為32位的保存路徑
點(diǎn)擊此處添加圖片說明文字
點(diǎn)擊發(fā)送,在瀏覽器訪問
點(diǎn)擊此處添加圖片說明文字
官方給出的修復(fù)方式
對session id 加一個過濾 使用 ctype_alnum()
$this->id = is_string($id) && strlen($id) === 32 ctype_alnum($id) && ? $id : md5(microtime(true) . session_create_id());
關(guān)于ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。