IIS4\IIS5 CGI环境块伪造0day漏洞
大约14年前发现一直到现在的0day
是IIS4IIS5的漏洞,对应操作系统是winnt和win2000系统,微软不再支持这些软件,他们的策略想淘汰这些系统,11年报告后微软决定不再修补。算是很严重的漏洞,只是影响的软件现在使用率相对比较低,但总量也不少。
具体漏洞详细信息如下:
IIS加载CGI环境块伪造漏洞
危害等级:高危
危害类型:缓冲区溢出、远程执行代码、信息泄露
影响平台:Winntwin2000
影响软件:IIS4、IIS5
基本情况:
IIS4、IIS5加载CGI,处理环境块的时候,错误的把“n”字符用“x00”替换,导致可以伪造任意环境块。IIS加载CGI的时候,把自己的请求加上“HTTP_”前缀加入环境变量和本地环境变量区分,通过利用”n”替换成” ”的漏洞就可以把这些前缀去掉,从而任意伪造环境块变量。攻击者可以在http头里提交“a=bnPATH_TRANSLATED:var”使得IIS加载CGI的时候环境块变量成为”HTTP_a=b”和“PATH_TRANSLATED=var”,成功伪造环境块“PATH_TRANSLATED=var”,让php.exe执行脚本文件“var”,从而执行任意命令。
CGI加载有两种方式,一种本身就是编译成.exe的可执行程序,这些常见的有一些计数器、一些网站自己开发的应用程序、还有一些应用比较广的WEB应用程序等。还有一种是通用脚本映射到.EXE解释执行(映射到.dll的是isapi,不受影响),这些常见的有PHPPERL脚本等。
具体危害看具体CGI程序对环境块的处理方式,可能会导致的部分结果:
1、 CGI处理本地环境变量的时候缓冲溢出,一些CGI处理本地环境变量的时候,因为这些变量一般不能设置或者本来是可信的,
没有考虑缓冲大小检查等。
2、 有些环境块变量影响一些CGI的处理逻辑、信任关系等。
3、 加载dll或者加载进程时因为伪造的path环境变量加载攻击者的程序。
验证步骤:
1、win2000+iis5配置.php映射到php.exe(即cgi方式,如果影射到.dll是isapi方式,没有此漏洞)
2、请求发送:
“GET /a.php HTTP/1.1rna=bnPATH_TRANSLATED:c:windowswin.inirnHOST:192.168.0.1rnrn”
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:windowswin.ini
原文地址
http://hi.baidu.com/yuange1975/item/b2cc7141c22108e91e19bc2e
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PDF 的各种操作,我用 Python 来实现(附网站和操作指导)
- Python中map()函数用法
- 谈谈不同思路下造就的不同产品与公司形态
- OpenCV 处理中文路径、绘制中文文字的烦恼,这里通通帮你解决!
- 如何快速分析大型系统架构?
- Linux小技巧、文件查找、修改、读取
- 我在赏金计划中发现的RACE条件漏洞
- 哦!数组还能这么用,学到了!
- 【C++简明教程】随机数生成
- Pytest标记预期失败得测试用例@pytest.mark.xfail()
- IAT HOOK
- 形式化分析工具(六):HLPSL Tutorial
- 推荐一款技术人必备的接口测试神器:Apifox
- GO 文档笔记
- 魔改npm私有仓库 | Verdaccio教程