谨防.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或位图)来确保它们不会受到攻击。在使用沙箱环境时,建议不允许剪贴板访问或将其限制为文本对象。从剪贴板粘贴代码执行相关的风险应该基于这样一个事实,即攻击者可能首先需要执行一些代码,以便在剪贴板中存储任意对象。

你可能感兴趣的:(谨防.NET方法的反序列化+通过粘贴执行代码)