當前位置:首頁 » 編程語言 » php反序列化漏洞

php反序列化漏洞

發布時間: 2022-12-26 16:18:07

⑴ [世安杯]一道關於php反序列化漏洞的題目

題目地址: http://ctf1.shiyanbar.com/shian-/
點進去,看到

沒什麼信息,因此ctrl+u查看源碼

看到提示,file_get_contents()函數,聯想到文件包含漏洞,因此google一波,查到

由於本題:allow_url_include=On
因此可以包含一個遠程文件,假設你的雲服務IP地址為:xxx
則可以輸入 http://ctf1.shiyanbar.com/shian-/?user=http://xxxx/a.txt
其中a.txt的內容為: the user is admin

用base64解碼,得到

看到源碼之後,明白了需要使用$file把class.php包含進來,然後把$pass反序列化之後, echo $pass 這句話會執行對象裡面的__toString函數,具體的反序列化漏洞查看 http://m.blog.csdn.net/qq_32400847/article/details/53873275
因此,接下來只要找到序列化之後的字元串,然後GET給pass就行了
復制class.php的源碼到自己的虛擬機上,修改一下

保存之後,通過瀏覽器訪問,得到:

接著把這個序列化字元串賦值給pass,以及用file包含class.php,構造出:

執行之後得到:

發現什麼都沒有,CTRL+U查看源碼

這樣就得到了flag;

此外,可以參考我之前的一篇文章 php偽協議的使用[獲得webshell]
使用file= php://input ,之後傳入一個webshell,再讀取f1a9.php

⑵ 開源PHP組件漏洞曝光,多個運行CMS系統的網站受影響

據外媒報道,研究人員發現,CMS製造商Typo3開發的開源PHP組件PharStreamWrapper存在安全漏洞, 運行Drupal、Joomla或Typo3內容管理系統的網站均受影響。

據悉,該漏洞由研究人員Daniel Le Gall發現,被命名為Drupalgeddon,編號CVE-2019-11831, 允許黑客使用惡意phar歸檔替換網站的合法歸檔文件。 Drupal開發人員將其標記為中等危險級別,低於近期Drupal漏洞和早期遠程代碼執行漏洞的高危評級。

Drupal官方發布漏洞公告稱,通過構造含有惡意代碼的Phar文件, 黑客可繞過Drupal core7.x、8.x版本PHP組件中針對反序列化保護的攔截器,遠程執行惡意代碼, 影響業務系統安全。

此外,黑客還可能會 開發針對該漏洞的自動化攻擊程序, 植入後門程序進一步釋放礦工程序或DDoS僵屍木馬等惡意軟體,影響網站正常運行。

截至目前,官方已發布安全補丁修復該漏洞, 專家建議網站管理員盡快更新以保護網站。 其中運行Drupal版本8.7的網站需要升級到版本8.7.1,運行8.6或更早版本的網站需要更新到版本8.6.16,運行版本7的網站需要升級到版本7.67,而Joomla需要升級到版本3.9.6。

⑶ Shiro RememberMe 1.2.4 反序列化命令執行漏洞復現

Apache Shiro <= 1.2.4

shiro默認使用了 CookieRememberMeManager ,其處理cookie的流程是:得到 rememberMe的cookie值 --> Base64解碼 --> AES解密 --> 反序列化 。
然而AES的密鑰是硬編碼的,就導致了攻擊者可以構造惡意數據造成反序列化的RCE漏洞。

前16位元組的密鑰 -->後面 加入序列化參數 --> AES加密 --> base64編碼 -->發送 cookie 。

使用大佬腳本生成 payload( ysoserial.jar 文件和運行目錄處於同一目錄)
圖片.png 圖片.png
這里依舊使用docker進行漏洞復現
圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png 圖片.png
參考鏈接:
https://blog.csdn.net/three_feng/article/details/52189559
http://www.db-sec.com/2019/06/apache-shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/

⑷ Apache Commons Collections1 反序列化命令執行漏洞

   當伺服器收到序列化對象數據後,會調用對象類的readobject()方法進行反序列化,這里我們構造的惡意序列化對象使用的是AnnotationInvocationHandler類的實例化對象。所以當伺服器收到這個對象時會去調用該類的readobject()方法進行反序列化,下面我們跟著上面的觸發流程進行一步步觸發分析。

結論 :在漏洞觸發的第一步中,在反序列化我們向伺服器發送的惡意序列化AnnotationInvocationHandler對象時會觸發對構造該類對象時傳入的Map類型對象的第一個鍵值對的value進行修改。

   當通過迭代器對象對TransformedMap類型的value值進行修改時會調用(TransformedMap類的父類並實現了 Map.Entry介面)中的內部類MapEntry的setValue()方法,debug運行可以看到this.parent變數值是TransformedMap對象的第一個鍵值對。

結論 :在漏洞觸發的第二步中,觸發了TransformedMap的checkSetValue()方法

   可以看到ChainedTransformer對象的transform()方法的功能是將傳入的對象交給對象中的this.iTransformers變數引用的對象的transform()方法進行處理。this.iTransformers變數引用的對象從53行可知是對象實例化時傳入的,從poc的25行可知我們實例化時傳入一個Transformer[]的數組。

結論 :在漏洞觸發的第三步中,TransformedMap.checkSetValue()觸發ChainedTransformer.transform()方法。ChainedTransformer.transform()方法將傳入的對象經過ChainedTransformer對象中的各個Transformer類型的實例對象調用實例化對象的transform()方法處理。

   由poc 20-25行可知ChainedTransformer對象中的Transformer類型的實例對象分別是ConstantTransformer、InvokerTransformer,首先觸發ConstantTransformer對象的transform()方法,可以看出ConstantTransformer對象的transform()方法的功能是將傳入的對象轉換成實例化ConstantTransformer對象時傳入的對象,由poc的21行可知實例化ConstantTransformer對象時傳入的對象為java.lang.Runtime.class,因此經過ConstantTransformer.transform()後傳入的參數變成了類對象 java.lang.Runtime.class ,再經過InvokerTransformer.transform()處理。

   從59-61行可以看出InvokerTransformer.transform()功能是通過反射得到傳入對象中方法名為this.iMethodName參數類型為this.iParamTypes的方法,並執行該方法傳入的方法參數為this.iArgs。而this.iMethodName、this.iParamTypes、this.iArgs三個參數都是我們在實例化InvokerTransformer對象時自定義的,這導致可以進行任意命令執行。

第一次執行InvokerTransformer.transform()方法後

第二次執行InvokerTransformer.transform()方法後

第三次執行InvokerTransformer.transform()方法

結論 :在漏洞觸發的第四步中,傳入的對象經過1次ConstantTransformer.transform()與3次InvokerTransformer.transform()轉換觸發exec()任意命令執行。

ps:jdk版本需要1.7

⑸ php數組反序列化失敗,求解!!!

unserialize()解序列化函數裡面要用實際長度!根據strlen返回的「實際長度」進行修改。
最後幾行,改為:
echo "<br/>";
echo "實際長度=".strlen("fwejfo 策劃送 fewf fewf ewfewf *%&5"); //輸出35
echo "<p>";
var_mp(unserialize('a:4:{s:1:"a";s:2:"aa";s:1:"b";i:20;s:1:"c";s:47:"測試ljfiewojfowjfo分為豐富32&*%*&%*%%875khuiehf";i:10;s:35:"fwejfo 策劃送 fewf fewf ewfewf *%&5";}'));
測試正確!
如果傳遞的字元串參數,解序列化失敗,則返回 FALSE。

⑹ 這個網站干什麼的 什麼是PHP反序列化靶機實戰

在我們講PHP反序列化的時候,基本都是圍繞著serialize(),unserialize()這兩個函數。那麼什麼是序列化呢,序列化說通俗點就是把一個對象變成可以傳輸的字元串。舉個例子,不知道大家知不知道json格式,這就是一種序列化,有可能就是通過array序列化而來的。而反序列化就是把那串可以傳輸的字元串再變回對象。而反序列化則比較容易出現漏洞。

這么序列化一下然後反序列化,為什麼就能產生漏洞了呢?
這個時候,我們就要了解一下PHP裡面的魔術方法了,魔法函數一般是以__開頭,通常會因為某些條件而觸發不用我們手動調用:
在研究反序列化漏洞的時候,如果伺服器能夠接收我們反序列化過的字元串、並且未經過濾的把其中的變數直接放進這些魔術方法裡面的話,就容易造成很嚴重的漏洞了。

所以這個網站其實希望告訴大家這個反序列化的問題,並提供一些實戰練習。

⑺ php如何循環反序列化

1.構造HITCON類反序列化字元串,其中$method='login',$args數組』username』部分可用於構造SQL語句,進行SQL注入,'password』部分任意設置。

2.調用login()函數後,利用username構造聯合查詢,使查詢結果為SoFun類反序列化字元串,設置username構造聯合查詢,使查詢結果為SoFun類反序列化字元串,設置username構造聯合查詢,使查詢結果為SoFun類反序列化字元串,設置file=『flag.php』,需繞過__wakeup()函數。

3.繞過oadData()函數對反序列化字元串的驗證。

4.SoFun類 __destruct()函數調用後,包含flag.php文件,獲取flag,需繞過__wakeup()函數

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:333
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:374
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:609
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:30
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:105
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:940
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:736
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:800
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:507
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:369