ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件

這篇文章將為大家詳細(xì)講解有關(guān)ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、弋陽網(wǎng)站定制設(shè)計(jì)、自適應(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è)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為弋陽等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

0x01簡介

ThinkPHP是一個(gè)快速、兼容而且簡單的輕量級(jí)國產(chǎn)PHP開發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過來并做了改進(jìn)和完善,同時(shí)也借鑒了國外很多優(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的某個(gè)邏輯漏洞,成功利用此漏洞的攻擊者可以實(shí)現(xiàn)“任意”文件創(chuàng)建,在特殊場景下可能會(huì)導(dǎo)致GetShell。

0x02漏洞概述

2020年1月10日,ThinkPHP團(tuán)隊(duì)發(fā)布一個(gè)補(bǔ)丁更新,修復(fù)了一處由不安全的SessionId導(dǎo)致的任意文件操作漏洞。該漏洞允許攻擊者在目標(biāo)環(huán)境啟用session的條件下創(chuàng)建任意文件以及刪除任意文件,在特定情況下還可以getshell。

0x03影響范圍

ThinkPHP6.0.0-6.0.1

0x04環(huán)境搭建

1.phpstudy中PHP設(shè)置成7.2版本,并把對(duì)應(yīng)的文件夾放入環(huán)境變量path中

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

2.在Phpstudy服務(wù)器中打開php.ini文件,找到extension=php_openssl.dll前面的分號(hào)去掉,意思是打開ssl擴(kuò)展,目的是為了能在cmd命令中能進(jìn)行訪問

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

3.安裝composer.phar,找到下載內(nèi)容的地方,去下載當(dāng)前最新版本的composer.phar

下載地址https://getcomposer.org/download/

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

4. 雙擊安裝,不用勾選,選擇下一步

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

5.配置環(huán)境變量后自動(dòng)選擇了

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

然后一直下一步,安裝完成

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

輸入composer查看是否安裝成功

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

6.安裝tp6 php composer.phar create-project topthink/think tp 6.0.*

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

我這個(gè)時(shí)間Thinkphp的最新版是6.0.3,用上面的命令下載下來framework是6.0.3版本的,我們需要再執(zhí)行一條命令,進(jìn)入下載的目錄tp6,使用cmd命令

composer require topthink/framework:6.0.0

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

8. 瀏覽器訪問一下

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

0x05漏洞復(fù)現(xià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']);

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

開啟session且寫入的session可控,/tp6/app/middleware.php 文件開啟session,去掉注釋session的//

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

使用Burp抓取首頁的包構(gòu)造payload:username就是我們剛才構(gòu)造的接受參數(shù),然后將PHPSESSID的值修改為32位的保存路徑

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

點(diǎn)擊發(fā)送,在瀏覽器訪問

ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件點(diǎn)擊此處添加圖片說明文字

0x06修復(fù)方式

官方給出的修復(fù)方式

對(duì)session id 加一個(gè)過濾 使用 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)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁標(biāo)題:ThinkPHP6.0中怎么利用Getshell創(chuàng)建任意文件
文章源于:http://muchs.cn/article22/jcpicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、小程序開發(fā)、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)