[發(fā)明專利]一種PHP反序列化漏洞利用鏈檢測(cè)方法有效
| 申請(qǐng)?zhí)枺?/td> | 202110412082.0 | 申請(qǐng)日: | 2021-04-16 |
| 公開(公告)號(hào): | CN113010899B | 公開(公告)日: | 2022-06-07 |
| 發(fā)明(設(shè)計(jì))人: | 劉楚彤;章思宇;姜開達(dá);管海兵 | 申請(qǐng)(專利權(quán))人: | 上海交通大學(xué) |
| 主分類號(hào): | G06F21/57 | 分類號(hào): | G06F21/57;G06F21/56 |
| 代理公司: | 上海旭誠知識(shí)產(chǎn)權(quán)代理有限公司 31220 | 代理人: | 鄭立 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 php 序列 漏洞 利用 檢測(cè) 方法 | ||
1.一種PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,包括以下步驟:
步驟1、預(yù)定義一系列在檢測(cè)過程中所需用到的各種規(guī)則;
步驟2、從待檢測(cè)的PHP文件中獲取源代碼信息;
步驟3、根據(jù)所述各種規(guī)則進(jìn)行反序列化漏洞利用鏈檢測(cè);在檢測(cè)過程中將源代碼信息劃分為三種類型;對(duì)三種類型源代碼執(zhí)行不同的檢測(cè)流程;其中,對(duì)基于PHP的CMS項(xiàng)目文件的檢測(cè)流程將部分源代碼存儲(chǔ)在本地?cái)?shù)據(jù)庫中;
所述步驟3檢測(cè)流程包括對(duì)單個(gè)PHP文件的檢測(cè)流程、對(duì)多個(gè)互相包含的PHP文件的檢測(cè)流程、對(duì)基于PHP的CMS項(xiàng)目文件的檢測(cè)流程;
所述對(duì)單個(gè)PHP文件的檢測(cè)流程包括以下步驟:
步驟311、確定php源代碼中是否存在類;
步驟312、確定類是否可反序列化;
步驟313、確定類是否繼承了父類或?qū)崿F(xiàn)了抽象類以找全所有可以反序列化類的調(diào)用函數(shù);
步驟314、確定全部類中是否存在__destruct()或者_(dá)_wakeup()函數(shù),并對(duì)全部類中出現(xiàn)的這兩個(gè)函數(shù),確定魔術(shù)方法中是否觸發(fā)了定義好的危險(xiǎn)規(guī)則;
步驟315、若沒有觸發(fā)危險(xiǎn)規(guī)則,確定魔術(shù)方法中是否調(diào)用了其他魔術(shù)方法或類的自定義函數(shù);
步驟316、在其他魔術(shù)方法和類的自定義函數(shù)中遞歸地進(jìn)行利用鏈檢測(cè);
步驟317、檢測(cè)流程中有觸發(fā)到定義好的危險(xiǎn)規(guī)則,說明代碼中存在反序列化漏洞利用鏈;若檢測(cè)過程中觸發(fā)了死循環(huán)異常規(guī)則或檢測(cè)正常終止,說明代碼中不存在反序列化漏洞利用鏈;
所述對(duì)多個(gè)互相包含的PHP文件的檢測(cè)流程包括以下步驟:
步驟321、確定包含文件的函數(shù)有include、require、include_once、require_once四個(gè);
步驟322、確定提供的各個(gè)源文件是否通過包含函數(shù)互相引入;
步驟323、將所有通過函數(shù)引入的php源文件標(biāo)記;
步驟324、在標(biāo)記的php源文件中,任意把某一文件視為主文件,將其他所有標(biāo)記后的源代碼附加在主文件之后生成的新的整體代碼文件;
步驟325、對(duì)整體代碼文件執(zhí)行所述對(duì)單個(gè)PHP文件的檢測(cè)流程進(jìn)行檢測(cè);
所述對(duì)基于PHP的CMS項(xiàng)目文件的檢測(cè)流程包括以下步驟:
步驟331、標(biāo)記所有存在命名空間(namespace)的文件,即可以直接反序列化時(shí)調(diào)用的類;
步驟332、將標(biāo)記文件源代碼存入本地?cái)?shù)據(jù)庫中備用;
步驟333、在標(biāo)記文件的數(shù)據(jù)庫中搜尋各個(gè)類是否存在__destruct()或者_(dá)_wakeup()函數(shù);
步驟334、從數(shù)據(jù)庫中提取當(dāng)前類所在的源碼,確定是否可反序列化;
步驟335、在__destruct()或__wakeup()函數(shù)中檢測(cè)是否觸發(fā)了危險(xiǎn)規(guī)則;
步驟336、如果沒有觸發(fā)危險(xiǎn)規(guī)則,進(jìn)一步確定__destruct()或__wakeup()函數(shù)中是否調(diào)用了其他魔術(shù)方法或類的自定義函數(shù);
步驟337、在其他魔術(shù)方法和類的自定義函數(shù)中遞歸地進(jìn)行利用鏈檢測(cè);
步驟338、若檢測(cè)流程中觸發(fā)了危險(xiǎn)規(guī)則,說明代碼中存在反序列化漏洞利用鏈;
步驟339、若檢測(cè)過程中觸發(fā)了所述的死循環(huán)異常規(guī)則或檢測(cè)正常終止,說明代碼中不存在反序列化漏洞利用鏈。
2.如權(quán)利要求1所述的PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,所述步驟1包括定義一系列反序列化可能觸發(fā)的危險(xiǎn)規(guī)則。
3.如權(quán)利要求1所述的PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,所述步驟1包括設(shè)定觸發(fā)類的魔術(shù)方法規(guī)則。
4.如權(quán)利要求1所述的PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,所述步驟1包括設(shè)定觸發(fā)類中的自定義方法規(guī)則。
5.如權(quán)利要求1所述的PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,所述步驟1包括設(shè)定防止死循環(huán)規(guī)則。
6.如權(quán)利要求1所述的PHP反序列化漏洞利用鏈檢測(cè)方法,其特征在于,所述步驟3對(duì)結(jié)果進(jìn)行人工分析確認(rèn)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于上海交通大學(xué),未經(jīng)上海交通大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110412082.0/1.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過限制訪問或處理程序或過程
- 網(wǎng)站漏洞告警方法及裝置
- 網(wǎng)站漏洞審核方法及裝置
- 漏洞檢測(cè)方法及裝置、信息交互方法及設(shè)備
- 一種基于漏洞關(guān)聯(lián)分布模型的漏洞發(fā)現(xiàn)方法
- 漏洞庫構(gòu)建方法、裝置、漏洞庫及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 漏洞快速感知、定位及驗(yàn)證的方法與系統(tǒng)
- 一種基于Oval的漏洞掃描修復(fù)系統(tǒng)及方法
- 一種漏洞驗(yàn)證的方法及電子設(shè)備
- 一種漏洞防護(hù)方法、裝置及電子設(shè)備
- 漏洞數(shù)據(jù)的比較方法、裝置、電子設(shè)備以及存儲(chǔ)介質(zhì)





