谨防.NET方法的反序列化+通过粘贴执行代码

鉴于.NET Framework 中对反序列化问题的实际利用,信息保障公司NCC Group的研究者认为识别.NET Framework 4.7.2方法和使用反序列化的类可能是有用的,因为它可以帮助安全研究人员和开发人员找到并解决潜在问题。研究的初步结果可以从以下网址下载:

https://www.nccgroup.trust/uk/our-research/use-of-deserialisation-in-.net-framework-methods-and-classes/?research=Whitepapers

8月与微软分享调查结果后,研究人员在代码文档中添加了新的安全说明,如下所示:https://github.com/dotnet/dotnet-api-docs/pull/502。我们的白皮书还应该包含.NET Framework中几乎所有的方法和类,这些方法和类在编写时都有安全说明,这些方法和类可能也很有用。

通过粘贴和反序列化执行代码

其中最有趣的发现之一是从剪贴板粘贴后可以利用的反序列化问题。

在.NET框架中,对象可以序列化并存储在剪贴板的数据对象中、这些对象可以在粘贴时自动反序列化。与任何其他反序列化问题类似,当攻击者在剪贴板中创建任意对象时,可以利用这一点。虽然无法找到将任意对象远程存储到剪贴板的方法,但这对于破坏沙箱环境仍然有用(沙箱环境中无法执行直接命令但允许剪贴板对象通过)。当受影响的.NET应用程序以更高的权限运行时,权限升级也可能是另一种途径,但是在没有限制的情况下,可能还有其他更简单的技术可以在本地执行此操作。

技术细节

数据对象类使用BinaryFormatter反序列化某些剪贴板对象。

以下格式通过System.Windows.DataFormats,System.Windows.Forms.DataFormats受到影响:

CommaSeparatedValue,Dib,Dif,Locale(有被影响的潜在可能),PenData,Riff,Serializable,StringFormat,SymbolicLink,Tiff,WaveAudio

这些与以下格式名称相同:

Csv,DeviceIndependentBitmap,DataInterchangeFormat,Locale(可能),PenData,RiffAudio,WindowsForms10PersistentObject,System.String,SymbolicLink,TaggedImageFileFormat,WaveAudio

这已作为插件添加到ysoserial.net项目:
https ://github.com/pwntester/ysoserial.net/blob/master/ysoserial/Plugins/ClipboardPlugin.cs
因此可以存储有效负载使用以下命令进入剪贴板:

ysoserial.exe -p剪贴板-c calc -F System.String

受影响对象

除了从剪贴板读取特殊对象的应用程序之外,任何使用文本框、密码框或RichTextBox的WPF应用程序[也会受到影响。

下列应用程序易受攻击:

  • PowerShell ISE
  • Visual Studio(右上角快速启动)
  • net - 修补[6](单击编辑菜单或粘贴在文本框中)
  • LINQPad - 修补[7]

建议

由于微软已将此作为预期行为接受,因此在处理剪贴板中的数据对象时,将由底层应用程序使用未受影响的数据格式(如文本、Rtf、Tiff或位图)来确保它们不会受到攻击。在使用沙箱环境时,建议不允许剪贴板访问或将其限制为文本对象。从剪贴板粘贴代码执行相关的风险应该基于这样一个事实,即攻击者可能首先需要执行一些代码,以便在剪贴板中存储任意对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值