1. 程式人生 > >利用Thinkphp 5快取漏洞實現前臺Getshell

利用Thinkphp 5快取漏洞實現前臺Getshell

0×00 背景

網站為了實現加速訪問,會將使用者訪問過的頁面存入快取來減小資料庫查詢的開銷。而Thinkphp5框架的快取漏洞使得在快取中注入程式碼成為可能。(漏洞詳情見參考資料)

本文將會詳細講解:

1. 如何判斷快取漏洞存在的可能性

2. 如何利用Thinkphp5的框架漏洞結合網站的一些配置實現前臺getshell

希望可以給予讀者一些關於漏洞應用的啟發。

0×01 環境

測試環境

1.某基於Thinkphp5.0.10搭建的論壇類測試網站

2.apache2

3.php5.6及以上版本,相關php元件

4.mysql

工具

1.dirsearch (github上的一個用python編寫的網站路徑掃描工具)

0×02 實現

判斷快取漏洞存在的可能性

1.檢視網頁的cookie,發現存在thinkphp_show_page_trace欄位,確定網頁基於thinkphp框架。 

1.png

2.使用 dirsearch 掃描目標網站。python3 dirsearch.py -u site_ip_here -e php發現可以訪問 cache目錄,說明可能存在快取漏洞。 

2.png

實施攻擊

1.考慮到這是一個論壇類網站,嘗試發帖注入快取。

3.png

2.這是最困難的一步,猜解快取中的php檔名。根據框架實現,檔名是一個唯一字串的md5碼(此處的md5要用php的函式計算,測試發現和網上的一些線上平臺計算結果不同)。考慮到論壇類網站有大量的帖子,需要用資料庫儲存,而帖子的索引應該為很有可能為id 。

再結合url的路徑名,猜測為article_id

echo(md5(“article_52″));

12a51218427a2df68e54e8f4c8b10109 

4.png

通過訪問快取成功getshell 

5.png

0×03 原理分析:

框架

在thinkphp框架中,/thinkphp/library/think/cache/driver/File.php中定義了快取的實現。其中,getCacheKey($name)函式實現了cache檔案路徑的計算,為獲得快取檔名稱提供了可能。

6.png

而set()與get()函式以序列化物件的方式無過濾地實現了快取資料的寫入與讀出,為程式碼注入快取提供可能。

7.png

8.png

通過測試,可以發現帖子中的內容可以直接寫入快取檔案。

9.png

由於快取檔案是一個php檔案,可以進行程式碼注入。在程式碼前加一個回車,使程式碼行獨立於前面的註釋行。再在末尾加上註釋符號//,註釋剩餘內容。

網頁實現

在處理帖子的程式碼中,讀取帖子首先查詢cache檔案,通過呼叫thinkphp5框架中的cache介面實現。

11.png

0×04 防禦:

1. 從框架入手,在/thinkphp/library/think/cache/driver/File.php 中的set()函式中對於$value引數進行過濾,去除換行符號。(具體程式碼見參考資料)缺點: 可能會導致快取檔案在展示時文字佈局的改變。

2. 從網頁實現入手,讀取快取時的使用的唯一索引可以設定的比較複雜,讓攻擊者無法猜到。如: 3ae282ad69314d68_article_id

3. 從伺服器的配置入手,關閉從外部對於cache資料夾的直接訪問。

4. 從php的配置入手,關閉eval等危險函式。

0×05 參考資料:

相關推薦

利用Thinkphp 5快取漏洞實現前臺Getshell

0×00 背景 網站為了實現加速訪問,會將使用者訪問過的頁面存入快取來減小資料庫查詢的開銷。而Thinkphp5框架的快取漏洞使得在快取中注入程式碼成為可能。(漏洞詳情見參考資料) 本文將會詳細講解: 1. 如何判斷快取漏洞存在的可能性 2. 如何利用Thinkphp5的框架漏洞結合網站的一些配置實現前

利用Thinkphp 5緩存漏洞實現前臺Getshell

getc 基於 hsl mysq 發現 _id 代碼 應該 網頁 0×00 背景 網站為了實現加速訪問,會將用戶訪問過的頁面存入緩存來減小數據庫查詢的開銷。而Thinkphp5框架的緩存漏洞使得在緩存中註入代碼成為可能。(漏洞詳情見參考資料) 本文將會詳細講解: 1. 如

Typecho 反序列化漏洞導致前臺 getshell

typecho 反序列化漏洞導致前臺 getshell前言最早知道這個漏洞是在一個微信群裏,說是install.php文件裏面有個後門,看到別人給的截圖一看就知道是個PHP反序列化漏洞,趕緊上服務器看了看自己的博客,發現自己也中招了,相關代碼如下:然後果斷在文件第一行加上了die:<?php die(‘

thinkphp 5.0如何實現自定義404(異常處理)頁面

錯誤頁 自定義異常 異常錯誤 錯誤 load php 錯誤信息 art 正常 404頁面是客戶端在瀏覽網頁時,由於服務器無法正常提供信息,或是服務器無法回應,且不知道原因所返回的頁面。404承載著用戶體驗與SEO優化的重任。404頁面通常為用戶訪問了網站上不存在或已刪除的

ThinkPHP 5 驗證碼實現和驗證

來自公共檔案 common.php /** * [cx_validatecode_img 生成驗證碼] * @param string $imgparam [description] * @

經驗分享:thinkphp 5是如何實現驗證碼功能的

        現在不管使用什麼系統,都需要進行各式各樣的身份驗證,在各種專案中驗證碼是必須會用到的,驗證碼從誕生開始就是為了區別出到底是人類操作,還是機操作。它在一定程度上可以提高網站的安全性,可以

ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 遠端命令執行漏洞利用GetShell)(轉載)

ThinkPHP官方2018年12月9日釋出重要的安全更新,修復了一個嚴重的遠端程式碼執行漏洞。該更新主要涉及一個安全更新,由於框架對控制器名沒有進行足夠的檢測會導致在沒有開啟強制路由的情況下可能的getshell漏洞,受影響的版本包括5.0和5.1版本,推薦儘快更新到最新版本。 漏洞分析 Thin

ThinkPHP(5.1.x ~ 5.1.31 5.0.x ~ 5.0.23)GetShell漏洞

  12月9日,thinkPHP5.*釋出了安全更新,這次更新修復了一處嚴重級別的漏洞,該漏洞可導致(php/系統)程式碼執行,由於框架對控制器名沒有進行足夠的檢測會導致在沒有開啟強制路由的情況下可能的getshell漏洞。   此前沒有研究過thinkPHP框架,這次借這個漏洞學習一下。 #0x01&n

ThinkPHP 5.x 遠端命令執行漏洞復現(GetShell

注:轉載請註明出自:https://blog.csdn.net/qq_36711453/article/details/84977739 一、簡介 ThinkPHP官方2018年12月9日釋出重要的安全更新,修復了一個嚴重的遠端程式碼執行漏洞。該更新主要涉及一個安全更新,由於框架對控制器名沒

Qt Widget 利用 Qt4.5 實現酷炫透明窗體

技術分享 wid 並且 qlabel channel ann event fit attribute 本文講述的是Qt Widget 利用 Qt4.5 實現酷炫透明窗體,QWidget類中的每一個窗口部件都是矩形,並且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或

Discuz利用UC_KEY進行前臺getshell

nbsp return lose pin 取出 erer _array 方式 int 來源:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0137991.html 先通過uc_key把惡意代碼保存在/uc_client/d

thinkphp 5 前臺格式化輸出日期

-m 日期 格式化輸出 csdn get 字符 timestamp str 字符串 thinkphp格式化輸出 {$time|strtotime|date="Y年m月d日",###} $time 是日期字符串,一般後臺的時間是"Y-m-d h:i:s" strtotim

轉:利用一個堆溢出漏洞實現VMware虛擬機逃逸

分片 知識 new code existing pop 選擇 ip地址 oot 轉:https://zhuanlan.zhihu.com/p/27733895?utm_source=tuicool&utm_medium=referral 利用一個堆溢出漏洞實現V

Thinkphp 5】auth權限設置以及實現

new bsp ssi 登陸 public check ces 最終 ont 1.將auth類下載好 放置目錄: extend\auth\auth.php 2.將類中的SQL語句執行,可以在數據庫中創建3張表 auth_group(用戶組表) auth_

[漏洞復現] MS17-010 基於"永恒之藍"實現Windows Getshell

永恒之藍 黑客 滲透測試 MS17-010 Kali Linux 1、漏洞概述2017年5月,被稱為近10年來影響範圍最廣泛“最囂張”的WannaCry勒索病毒席卷全球,據統計,全球共有150多個國家超30萬臺終端被感染,波及政府、學校、醫院、金融、航班等各行各業。一旦中了WannaCry

ThinkPHP 5.0開發微信小程序商場實現全棧項目架構

PHP 微信 第1章 前言:不同的時代,不同的Web我們說,做一個產品,真的只是做一個產品嗎?恐怕不是。現代的Web產品是一個產品矩陣,需要有良好的服務器端架構來支撐整個產品體系。本小節,我們將對現代Web體系做一個介紹,並對課程所需要學習的知識點有一個初步的了解。第2章 環境、工具與準備工作工欲善其

ThinkPHP 5.1.x SQL注入漏洞分析

一、背景引見 ThinkPHP 是一個疾速、複雜的基於 MVC 和麵向物件的輕量級 PHP 開發框架,遵照 Apache2 開源協議釋出。ThinkPHP從降生以來不斷秉承簡潔適用的設計準繩,在堅持出色的功能和至簡的程式碼的同時,也注重開發體驗和易用性,為 WEB 使用和 API 開發提供了強無

phpcms2008網站漏洞如何修復 遠端程式碼寫入快取漏洞利用

SINE安全公司在對phpcms2008網站程式碼進行安全檢測與審計的時候發現該phpcms存在遠端程式碼寫入快取檔案的一個SQL注入漏洞,該phpcms漏洞危害較大,可以導致網站被黑,以及伺服器遭受黑客的攻擊,關於這次發現的phpcms漏洞細節以及如何利用提權我們來詳細剖析。 phpcms2008是國內深

phpcms網站漏洞如何修復對遠端程式碼寫入快取漏洞利用

SINE安全公司在對phpcms2008網站程式碼進行安全檢測與審計的時候發現該phpcms存在遠端程式碼寫入快取檔案的一個SQL注入漏洞,該phpcms漏洞危害較大,可以導致網站被黑,以及伺服器遭受黑客的攻擊,關於這次發現的phpcms漏洞細節以及如何利用提權我們來詳細剖析。 phpcms2008是國內深

phpcms網站漏洞修復 遠端程式碼寫入快取漏洞利用

SINE安全公司在對phpcms2008網站程式碼進行安全檢測與審計的時候發現該phpcms存在遠端程式碼寫入快取檔案的一個SQL注入漏洞,該phpcms漏洞危害較大,可以導致網站被黑,以及伺服器遭受黑客的攻擊,關於這次發現的phpcms漏洞細節以及如何利用提權我們來詳細剖析。 phpcms20