国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

38-WEB漏洞-反序列化之PHP&JAVA全解(下)

這篇具有很好參考價值的文章主要介紹了38-WEB漏洞-反序列化之PHP&JAVA全解(下)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

一、Java中API實現(xiàn)

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

二、序列化理解

  • 序列化(Serialization):將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)男问降倪^程。在序列化期間,對象將其當(dāng)前狀態(tài)寫入到臨時或持久性存儲區(qū)。
  • 反序列化:從存儲區(qū)中讀取該數(shù)據(jù),并將其還原為對象的過程,成為反序列化。

三、案例演示

3.1、本地

1、主函數(shù):

  • 調(diào)用序列化方法
  • 將反序列化的的結(jié)果返回給person變量
  • 輸出person變量

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

2、序列化方法:

  • 創(chuàng)建一個person的對象
  • 創(chuàng)建一個文件輸出流(指向person.txt的文件),命名為oos
  • 將person對象的寫入到文件輸出流中

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

3、反序列化方法:

  • 創(chuàng)建一個文件輸入流(指向person.txt的文件),命名為ois
  • 從到文件輸入流中讀取person對象的信息
  • 返回person對象(直接顯示會亂碼,一般用base64加密輸出)

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java
4、運行結(jié)果:
38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

3.2、Java 反序列化及命令執(zhí)行代碼測試

1、源代碼分析:

  • 使用exec方法執(zhí)行字符串命令并返回一個process對象
  • 獲取命令(process)的輸入流給reader對象
  • 讀取輸入流的內(nèi)容,打印輸出(反序列化)

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

2、運行結(jié)果:
38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

3.3、WebGoat_Javaweb 靶場反序列化測試

1、啟動靶場:
38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

2、進入靶場:
38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

3、理論分析:

  • 輸入框內(nèi)接受序列化的對象,并且將它反序列化(更改序列化的對象,將頁面延遲5秒)
    38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

4、源代碼分析:

  • 使用IDEA打開jar文件(https://www.cnblogs.com/liaowenhui/p/17353156.html)
  • 可以使用解壓軟件打開,再找到對應(yīng)的jar文件解壓出來后再使用IDEA打開。
    38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

  • 接受參數(shù),base64解密,反序列化讀取,返回讀取的對象

  • 獲取輸出流,賦值給一個對象,然后寫入輸出流(序列化),返回base64編碼
    38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

  • 這里存在命令執(zhí)行(在調(diào)用讀取輸入流的時候,也就是讀取反序列化的數(shù)據(jù),并且把它當(dāng)做命令執(zhí)行)
    38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

5、漏洞分析:這里會將反序列化的數(shù)據(jù)進行讀取,再進行命令執(zhí)行。

  • rO0ABXQAVklmIHlvdSBkZXNlcmlhbGl6ZSBtZSBkb3duLCBJIHNoYWxsIGJlY29tZSBtb3JlIHBvd2VyZnVsIHRoYW4geW91IGNhbiBwb3NzaWJseSBpbWFnaW5l是序列化后加密形成
  • 序列化標(biāo)志參考(可以確定是base64加密),因此要攻擊,要如何構(gòu)造payload?考慮對方的回顯?==》反彈shell(解決回顯)
  • 思路:要執(zhí)行ipconfig =》序列化 =》base64加密 =》rO0AB格式字符串 =》payload
#補充知識點
下方的特征可以作為序列化的標(biāo)志參考:
一段數(shù)據(jù)以rO0AB開頭,你基本可以確定這串就是JAVA序列化base64加密的數(shù)據(jù)。
或者如果以aced開頭,那么他就是這一段java序列化的16進制。|

6、 使用工具將命令構(gòu)造成序列化語句

  • 命令分析
    • 生成組件,打開本地的計算器,保存到payload.bin文件中
    • 為什么要保存?還要進行base64加密
java  -Dhibernate5  -cp  hibernate-core-5.4.9.Final.jar;
ysoserial-master-30099844c6-1.jar
ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin
  • 如何判斷組件
    • 看工具的組建在源代碼內(nèi)是否出現(xiàn)過
    • 這里源代碼出現(xiàn)了組件
java -jar ysoserial-all.jar

38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java
38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

  • 生成payload:
java  -Dhibernate5  -cp  hibernate-core-5.4.9.Final.jar;ysoserial-master-8eb5cbfbf6-1.jar ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin
  • 生成了payload,利用Python程序base64加密
    38-WEB漏洞-反序列化之PHP&JAVA全解(下),小迪安全,web安全,學(xué)習(xí),前端,php,java

  • 將加密后文本的代碼復(fù)制到反序列化窗口,發(fā)現(xiàn)本地的計算器被打開。

3.4、2020-網(wǎng)鼎杯-朱雀組-Web-think_java 真題復(fù)現(xiàn)

https://blog.csdn.net/qq_36585338/article/details/128121566文章來源地址http://www.zghlxwxcb.cn/news/detail-822645.html

四、涉及資源

  • https://github.com/frohoff/ysoserial/releases
  • https://github.com/WebGoat/WebGoat/releases
  • https://github.com/NickstaDB/SerializationDumper/releases/tag/1.12

到了這里,關(guān)于38-WEB漏洞-反序列化之PHP&JAVA全解(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Web安全--反序列化漏洞(java篇)

    Web安全--反序列化漏洞(java篇)

    序列化的意義就在于方便存儲和傳輸,永久的保存到硬盤中,通常保存在一個文件中。 序列化:將java對象轉(zhuǎn)換為字節(jié)序列的過程 反序列化:序列化的逆過程,從儲存區(qū)讀出字節(jié)序列還原成對象的過程 java應(yīng)用在對用戶的輸入沒有進行嚴格的檢查時,即傳入了不可信的數(shù)據(jù)做

    2024年02月09日
    瀏覽(30)
  • Day60:WEB攻防-PHP反序列化&POP鏈構(gòu)造&魔術(shù)方法流程&漏洞觸發(fā)條件&屬性修改

    Day60:WEB攻防-PHP反序列化&POP鏈構(gòu)造&魔術(shù)方法流程&漏洞觸發(fā)條件&屬性修改

    目錄 PHP-DEMO1-序列化和反序列化 序列化操作?- 即類型轉(zhuǎn)換 序列化案例 PHP-DEMO2-魔術(shù)方法觸發(fā)規(guī)則 __construct(): //當(dāng)對象new的時候會自動調(diào)用 __destruct()://當(dāng)對象被銷毀時會被自動調(diào)用 __sleep(): //serialize()執(zhí)行時被自動調(diào)用 __wakeup(): //unserialize()時會被自動調(diào)用 __invoke(): //把對象當(dāng)

    2024年04月27日
    瀏覽(41)
  • 反序列化漏洞(PHP)

    反序列化漏洞(PHP)

    0x01. 序列化和反序列化是什么 序列化:變量轉(zhuǎn)換為可保存或傳輸?shù)淖址倪^程; 反序列化:把序列化的字符串再轉(zhuǎn)化成原來的變量使用 作用:可輕松地存儲和傳輸數(shù)據(jù),使程序更具維護性 0x02. 為什么會有序列化 序列化用于存儲或傳遞 PHP 的值的過程中,同時不丟失其類型

    2024年02月06日
    瀏覽(19)
  • php反序列化漏洞基礎(chǔ)

    php反序列化漏洞基礎(chǔ)

    ????????序列化是將對象或類轉(zhuǎn)換為字符串的過程 ,以便在程序運行過程中對其進行持久化存儲或傳輸?shù)牟僮?。在PHP中,序列化主要用于將類對象或數(shù)組轉(zhuǎn)換成字節(jié)流的形式,以便于存儲在磁盤或傳輸?shù)狡渌到y(tǒng)。 ????????通過 序列化,可以將對象或類轉(zhuǎn)換成一串字

    2024年01月20日
    瀏覽(37)
  • PHP反序列化漏洞原理

    1、原理: 序列化與反序列化是保證數(shù)據(jù)一致性的過程。 2、產(chǎn)生: 序列化與反序列化的過程中,用戶可控 如果反序列化的參數(shù)受到攻擊者的控制,就會產(chǎn)生漏洞。攻擊者可以通過修改參數(shù)個數(shù)等方式來控制反序列化過程,從而導(dǎo)致代碼執(zhí)行、SQL注入、目錄遍歷等不可控后果。

    2024年01月16日
    瀏覽(24)
  • 反序列化漏洞及PHP魔法函數(shù)

    反序列化漏洞及PHP魔法函數(shù)

    目錄 1、漏洞原理 2、序列化(以PHP語言為例) 3、反序列化 4、PHP魔法函數(shù) (1)__wakeup() (2)__destruct() (3)__construct() (4)__toString() (5)__get() (6)__call() PHP反序列化漏洞也叫PHP對象注入,形成的原因是程序未對用戶輸入的序列化字符串進行檢測,導(dǎo)致攻擊者可以控制反

    2024年02月04日
    瀏覽(35)
  • PHP反序列化漏洞之魔術(shù)方法

    PHP反序列化漏洞之魔術(shù)方法

    PHP魔術(shù)方法 (Magic Methods) 是一組特殊的方法,它們在特定的情況下會被自動調(diào)用,用于實現(xiàn)對象的特殊行為或提供額外功能。這些方法的名稱都以雙下劃線開頭和結(jié)尾,例如: __construct() 、 __toString() 等。 魔術(shù)方法可以幫助我們實現(xiàn)一些特殊的行為,例如對象的初始化、屬性

    2024年02月16日
    瀏覽(30)
  • PHP反序列化漏洞-魔術(shù)方法繞過

    一、__wakeup()魔法函數(shù)繞過: 在PHP中,__wakeup()是一個魔術(shù)方法,用于在反序列化對象時自動調(diào)用。 當(dāng)反序列化字符串中的對象屬性個數(shù)大于實際屬性個數(shù)時 ,可以利用這個漏洞進行繞過。 觸發(fā)條件: PHP版本為5.6.25或早期版本,或者PHP7版本小于7.0.10。 反序列化字符串中的對

    2024年01月18日
    瀏覽(48)
  • PHP反序列化漏洞-字符串逃逸

    字符串逃逸(閉合) 字符串逃逸(閉合)是一種在反序列化函數(shù)可控的情況下,通過修改序列化字符串中的敏感字符來達到字符串逃逸的方法。 具體而言,可以通過修改變量名等個數(shù),使得序列化字符串中的字符個數(shù)與實際變量值個數(shù)不一致 。由于反序列化機制要求字符串

    2024年01月20日
    瀏覽(23)
  • php魔術(shù)方法和反序列化漏洞

    漏洞形成的根本原因就是程序沒有對用戶輸入的反序列化字符串進行檢測,導(dǎo)致反序列化過程可以被惡意控制,進而造成代碼執(zhí)行、GetShell 等一系列不可控的后果。反序列化漏洞并不是PHP 特有的,也存在于Java、Python 語言中,其原理基本相同。 反序列化是字節(jié)流轉(zhuǎn)對象的過程

    2024年02月09日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包