精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

SoapFormatter反序列化漏洞示例分析

SoapFormatter反序列化漏洞示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

繁峙ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

一、前言

NetDataContractSerializer和DataContractSerializer一樣用于序列化和反序列化Windows Communication Foundation (WCF) 消息中發送的數據。兩者之間存在一個重要區別:NetDataContractSerializer 包含了CLR,通過CLR類型添加額外信息并保存引用來支持類型精確,而DataContractSerializer 則不包含。 因此,只有在序列化和反序列化端使用相同的 CLR 類型時,才能使用 NetDataContractSerializer。若要序列化對象使用 WriteObject或者Serialize方法, 若要反序列化 XML流使用 ReadObject或者Deserialize方法。在某些場景下讀取了惡意的XML流就會造成反序列化漏洞,從而實現遠程RCE攻擊,本文筆者從原理和代碼審計的視角做了相關介紹和復現。   

二、SoapFormatter序列化

SoapFormatter類實現的IFormatter接口中定義了核心的Serialize方法可以非常方便的實現.NET對象與SOAP流之間的轉換,可以將數據保存為XML文件,官方提供了兩個構造方法。    

SoapFormatter反序列化漏洞示例分析

下面還是用老案例來說明問題,首先定義TestClass對象    

定義了三個成員,并實現了一個靜態方法ClassMethod啟動進程。 序列化通過創建對象實例分別給成員賦值     

SoapFormatter反序列化漏洞示例分析

常規下使用Serialize得到序列化后的SOAP流,通過使用XML命名空間來持久化原始程序集,例如下圖TestClass類的開始元素使用生成的xmlns進行限定,關注a1 命名空間







360

Ivan1ee

18






三、SoapFormatter反序列化

3.1 反序列化原理和用法

SoapFormatter類反序列化過程是將SOAP消息流轉換為對象,通過創建一個新對象的方式調用Deserialize多個重載方法實現的,查看定義得知實現了IRemotingFormatter、IFormatter接口,

SoapFormatter反序列化漏洞示例分析

查看IRemotingFormatter接口定義得知也是繼承了IFormatter    

SoapFormatter反序列化漏洞示例分析

筆者通過創建新對象的方式調用Deserialize方法實現的具體實現代碼可參考以下

SoapFormatter反序列化漏洞示例分析

反序列化后得到TestClass類的成員Name的值。

SoapFormatter反序列化漏洞示例分析

3.2 攻擊向量—ActivitySurrogateSelector

在SoapFormatter類的定義中除了構造函數外,還有一個SurrogateSelector屬性,SurrogateSelector便是代理選擇器,序列化代理的好處在于一旦格式化器要對現有類型的實例進行反序列化,就調用由代理對象自定義的方法。查看得知實現了ISurrogateSelector接口,定義如下    

SoapFormatter反序列化漏洞示例分析

因為序列化代理類型必須實現System.Runtime.Serialization.ISerializationSurrogate接口,ISerializationSurrogate在Framework ClassLibrary里的定義如下:    

SoapFormatter反序列化漏洞示例分析

SoapFormatter反序列化漏洞示例分析

SoapFormatter反序列化漏洞示例分析

代碼中判斷類型解析器IsSerializable屬性是否可用,如果可用直接基類返回,如果不可用就獲取派生類System.Workflow.ComponentModel.Serialization.ActivitySurrogateSelector的類型,然后交給Activator創建實例,再回到GetObjectData方法體內,另外為了對序列化數據進行完全控制,就需要實現Serialization.ISeralizable接口,定義如下:

SoapFormatter反序列化漏洞示例分析

有關更多的介紹請參考《.NET高級代碼審計第二課 Json.Net反序列化漏洞》,在實現自定義反序列類的時通過構造方法讀取攻擊者提供的PocClass類    

SoapFormatter反序列化漏洞示例分析

下圖定義了PayloadClass類實現ISerializable接口,然后在GetObjectData方法里又聲明泛型List集合接收byte類型的數據    

SoapFormatter反序列化漏洞示例分析

將PocClass對象添加到List集合,聲明泛型使用IEnumerable集合map_type接收程序集反射得到的Type并返回IEnumerable類型,最后用Activator.CreateInstance創建實例保存到e3此時是一個枚舉集合的迭代器。    

SoapFormatter反序列化漏洞示例分析上圖將變量e3填充到了分頁控件數據源,查看PageDataSource類定義一目了然,    

SoapFormatter反序列化漏洞示例分析

除此之外System.Runtime.Remoting.Channels.AggregateDictionary返回的類型支持IDictionary,然后實例化對象DesignerVerb并隨意賦值,此類主要為了配合填充MenuCommand類properties屬性的值,最后為哈希表中的符合條件的buckets賦值。     
   

SoapFormatter反序列化漏洞示例分析

接下來用集合添加數據源DataSet,DataSet和DataTable對象繼承自System.ComponentModel.MarshalByValueComponent類,可序列化數據并支持遠程處理ISerializable接口,這是ADO.NET對象中僅有支持遠程處理的對象,并以二進制格式進行持久化。

SoapFormatter反序列化漏洞示例分析

更改屬性DataSet.RemotingFormat值為SerializationFormat.Binary,更改屬性DataSet.CaseSensitive為false等,再調用BinaryFormatter序列化List集合,如下圖。

SoapFormatter反序列化漏洞示例分析

因為指定了RemotingFormat屬性為Binary,所以引入了BinaryFormatter格式化器并指定屬性SurrogateSelector代理器為自定義的MySurrogateSelector類。序列化后得到SOAP-XML,再利用SoapFormatter對象的Deserialize方法解析讀取文件內容的流數據,成功彈出計算器

SoapFormatter反序列化漏洞示例分析

SoapFormatter反序列化漏洞示例分析SoapFormatter反序列化漏洞示例分析

3.3 攻擊向量—PSObject

由于筆者的Windows主機打過了CVE-2017-8565(Windows PowerShell遠程代碼執行漏洞)的補丁,利用不成功,所以在這里不做深入探討,有興趣的朋友可以自行研究。有關于補丁的詳細信息參考:https://support.microsoft.com/zh-cn/help/4025872/windows-powershell-remote-code-execution-vulnerability

四、代碼審計

4.1 XML載入

從代碼審計的角度找到漏洞的EntryPoint,傳入XML,就可以被反序列化,這種方式也是很常見的,需要關注一下,LoadXml直接載入xml數據,這個點也可以造成XXE漏洞。例如這段代碼:    

SoapFormatter反序列化漏洞示例分析

這種污染點漏洞攻擊成本很低,攻擊者只需要控制傳入字符串參數source便可輕松實現反序列化漏洞攻擊,彈出計算器。

SoapFormatter反序列化漏洞示例分析

4.2 File讀取

SoapFormatter反序列化漏洞示例分析

這段是摘自某個應用的代碼片段,在審計的時候只需要關注DeserializeSOAP方法中傳入的path變量是否可控。

關于SoapFormatter反序列化漏洞示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯行業資訊頻道了解更多相關知識。


本文名稱:SoapFormatter反序列化漏洞示例分析
當前鏈接:http://m.jcarcd.cn/article/ggcdoo.html
主站蜘蛛池模板: 国产高清视频在线 | 日韩去日本高清在线 | 伦理影院在线观看 | 日韩欧美亚洲综合久 | 成人h网| 日韩在线观看精品 | 国产福利在线永久 | 国产vr精品专区 | 国产精选视频 | 国语自产偷拍精 | 国产精品一国产精品 | 午夜理论国产 | 国产亚洲精品 | 午夜亚洲一区二区福 | 国产91免费精品电 | 欧美专区在线播放 | 日韩免费观看一区 | 蜜桃视频在线观看 | 人人射97 | 欧美三级a做 | 国产男同gaya | 91露出在线| 美日韩午夜福利 | 动漫国产在线精品一 | 国产女主播福利资源 | 日韩一区二精品服务 | 午夜视频9999 | www.ht视频| 九九热在| 播放国产盗摄视频 | 日韩超级大片中文 | 国产丝袜大片 | 区二区三区蜜芽 | 日本成人v片在线 | 国产A∨ | 国产在线视频色综合 | 97公开视频 | 精品一区 | 国产高清激情 | 国产又粗又大 | 日韩美女网站在线看 |