专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 信息/网络安全

个人发现的createProcess调用破绽

发布时间:2011-07-03 06:58:39 文章来源:www.iduyao.cn 采编人员:星星草
个人发现的createProcess调用漏洞

现在的杀毒软件都会杀掉c盘下的program.exe程序,所以某种意义上而言,这个漏洞算不上“漏洞”。

问题描述

眼睛护士版本:3.0.18.301存在createProcess调用漏洞。

详细说明

将精心构造的program.exe放置到C盘根目录下,运行眼睛护士,

 

右键桌面上的眼睛护士软件的矩形窗口,点击“立即休息”,可以看到C盘根目录下的program.exe程序被执行!

主要原因是:createprocess的第一个参数设为NULL,commandLine参数没有做“”包含,导致精心放置在系统目录下的 “C:\Program.exe”被加载执行。

漏洞证明

1.下载最新版本eyefoo

 

2.使用DEV-C++构造program程序,如下:

#include<stdio.h>

int main()

{

    printf("12345678910\n");

    getchar();

    getchar();

    return 0;

    }

将编译生成的program.exe程序扔到c盘根目录下

运行眼睛护士软件,可以看到桌面上有如下矩形窗口:

右键该矩形窗口,点击“立即休息”,可以看到C:\program.exe被执行。

3.漏洞调试

使用OllyDbg,附加到eyefoo进程

 

打开视图中的可执行模块,

在可执行模块中找到KERNEL32模块。

右键“显示名称”,在其中找到createProcessW调用,

 

在地址7674A510处右键设置断点。

此时,回到桌面上眼睛护士的矩形窗口,右键点击“立即休息”,可以看到OllyDbg调试eyefoo执行到了地址7674A510的位置,如下图所示:

 

 从图中右下角可以看到如下信息:

 

即使用的是UNICODE字符,用的是CreateProcessW调用。其调用的参数信息在图中右下角,如下所示:

可以看到:

createProcessW的第一个参数被设置为NULL,第二个参数传入“C:\Program Files (x86)\EyeFoo3\eyefoo.exe /break”时没有再加上一层双引号。其中/break表示的就是让眼睛护士立即休息。

此时,在OllyDbg程序中继续运行,可以看到,

 

即createProcess漏洞被触发,精心构造在C盘根目录下的program.exe程序被执行。

漏洞修复

修复方式有两种:

1.将CreateProcessW的第一个参数由NULL改为cmd。

2.将命令字符串放置在第2个参数时,应用双引号包括进来,如下:

“\“C:\\Program Files (x86)\\EyeFoo3\\eyefoo.exe /break\””

提交到乌云平台

http://www.wooyun.org/bugs/wooyun-2010-0147165/trace/0ca409b12cda790d1340e13f1a15ea49

利用上述链接,进行跟进漏洞审核过程。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: