IIS4\\IIS5 CGI环境块伪造0day漏洞

大约14年前发现一直到现在的0day

是IIS4\IIS5的漏洞,对应操作系统是winnt和win2000系统,微软不再支持这些软件,他们的策略想淘汰这些系统,11年报告后微软决定不再修补。算是很严重的漏洞,只是影响的软件现在使用率相对比较低,但总量也不少。

具体漏洞详细信息如下:

IIS加载CGI环境块伪造漏洞

危害等级:高危

危害类型:缓冲区溢出、远程执行代码、信息泄露

影响平台:Winnt\win2000

影响软件:IIS4、IIS5

基本情况:

IIS4、IIS5加载CGI,处理环境块的时候,错误的把“\n”字符用“\x00”替换,导致可以伪造任意环境块。IIS加载CGI的时候,把 自己的请求加上“HTTP_”前缀加入环境变量和本地环境变量区分,通过利用”\n”替换成”\0”的漏洞就可以把这些前缀去掉,从而任意伪造环境块变 量。攻击者可以在http头里提交“a=b\nPATH_TRANSLATED:var”使得IIS加载CGI的时候环境块变量成为”HTTP_a=b” 和“PATH_TRANSLATED=var”,成功伪造环境块“PATH_TRANSLATED=var”,让php.exe执行脚本文件“var”, 从而执行任意命令。

CGI加载有两种方式,一种本身就是编译成.exe的可执行程序,这些常见的有一些计数器、一些网站自己开发的应用程序、还有一些应用比较广的 WEB应用程序等。还有一种是通用脚本映射到.EXE解释执行(映射到.dll的是isapi,不受影响),这些常见的有PHP\PERL脚本等。

具体危害看具体CGI程序对环境块的处理方式,可能会导致的部分结果:

1、 CGI处理本地环境变量的时候缓冲溢出,一些CGI处理本地环境变量的时候,因为这些变量一般不能设置或者本来是可信的,没有考虑缓冲大小检查等。

2、 有些环境块变量影响一些CGI的处理逻辑、信任关系等。

3、 加载dll或者加载进程时因为伪造的path环境变量加载攻击者的程序。

验证步骤:

1、win2000+iis5配置.php映射到php.exe(即cgi方式,如果影射到.dll是isapi方式,没有此漏洞)

2、请求发送:

“GET /a.php HTTP/1.1\r\na=b\nPATH_TRANSLATED

:c:\windows\win.ini\r\nHOST:192.168.0.1\r\n\r\n”

3、iis将返回win.ini内容。

4、也可以利用iis的日志文件写出php命令,利用此漏洞让php.exe调用iis日志文件执行系统命令等。

漏洞利用程序:

http://hi.baidu.com/yuange1975/item/cefea0c63156032f46d5c050

4月1号的愚人节版本:

http://seclists.org/fulldisclosure/2012/Apr/13

usage:

iisexp411 127.0.0.1 /AprilFools'Day.php PATH_TRANSLATED c:\windows\win.ini

-------------------------------

原文发布于微信公众号 - 安恒信息(DBAPP2013)

原文发表时间:2014-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏米扑专栏

Linux free命令:buffer 与 cache 区别

74790
来自专栏CRPER折腾记

Docker折腾记: (2)基于docker-compose构建yapi容器

这篇主要是用docker-compose来编排我们第一篇的内容,顺便谈谈docekr-compose的好处

18930
来自专栏李家的小酒馆

struts2面试整理

struts2的工作原理 客户端发送请求 经过一系列的过滤器 FilterDispatcher通过ActionMapper来决定这个REquest需要调用的Ac...

20400
来自专栏Java编程技术

Springboot之spring-boot模块

spring-boot模块提供了一些特性用来支持springboot中其他模块,这些特性包含如下:

34920
来自专栏测试开发架构之路

JMeter测试工具.jmx文件详解

摘要:了解.jmx文件格式类型,对jmeter二次开发与拓展有很大的帮助,当然也可以利用python对其进行一些处理(生成一些测试用例,对jmx文件进行 ”增删...

34440
来自专栏漫漫全栈路

Python开发环境—— jupyter Notebook 安装使用

这篇说一下 Linux 下配置一个 Python 的 jupyter Notebook并可以外网访问进行开发的方法,这样就可以随时轻松的使用 jupyter N...

619110
来自专栏我的博客

linux基本命令集锦

1. Cat命令 使用权限:所有使用者  使用方式:cat [-AbeEnstTuv] [–help] [–version] fileName  说明...

36170
来自专栏salesforce零基础学习

salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取。salesforce 零基础学习(二十四)...

26010
来自专栏柠檬先生

jquery 操作ajax 相关方法

jQuery.get()   使用一个HTTP GET 请求从服务器加载数据。   jQuery.get(url [,data] [,success(dat...

328100
来自专栏封碎

android监听文件和目录的创建删除移动等事件 博客分类: Android AndroidLinuxOSAccess

      android.os下的FileObserver类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于linux的inotify。 F...

22230

扫码关注云+社区

领取腾讯云代金券