zoukankan      html  css  js  c++  java
  • 个人发现的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

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

  • 相关阅读:
    winform 异步更新ui
    定时器的写法 winform
    延迟加载
    使用VS分析程序性能
    win7 C/C++,QT安装环境总结
    论文总结
    天舟一号
    硬盘 SMART 检测参数详解[转]
    碧桃花
    在C的头文件中定义的结构体,如何在cpp文件中引用
  • 原文地址:https://www.cnblogs.com/xiaojieshisilang/p/6831046.html
Copyright © 2011-2022 走看看