.NET远程代码执行(MS14-026/CVE-2014-1806)

今天看到小猪在safekey的群里面说关注了很久了一个.NET 远程代码执行漏洞exp公开了,于是马上去exploit-db找了下找到http://www.exploit-db.com/exploits/35280/

这是微软在14年5月就已经发布补丁的一个漏洞,也就是MS14-026/CVE-2014-1806,漏洞作者 James Forshaw ,详细可以看微软的 https://technet.microsoft.com/library/security/ms14-026 安全公告,漏洞原因是 .NET Remoting服务在处理数据格式时设置的TypeFilterLevel一种方式存在漏洞,当发送构造的特定数据过去时,可以执行任意代码。
受影响的版本为
Microsoft .NET Framework 1.1 Service Pack 1
Microsoft .NET Framework 2.0 Service Pack 2
Microsoft .NET Framework 3.5
Microsoft .NET Framework 3.5.1
Microsoft .NET Framework 4
Microsoft .NET Framework 4.5

Microsoft .NET Framework 4.5.1

不过不必惊慌,正如微软自己说的一样,.NET Remoting用的并不多,我在搜索引擎找了下使用它开发的第三方程序也没看到什么,所以我在微博说影响并不大,但是部分大型企业还是有使用的,可能这样说大家还不是很明白,那就简单科普下.NET Remoting是干嘛的和什么情况下存在漏洞,
.NET Remoting Services 是一种对外提供服务的方式,你可以像理解webserver一样理解它,不一样的地方是.NET Remoting Services 是基于C/S架构。
利用条件:
1.只有在使用以上列出受影响版本开发的.NET Remoting服务才存在此漏洞。
2.知道.NET Remoting服务的服务名和监听的端口。
OK,知道这些以后,可以去翻一些开源程序,或者反编译一些程序,看看代码里面有没有使用.NET Remoting。
下面我们来测试下这个漏洞,在作者提供的exp里面就包含了利用exp和测试server程序,由于我的端口12345被占用了,所以我稍稍改了下server程序,把端口改成了8002,然后运行在虚拟机里面,测试如下图。
1

.NET Remoting Services 的一个简单示例 http://blog.csdn.net/kissqw/article/details/18605655

编译好的测试服务程序和exp下载地址:http://pan.baidu.com/s/1ntr68AX

[via@cnseay]