typecho老版本的反序列化研究
雖然自己也水了些CVE,但是並沒有自己滿意的、漂亮的漏洞利用鏈,今天呢主要是自己還沒審出過反序列化漏洞,所以找了typecho老版本來審一下。
正文
在install.php第246行會反序列化操作
進Typecho_Cookie類看一下get方法
這裡很顯然是一個獲取值的。繼續看一下怎麼進入到這個反序列化,這裡php夾雜著html程式碼,不太方便看,我簡單處理一下。首先
這裡是判斷是否已經安裝的,一般其他cms的寫法是隻判斷是否已經存在了lock檔案,但是這裡有個可控引數,也就是我們還能進入這個install.php頁面。繼續往下走,可以直接進入反序列化操作。這裡還需要魔術方法,可以參考我總結的另外一篇文章http://p0desta.com/2018/04/01/php%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%80%BB%E7%BB%93/
這裡我首先跟的是 $db->addServer,但是當我跟到 Config.php第62到81行的時候
只發現到這裡如果類當做陣列遍歷的時候會觸發 cureent方法,但是我全域性搜 current方法並沒有找到可以利用的地方。
然後繼續跟一下
跟到 Db.php第114行到135行
危險的地方在於
因為 $adapterName方法是可控的,被當做字串拼接了,那麼就會觸發 toString方法,簡化一下
那麼全域性搜一下toString找一下可以利用的地方
找到這個跟進去,這裡看Feed.php第290行
讀取不可訪問屬性的值時,get() 會被呼叫,那麼只要item['author']我們可控,那麼就可以出發get()魔術方法。
通過全域性搜素 __get()跟進/var/Typecho/Request.php,267行
繼續看get方法
接著呼叫了 _applyFilter方法,繼續跟進
一開始我直接構造getshell,並沒有遇到什麼問題,但是如果想講執行結果輸出出來就會遇到問題,問題產生的原因呢在於
install.php第54行 ob_start();
看一下手冊
什麼意思呢,這裡我寫個小demo來解釋一下
這個執行的話是不會有輸出的, ob_start()啟用了緩衝,輸出結果會被寫入到緩衝區,但是如果執行了ob_end_clean函式就會把緩衝區的內容丟棄掉,那麼也就沒有輸出了。在Common.php第225行
設定了使用者自定義的異常處理函式,當存在未捕獲的異常時會呼叫,看一下定義測函式
@ob_end_clean();顯然,它清理了緩衝區。
這裡因為payload使我們構造好帶進去的,很難做到不觸發異常,那麼我們有什麼辦法來繞過呢。這裡我想到的是讓它執行完我們的命令之後引發個報錯,看一下報錯型別
寫個demo解釋一下
看Feed.php第292-296行
那麼我們就可以讓其停止執行,這樣的話就不會執行到 ob_end_clean函式了。修改payload如下
總結
總的利用鏈還是非常有意思的
有趣的攻擊鏈總能引起研究的興趣。
本文僅用於普及網路安全知識,提高小夥伴的安全意識的同時介紹常見漏洞的特徵等,若讀者因此做出危害網路安全的行為後果自負,與合天智匯以及原作者無關,特此宣告。本文為原創文章,轉載請註明出處!
相關文章
- 序列化: 一個老傢伙的鹹魚翻身(Java物件、XML、JSON、反序列化)Java物件XMLJSON
- Typecho在Ubuntu 22.04上的安裝部署Ubuntu
- 數字抽成的新戰場,反壟斷法的老故事
- “反遊戲“的遊戲——放置遊戲研究遊戲
- 基於Typecho的桌布頭像站原始碼原始碼
- 一次老版本jboss反序列化漏洞的利用分析
- Java安全之反序列化回顯研究Java
- Typecho程式偽靜態規則
- js 富文字轉義及反轉義(包含vue版本的)JSVue
- 遊戲模型研究:預測與反饋遊戲模型
- Typecho Pinghsu 主題加入備案資訊
- 分享兩個內建Google廣告位的Typecho主題Go
- 【Windows】 多個net framework 版本,怎麼解除安裝比較老的WindowsFramework
- MacOS X APK 最新版本 反編譯MacAPK編譯
- Hive的序列化/反序列化(SerDe)Hive
- python的序列化和反序列化Python
- Java的序列化和反序列化Java
- Java的序列化與反序列化Java
- 澤平巨集觀:老齡化研究報告2022
- java序列化物件例項——源於孫鑫老師的java無難事視訊教程Java物件
- Java中的序列化與反序列化Java
- PHP的序列化和反序列化入門PHP
- 老闆讓我 7 天研究一個 Plausible 統計
- 開源一款基於 Typecho 開發的部落格主題
- 開源一款基於 Typecho 開發的導航主題
- 打呼嚕老的更快!研究表明,經過這種方式治療後,可逆轉
- 在Springboot + Mybaitis-plus 專案中利用Jackson實現json對java多型的(反)序列化Spring BootAIJSONJava多型
- [BUG反饋]將1.0版本和1.1版本的BUG整理一下,看看有沒有還存在的。
- .NET物件的XML序列化和反序列化物件XML
- 可以直接反編譯Mips架構的IDA版本(無需安裝指令碼)編譯架構指令碼
- 物件序列化(序列化)物件
- Java序列化、反序列化、反序列化漏洞Java
- 如何用小鳥雲伺服器搭建Typecho站點?伺服器
- Java物件的序列化和反序列化實踐Java物件
- 從java的序列化和反序列化說起Java
- Java物件的序列化與反序列化-Json篇Java物件JSON
- 高效的序列化/反序列化資料方式 Protobuf
- ITPUB部落格新版本上線啦,意見反饋收集!