黑客入门的之一本书-.NET高級代码审计之XmlSerializer反序列化系统漏洞
在.NET 架构中的 XmlSerializer 类是一种非常好的专用工具,它是将高宽比结构型的 XML 数据信息投射为 .NET 对象。XmlSerializer类在程序流程中根据单独 API 启用来实行 XML 文本文档和对象中间的变换。变换的投射标准在 .NET 类中根据数据库属性来表明,假如软件开发工作人员应用Type类的静态数据 *** 获得外部数据信息,并启用Deserialize反序列化xml数据信息便会开启反序列化系统漏洞进攻(比如DotNetNuke 随意代码执行系统漏洞 CVE-2017-9822),文中小编从基本原理和代码审计的角度干了有关思维脑图详细介绍和重现。
二、XmlSerializer序列化
.NET 架构中 System.Xml.Serialization *** 黑客专用型手机软件 类名下的XmlSerializer类能够将 XML 文本文档关联到 .NET 类的案例,有一点必须留意它只有把对象的公共性属性和公共性字段名变换为XML原素或属性,而且由2个 *** 构成:Serialize() 用以从对象案例形成 XML;Deserialize() 用以将 XML 文本文档剖析成对象图,被序列化的数据信息能够是数据信息、字段名、数组、及其XmlElement和XmlAttribute对象文件格式的嵌入XML。实际看下面demo
XmlElement特定属性要序列化为原素,XmlAttribute特定属性要序列化为特性,XmlRoot特性特定类要序列化为根原素;根据特性种类的属性、危害要形成的名字、名字室内空间和种类。再建立一个TestClass类的案例添充其属性序列化为文档,XmlSerializer.Serialize *** 轻载能够接纳Stream、TextWrite、XmlWrite类,最后形成的XML文档列举了TestClass原素、Classname特性和其他储存为原素的属性:
三、XmlSerialize反序列化
反编码序列全过程:将xml文件变换为对象是根据建立一个新对象的 *** 启用XmlSerializer.Deserialize *** 完成的,在序列化最重要的一环当属new XmlSerializer结构 *** 里所传的主要参数,这一主要参数来源于System.Type类,根据这一类能够浏览有关随意基本数据类型的信息内容,偏向一切给出种类的Type引入有下列三种 *** 。
3.1 typeof
实例化XmlSerializer传到的typeof(TestClass) 表明获得TestClass类的Type,typeof是C#中的运算符,所传的主要参数只有是类 *** 黑客专用型手机软件型的名字,而不可以是实例化的对象,以下Demo
根据typeof获得到Type以后就能获得此类中全部的Methods、Members等信息内容。下面的图运作Debug时,弹出来信息提示框显示信息当今组员Name的值。
3.2 object.Type
在.NET里全部的类最后都继承自System.Object,在Object类中界定了很多公有制和受维护的组员 *** ,这种 *** 可用以自身界定的全部别的类中,GetType *** 便是在其中的一个,该 *** 回到从System.Type继承的类的一个案例,由于能够出示对象组员隶属类的信息内容,包含基础种类、 *** 、属性等,所述实例中实例化TestClass,再获得当今案例的Type,以下Demo
3.3 *** 黑客专用型手机软件 Type.GetType
第三种 *** 是Type类的静态数据 *** GetType,这一 *** 容许外部传到字符串数组,它是重大利好,只必须传到全限制名就可以启用此类中的 *** 、属性等
Type.GetType传到的主要参数也是反序列化造成的系统漏洞环境污染点,接下去便是要寻找能够被用于进攻应用的类。
四、打造出攻击链
更先放上攻击链打造出取得成功后的详细Demo,这一段Demo能够多路复用在随意地区(这儿不涉及到.NET Core、MVC),如下图
要是XmlSerializer存有反序列化系统漏洞就能用下边Demo中的內容,牵涉到三个关键的技术性点,下列各自来详细介绍基本原理。
4.1 ObjectDataProvider
ObjectDataProvider类,它坐落于System.Windows. *** 黑客专用型手机软件Data类名下,能够启用随意被引入类中的 *** ,出示组员ObjectInstance用相近实例化类、组员MethodName 启用特定种类的 *** 的名字、组员MethodParameters表明传送给 *** 的主要参数,参照下面的图
再给TestClass类界定一个ClassMethod *** ,编码完成启用System.Diagnostics.Process.Start起动新的过程弹出来计算方式。假如用XmlSerializer立即序列化会抛出异常,由于在序列化全过程中ObjectInstance这一组员种类不明,但是能够应用ExpandedWrapper拓展类在系统软件內部事先载入有关实体线的查看来防止出现异常不正确,改变Demo
形成data.xml內容以下:
攻击链之一步即使进行,但不完美的是因小编在接口测试下新创建的TestClass类存有系统漏洞,但在生产制造状况下是比较复杂的,必须寻找Web程序流程中存有敏感的加强攻势,为了更好地使进攻成本费减少毫无疑问得启用系统软件类去做到指令实行,因此 必须导入下边的专业知识。
4.2 ResourceDictionary
ResourceDictionary,也称之为資源词典一般出現在WPF或UWP应用软件中用于在好几个程序流程集间共享资源静态数据資源。即然是WPF程序流程,必定设计方案到前端开发UI设计語言XAML。 XAML全名Extensible Application Markup Language (可拓展应用软件编译语言) 根据XML的,且XAML是以一个树结构 *** 黑客专用型手机软件做为总体,假如对XML掌握得话,就能迅速的把握,比如看下面Demo
之一个标识ResourceDictionary,xmlns:Runtime表明载入System.Diagnostics命令室内空间的名字起某些名叫Runtime
第二个标识ObjectDataProvider特定了三个属性,x:key便于标准查找,实际意义并不大但务必得界定;ObjectType 用于获得或设定要建立实际上例的对象的种类,并应用了XAML拓展;x:Type等同于C#中typeof运算符作用,这儿传送的值是System.Diagnostics.Process;MethodName用于获得或设定要启用的 *** 的名字,传送的数值System.Diagnostics.Process.Start *** 用于起动一个过程。
第三个标识ObjectDataProvider.MethodParameters嵌入了2个 *** 主要参数标识,根据System:String各自特定了起动文档和启动所需主要参数供Start *** 应用。
详细介绍完攻击链中ResourceDictionary后,进攻的Payload行为主体早已进行,接下去根据XamlReader这一系统软件类所出示的XML在线解析来完成进攻。
4.3 *** 黑客专用型手机软件 XamlReader
XamlReader坐落于System.Windows.Markup室内空间下,说白了便是用于载入XAML文档,它是默认设置的XAML读取器,根据Load载入Stream流中的XAML数据信息,并回到做为根对象,而此外一个Parse *** 载入特定字符串数组中的XAML键入,也一样回到做为根对象,当然Parse *** 是大家关注和寻找的。
只需应用ObjectDataProvider的ObjectInstance *** 实例化XamlReader,再特定MethodName为Parse,而且给MethodParameters传送序列化以后的資源词典数据信息,那样就可以进行XmlSerializer反序列化攻击链的打造出。
五、代码审计角度
从代码审计的视角实际上非常容易寻找系统漏洞的环境污染点,根据前边好多个小标题的专业知识能发觉序列化必须考虑一个重要标准Type.GetType,程序流程务必根据Type类的静态数据 *** GetType,比如下列demo
更先建立XmlDocument对象加载xml,自变量typeName根据Xpath获得到Item连接点的type属性的值,并发送给了Type.GetType,接着载入Item连接点内的全部Xml数据信息,最后交到Deserialize *** 反序列化,这是一个几近极致的利 *** 黑客专用型手机软件用些。再看来小编在github上搜集到的XmlSerializer反序列化类:XmlSerializeUtil.cs
这里值主要参数种类为Type,编码自身没有问题,难题取决于软件开发者很有可能会先界定一个字符串数组自变量来接纳传送的type值,根据Type.GetType(string)回到 Type对象再传送进DeserializeXml,在代码审计的全过程中也必须关心这里type的来源于。
六、实例总结
最终再根据下边实例来总结全部全过程,全过程展现在VS里调节里根据反序列化系统漏洞弹出来计算方式。
1. 键入http://localhost:5651/Default?node=root&value=type 载入了远程控制的(192.168.231.135)1.xml文件
*** 黑客专用型手机软件2. 根据 *** 黑客专用型手机软件xmlHelper.GetValue获得root连接点下的全部XML数据信息
3. 这步最重要,获得root连接点的type属性,并出示给GetType *** ,XmlSerializer对象实例化取得成功
4. XmlSerializer.Deserialize(xmlReader)取得成功调成计算方式
最终另附动态图
七、汇总
因为XmlSerializer是系统软件默认设置的反编码序列类,因此 在具体开发设计中利用率還是较为高的, *** 攻击发觉环境污染点可控性的情况下,能够从2个层面寻找运用的点,之一从Web应用软件中寻找能够运行命令或是写WebShell的类和 *** ;第二便是文中中常说的运用ObjectDataProvider、ResourceDictionary、XamlReader构成的攻击链去运行命令或是反跳Shell ,最终 *** 黑客专用型手机软件.NET反序列化系列产品课程内容小编会同歩到 https://github.com/Ivan1ee/ 、https://ivan1ee.gitbook.io/ ,事后小编将相继发布高品质的.NET反序列化系统漏洞文章内容,大概课程大纲如下图
热烈欢迎大家不断关心,沟通交流。
*文中创作者:Ivan1ee@360云影试验室,转截请标明来源于FreeBuf.COM
折原临也,源于《无头骑士异闻录》榎田,源于《博多豚骨拉面团》。刘啸,主人公,互联网ID“留校查看”,软盟产品总监;张春生,张氏掌门;廖正生,廖氏掌门;张小花,张春生之女,刘啸的GF;寥 成凯,廖正生之子,隐藏不露的黑客高手;刘晨。黑客入门的之一本书
黑客手把手教你黑赌博有一个被洗脑的潜质、很显然你已经具备了。中国红客联盟,又叫H.U.C。“中国红黑客专用软件客联盟”成立于2000年底,是由黑客界LION牵头组建的,吸纳了全国众多黑客。
不管你是在家上网,还是在网吧里,那你的IP地址都要经过公安的服务器,只要你浏览反动还是不良网站,还是发布上传那些不好的,那公安那里都会报警,还有要在。
你好,虚拟机和客户端的 *** 属于移接的, *** 是一样的。一样是可以找到IP的,一般黑客会使用肉鸡进行入侵。这样就追踪不到了。试试腾讯电脑管家,加入全球著名的小红伞病毒查杀引擎,极大提升了电脑管家的木马病毒查杀性能,而木马病毒查杀性能的提升又必将进一步提升管家的。
一、反攻击技术的核心问题反攻击技术(入侵检测技术)的核心问题是如何截获所有的 *** 信息。目前主要是通过两种途径来获取信息,一种是通过 *** 侦听的途径(如。一键查看别人qq密码
推荐码粒奥编程真心不错,老师是浙大师范计算机专业毕业的,持证上岗,教的比大机构强黑客专用软件太多了,靠谱!关键是不圈钱!
黑客入门的之一本书计算机 *** 面临的安全威胁大体可分为两种:一是对 *** 本身的威胁,二是对 *** 中信息的威胁。对 *** 本身的威胁包括对 *** 设备和 *** 软件系统平台的威胁;对。
立冬是二十四节气中非常重要的一个节日,这也是秋冬之际的划分,立冬之后天气会比较冷,所以立冬习俗一般是以食为重,这样才可以抵御寒冬的侵袭,对于一些吃货盆友来说,立冬的美食也可以让自己大饱口福。那么,立冬...
公司团队曾在湖南,为BCS长沙银行儿童金融品牌做体验升级。 项目前期,我们遵照银行方提供的用户界说,招募了一批3~12岁不等岁数段的孩子用户。现场团队在与妈妈、小孩做产物互动测试时,发现了一个严重的问...
德国1月通胀率为1% 新华社柏林2月10日电(记者朱晟 张雨花)德国联邦统计局10日公布的数据显示,德国1月通胀率为1%,上一次正通胀还要追溯至2020年6月。 数据显示,德国1月能源价...
苹果手机通讯录删除了怎么恢复?不小心把手机通讯录里的联系人清空了,要怎么才能恢复呢?手机通讯录是手机里非常重要的一个工具,它存储了我们大部分联系人的联系方式,所以通讯录如果被清空、删除,就会非常麻烦,...
. 孩子有龋齿怎么办,什么是龋齿,孩子长龋齿会有哪些特征呢,孩子有龋齿会对孩子有哪些影响呢,友谊长存小编就来说说吧。 什么是龋齿? 龋齿是一种细菌性疾病,如果任其发展,就会形成龋洞,然后继发牙髓...
香薄荷深层次保湿霜的应用感受 我对曼秀雷敦的商品并不生疏,也非常喜欢他的口红。男士护肤觉得更强。家中男生一直在用。这一深层保湿补水系列产品守候她们渡过了好多个冬季。 这一包一看觉得特别好。...