反序列化漏洞

反序列化漏洞:

? ? 序列化:就是把一個(gè)對象變成字符串,目的就是為了方便傳輸,或者保存在內(nèi)存,文件(可以節(jié)省內(nèi)存空間),數(shù)據(jù)庫中。

? ? 反序列化:就是把被序列化的字符串還原為對象,然后在接下來的代碼中繼續(xù)使用。

? ? 反序列化漏洞產(chǎn)生的原理:序列化和反序列化本身沒有問題,但是如果反序列化的內(nèi)容是用戶可以控制的,且后臺不正當(dāng)?shù)氖褂昧四Хê瘮?shù),那么用戶就可以注入精心構(gòu)造的 payload。當(dāng)進(jìn)行反序列化或者對象銷毀時(shí)候就有可能會觸發(fā)對象中的一些魔術(shù)方法,造成意想不到的危害。

? ? 魔法函數(shù)有:

? ??construct()當(dāng)一個(gè)對象創(chuàng)建時(shí)被調(diào)用

????destruct()當(dāng)一個(gè)對象銷毀時(shí)被調(diào)用

????toString()將一個(gè)對象轉(zhuǎn)換成一個(gè)字符串使用

????sleep() 對象序列化之前被調(diào)用

????wakeup()反序列化之前被調(diào)用

不同語言對應(yīng)的序列化和反序列化函數(shù):

? ? php: serialize(),unserialize()

? ? java:ObjectOutputStream.writeObject()方法可以實(shí)現(xiàn)序列化,ObjectInputStream.readObject()方法用于反序列化.

防護(hù):

? ??嚴(yán)格控制傳入變量,嚴(yán)謹(jǐn)使用魔法函數(shù)

要點(diǎn):

? ??序列化時(shí),只對對象的屬性進(jìn)行保存,而不管對象的方法

? ? 遇到過Weblogic,jboss,struts2的反序列化漏洞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容