• 个人发现的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 ");

        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)EyeFoo3eyefoo.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

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

  • 相关阅读:
    ICommand接口
    Binding自动侦听
    WPF比较两个随机数大小写,利用MVVM思想实现
    从一个ListBox中的元素点击导入另一个ListBox元素中
    利用FluidMoveBehavior制作出手机通讯录平滑的效果
    从零开始学习Gradle之三---多项目构建
    用Gradle 构建你的android程序
    iPhone/iPad调整事件递交
    iOS8-Sampler
    iOS8-Sampler
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/6831046.html
Copyright © 2020-2023  润新知