首页 > 其他分享 >JSON .NET SERIALIZE exploitation

JSON .NET SERIALIZE exploitation

时间:2023-12-11 22:01:15浏览次数:32  
标签:SERIALIZE json System exploitation JSON net 序列化 type

exploiting json serialization in .NET core

当使用特定的配置的时候,将在NewtonSoft JSON中会有json的反序列化漏洞。

更加具体化一些就是当 jsonserializationsettings 中的typenamehandling这个属性不是None的时候。

因为默认来说 typenamehandling 是设置成none的。

当配置文件(指的是typenamehandling)这个属性并非none的时候,一个新的属性将会同时被序列化。那就是$type属性。这个属性的value将会同时被序列化。

当被反序列化时,type属性也会被用来反序列化到指定的type类型。所以这是反序列化的入口

下面有四个typenamehandling的值

none array all auto

要实现这样的攻击的要求之一就是 将JSON反序列化为我们开发类型的派生类型或者泛型对象类型

寻找能够漏洞攻击的对象

不是所有的对象都能够进行json .net的反序列化。

这些对象需要有一个空的构造函数或者一个带参数的构造函数

payload

以下有一些手法能够用于默认的.net core应用存在json .net漏洞配置的情况

攻击者能够用以下的payload通过后台解析json格式来触发漏洞

生成要给只读文件

{
   "$type": "System.IO.FileInfo, System.IO.FileSystem",
   "fileName": "test.txt",
   "isReadOnly": true
}

修改文件属性

{
  "$type": "System.IO.FileInfo, System.IO.FileSystem",
  "fileName": "test.txt",
  "attributes": 2
}

执行命令

只存在于WPF框架

使用.net core web程序时,使用会抛出一个异常因为他找不到persentationframework依赖

 

 

当我们生成payload特和时候可以根据官方手册进行输入

TypeNameHandling setting (newtonsoft.com)

具体的输入value参数得根据具体的文件来

标签:SERIALIZE,json,System,exploitation,JSON,net,序列化,type
From: https://www.cnblogs.com/lisenMiller/p/17895664.html

相关文章

  • mysql存json数据时的查询办法
    很多时候mysql的一列当中存的是json格式的数据,这时候如果要查询某个key对应的值的时候要如何查询呢,这里记录一种查询方法:json列的值:{“InventoryMainTypeCode”:1,“InventoryMainTypeName”:“GOOD”}现在要查询InventoryMainTypeCode为xxx或者InventoryMainTypeName为xxx的数......
  • Chrome 浏览器开启 Json 数据格式化显示
    Chrome浏览器开启Json数据格式化显示默认格式安装扩展程序JSONView......
  • MyBatis-Plus 自定义 TypeHandler 映射JSON类型为List
    1在mysql5.7支持json类型,那么在表实体是怎么运用的在mybatis-plus中有相关的handler/***Jackson实现JSON字段类型处理器**@authorhubin*@since2019-08-25*/@Slf4j@MappedTypes({Object.class})@MappedJdbcTypes(JdbcType.VARCHAR)publicclassJackso......
  • JSON提取器id+BeanShell断言
    JSON提取data中的值: 用提取得值${id}再继续执行: 利用BeanShell断言:importorg.json.*;Stringresponsedata=prev.getResponseDataAsString();JSONObjectdata_obj=newJSONObject(responsedata);Stringid=data_obj.get("data").get("id").toString();Strings......
  • tryhackme进攻性渗透测试-Advanced Exploitation 高级利用
    SteelMountain侦察Nmap-sC-sV-O$IP-oNbasic_scan.nmapNmap-script=vuln$IP-oNvuln_scan.nmap总之,masscan在eth0上工作,所以SYN端口探测技术全部没有响应包需要一个flag把探测流量正确的打入tun0中masscan-p808010.10.205.233-etun0nmap除了使用SYN端口......
  • A sample of JSON RPC service
    ThisisasampleserviceprogramwhichshowhowtoimplementaJSONRPC.TheRPCserviceincludedtwofunctionswhichusedforRSAsignandverify.Ifyouwanttobuildthesourcecode,youneedinstallorbuildthreeopensorucelibraries:Libevent,cJSON......
  • 动手实现基于 JSON 和 OData 两种数据模型的 Web 应用表格控件行项目的添加和删除
    文章标题描述的需求是笔者在工作和网络上经常收到的前端开发领域的咨询话题之一。Web应用的表格控件,在切换到编辑模式下之后,给用户提供了行项目的添加和删除功能。基于MVC和MVVM框架的前端控件,都离不开Model即数据模型层。笔者工作中使用最多的模型层实现技术,即JSON模型......
  • vue 格式化JSON
    第一步:安装npmibin-code-editor-S#oryarnaddbin-code-editor第二步:在main.js中引入//引入vueimportVuefrom'vue';//引入bin-code-editor相关插件和样式importCodeEditorfrom'bin-code-editor';import'bin-code-editor/lib/styles/index.css�......
  • Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
    Python提供了强大的输入输出和文件处理工具,通过io、pickle和json等模块,开发者可以轻松处理文件、序列化和反序列化数据,并在不同格式之间进行转换。在本文中,我们将深入介绍这些模块的用法和实际示例。1.io模块:强大的输入输出工具io模块提供了对文件I/O进行灵活处理的能力......
  • Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
    Python提供了强大的输入输出和文件处理工具,通过io、pickle和json等模块,开发者可以轻松处理文件、序列化和反序列化数据,并在不同格式之间进行转换。在本文中,我们将深入介绍这些模块的用法和实际示例。1.io模块:强大的输入输出工具io模块提供了对文件I/O进行灵活处理的能力......