Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Newtonsoft Json中的TypeNameHandling警告

Newtonsoft Json中的TypeNameHandling警告
EN

Stack Overflow用户
提问于 2016-09-18 21:29:08
回答 2查看 20.2K关注 0票数 28

链接中,备注部分提到:

当应用程序从外部源反序列化JSON时,应该谨慎地使用TypeNameHandling。当使用SerializationBinder以外的值反序列化时,应使用自定义TypeNameHandling.None验证传入类型。

在什么情况下,如果用TypeNameHandling.All序列化/反序列化,来自外部源的JSON将是有害的?请举例说明。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-21 02:54:20

当使用TypeNameHandling.All反序列化时,在没有SerializationBinder检查的情况下,json.net将尝试在JSON中创建作为元数据的类型实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Car
{
    public string Maker { get; set; }
    public string Model { get; set; }
}

{
   "$type": "Car",
   "Maker": "Ford",
   "Model": "Explorer"
} //create a Car and set property values

但是,攻击者可能会将代码或框架中存在的危险类型发送给您。

也就是说,这里 System.CodeDom.Compiler.TempFileCollection是一个可序列化的类,它的目的是维护编译过程中产生的临时文件列表,并在不再需要时删除它们。为了确保文件被删除,类实现了在垃圾收集器清除对象时调用的终结器。攻击者将能够构造这个类的序列化版本,它将其内部文件集合指向受害者系统上的任何文件。这将在反序列化之后的某个时候被删除,而不需要从反序列化应用程序中进行任何交互。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    [Serializable]
    public class TempFileCollection
    {
       private Hashtable files;
       // Other stuff...

       ~TempFileCollection()
       {
         if (KeepFiles) {return}
         foreach (string file in files.Keys)
         {
            File.Delete(file);
         }
       }
    }

   {
       "$type": "System.CodeDom.Compiler.TempFileCollection",
       "BasePath": "%SYSTEMDRIVE",
       "KeepFiles": "False",
       "TempDir": "%SYSTEMROOT%"
    } // or something like this, I just guessing but you got the idea
票数 41
EN

Stack Overflow用户

发布于 2018-02-28 17:16:28

在Alvaro Mu oz& Oleksandr Mirosh的黑帽纸https://www.blackhat.com/docs/us-17/thursday/us-17-Munoz-Friday-The-13th-JSON-Attacks-wp.pdf中发现了一些额外的攻击小工具。它们是:

  • System.Configuration.Install.AssemblyInstaller -攻击向量:在程序集负载上执行有效负载。
  • System.Activities.Presentation.WorkflowDesigner -攻击向量:在解析Xaml有效载荷时执行静态方法。
  • System.Windows.ResourceDictionary -攻击矢量:攻击者向受控服务器发送带有URL的有效载荷,此服务器使用Xaml有效载荷和ContentType = application/xaml+xml进行响应,目标服务器将在解析Xaml有效负载期间执行所需的静态方法。
  • System.Windows.Data.ObjectDataProvider攻击向量: 1)调用任何解封对象的方法;2)可以用受控参数调用所需类型的参数化构造函数;3)调用任何公共方法,包括具有受控参数的静态方法。
  • System.Windows.Forms.BindingSource -攻击向量:任意的getter调用。
  • Microsoft.Exchange.Management.SystemManager.WinForms.ExchangeSettingsProvider -攻击向量:它允许从设置器跳到嵌套BinaryFormatter反序列化。

但是,请注意,攻击小工具类型必须与正在反序列化的预期类型兼容(可分配到),才能使攻击成功。当预期的类型是objectdynamic时,这种情况总是正确的,在其他情况下也可能是这样。详情请参见https://stackoverflow.com/q/49038055/3744182

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39565954

复制
相关文章
套壳
phonegap已经不再是phonegap,而是phonegap build,用来打包的。
libo1106
2018/08/08
8190
Linux的“壳”
在上一篇文章中,我们已经初尝了Shell的好处。由于我们后面将大量借助Shell,所以在这里先简要介绍一下这件工具。 什么是Shell 我们已经说过,Shell是Unix系统提供的文本交互界面。你只需要用键盘来输入命令,就可以和操作系统交互。但这还是不够具体。说到底,Shell其实是一个运行着的程序。这个程序接收到你按下回车键之间的输入,就会对输入的文本进行分析。比如下面这个命令: $free -h 包括空格在内总共7个字符。Shell程序会通过空格,区分出命令的不同部分。第一个部分是命令名。剩下的部分是选
Vamei
2018/01/18
1.2K0
android 壳特征
类加载技术: 针对apk中的classes.dex文件进行处理,放入待定的文件中,通过native代码来进行对其运行时解密。
tea9
2022/09/08
1.2K0
android 壳特征
花生壳
有时是恶而不是善,对人的吸引力更大——陀思妥耶夫斯基 今天需要一个https测试,想到了内网穿透,找到了这款付费的软件 花生壳官网 价格也不贵,6元 进入后点击控制台 一系列操作后,找到内网穿透,点击增加映射 选择域名,设置ip和端口 成功 再次用域名访问就可以了,就是有点慢。。。
阿超
2022/08/17
2.4K0
花生壳
【Android 逆向】加壳技术识别 ( VMP 加壳示例 | Dex2C 加壳示例 )
加壳技术识别的必要性 : 拿到 APK 文件后 , 如果想要分析其 DEX 文件 , 需要先 识别出该 APK 是使用的什么技术进行的加壳 , 如果该 APK 只是使用了整体保护 , 只需要将内存中的 DEX 文件 DUMP 下来即可 ; 如果该 APK 使用了 VMP 加壳 , 则需要逆向分析解释器 ;
韩曙亮
2023/03/30
5.6K0
什么是App加壳,以及App加壳的利与弊
什么是App加壳,以及App加壳的利与弊 目前针对移动应用市场上安卓APP被破解、反编译、盗版丛生的现象,很多APP开发人员已经意识到保护APP的重要性。而对于移动应用APP加密保护的问题,如何对D
非著名程序员
2018/02/02
4K0
什么是App加壳,以及App加壳的利与弊
UDP
UDP是轻量级的协议,它仅仅只在网络层之上做了多路复用/分解和少量的差错校验。这是由于数据链路层并不一定提供差错检验,因此UDP提供了差错校验,但是它不恢复差错。
zy010101
2019/05/25
2.3K0
花生壳+tomcat
1,注册花生壳,并激活护照. 2,下载客户端并登录 3,验证域名绑定ip 右键:选择域名诊断: 查看指向ip与自己的公网ip是否匹配 4,设置自己的ip为固定ip(局域网) 5,登录路由器后台:19
用户1112962
2018/07/03
1.9K0
基于UDP编程_udp详解
基于UDP编程 1 UDP是数据报协议,无连接的,不可靠,追求传输效率的一种通信协议数据的发送和接收是同步的.在进行通信之前,不需要建立连接.其传输效率比TCP高.对其服务器而言,并没有三次握手的过程.因此和TCP相比,少了被动监听(listen)和(accept).只需要创建通信设备,绑定IP地址和端口号.然后进行数据的收发.
全栈程序员站长
2022/10/03
1.7K0
什么是App加壳,以及App加壳的利与弊
目前针对移动应用市场上安卓APP被破解、反编译、盗版丛生的现象,很多APP开发人员已经意识到保护APP的重要性。而对于移动应用APP加密保护的问题,如何对DEX文件加密尤为重要。那么接下来,我们就先介
非著名程序员
2018/02/08
3.4K0
什么是App加壳,以及App加壳的利与弊
手脱UPX壳
调试工具是PEID和OD 脱壳工具为OllyDbg,在oep处右键,用ollydump脱壳调试进程。 单步跟踪 单步调试,向上的跳转不让其实现,向下跳转可以实现。(F8单步调试) 当遇到向上的跳
听城
2018/04/27
1.2K0
手脱UPX壳
Python udp编程_python socket udp
TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。
全栈程序员站长
2022/10/04
1.7K0
加壳脱壳笔记
UPX、ASPack、Petite、WinUpack(Upack)、Themida
De4dCr0w
2019/02/27
1.6K0
lwip udp 发送_lwip udp发送
1、void udp_input(struct pbuf *p, struct netif *inp)
全栈程序员站长
2022/10/04
3.8K0
lwip udp 发送_lwip udp发送
UDP协议编程_udp c语言
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/10/04
2.8K0
UDP协议编程_udp c语言
【Android 逆向】加壳技术识别 ( 函数抽取 与 Native 化加壳的区分 | VMP 加壳与 Dex2C 加壳的区分 )
如果函数是 非 Native 函数 , 并且 函数体 无效 , 说明这是 函数抽取 加壳 ;
韩曙亮
2023/03/30
8180
什么是udp攻击_udp攻击原理
什么是UDP攻击? 完整的说应该是UDP淹没攻击 (UDP Flood Attack)
全栈程序员站长
2022/11/09
1.4K0
iframe套壳别的网站
如果你有个域名和服务器,但是你又想要目标网站的内容,可以选择套壳。用html的iframe标签实现
季春二九
2023/07/14
5380
iframe套壳别的网站
c 语言加壳项目,C 加壳工具,快速完成加密保护
当前C# .net语言的应用范围越来越广泛,IIS 的服务器架构后台代码、桌面应用程序的 winform 、Unity3d 的逻辑脚本都在使用。C# .net 具备强大的便捷特性,使得开发成本极低。而作为一款.net 语言,也有它让开发者头疼的弊病——非常容易被反编译。市面上的 Dnspy, ILspy,de4dot等工具可以非常容易反编译出被混淆保护的C# .net 程序。
全栈程序员站长
2022/09/07
1.8K0
c 语言加壳项目,C 加壳工具,快速完成加密保护
加壳工具的使用
1.加壳:是一种通过一系列数学运算,将可执行程序文件(EXE)或动态链接库文件(DLL)的编码进行改变(目前加壳软件还可以压缩、加密),以达到缩小文件体积或加密程序编码的目的。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。 2.常见到的压缩壳有“UPX”、“北斗程序压缩”、“ASPack”等,加密壳有“PE-Armor”、“ASProtect”等等。
全栈程序员站长
2022/09/14
2.3K0
加壳工具的使用

相似问题

使用Linux重定向覆盖Python脚本中的文件

34

我可以在Windows中运行Linux shell脚本吗?

25

linux脚本来压缩所有文件

20

如何写一个DOS脚本来解压一个目录中的所有文件名?

30

linux中的Makefile :我可以不经许可覆盖文件的原因是什么?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文