现在的杀毒软件都会杀掉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

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

个人发现的createProcess调用漏洞的更多相关文章

  1. 梦想还需有,因它必实现——发现最新版iOS漏洞,OverSky团队专访

    梦想还需有,因它必实现——发现最新版iOS漏洞,OverSky团队专访    “成功了!”,随着一句欢呼声在阿里巴巴西溪园区传出,Cydia的图标出现在一部iOS9.3.4的iPhone6上并成功运行 ...

  2. 【转载】详解CreateProcess调用内核创建进程的过程

    原文:详解CreateProcess调用内核创建进程的过程 昨天同学接到了腾讯的电面,有一题问到了CreateProcess创建进程的具体实现过程,他答得不怎么好吧应该是, 为了以防万一,也为了深入学 ...

  3. 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象

    发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...

  4. 谷歌开发人员在现代Web浏览器中发现严重跨域漏洞

    Google谷歌研究人员在现代网络浏览器中发现了一个严重漏洞,该漏洞可能允许您访问的网站从您登录同一浏览器的其他网站窃取您的在线帐户的敏感内容. 由Google谷歌Chrome的开发者支持者Jake发 ...

  5. 详解CreateProcess调用内核创建进程的过程

    昨天同学接到了腾讯的电面,有一题问到了CreateProcess创建进程的具体实现过程,他答得不怎么好吧应该是, 为了以防万一,也为了深入学习一下,今天我翻阅了好多资料,整理了一下,写篇博客,也算是加 ...

  6. SpringCloud使用Nacos服务发现实现远程调用

    本文使用SpringCloud结合Nacos服务发现,Feign远程调用做一个简单的Demo. 1 Nacos 关于Nacos之前写了两篇文章关于SpringBoot对它的使用,感兴趣可以查看一下. ...

  7. 【Azure 应用服务】Azure Web App的服务(基于Windows 操作系统部署)在被安全漏洞扫描时发现了TCP timestamps漏洞

    问题背景 什么是TCP timestamps(TCP 时间戳)? The remote host implements TCP Timestamps, as defined by RFC1323 (h ...

  8. c++ CreateProcess调用dos命令

    // test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include &l ...

  9. 四十三:漏洞发现-WEB应用之漏洞探针类型利用修复

    已知CMS 如常见的dedecms,discuz,wordpress等源码结构,这种一般采用非框架开发,但是也有少部分采用框架类开发,针对此类源码程序的安全监测, 我们要利用公开的漏洞进行测试,如不存 ...

随机推荐

  1. 经典C面试真题精讲

    第一章 灵魂--指针 101. p++ 请分析下述代码的输出结果 int main() { char* p1 = "China"; char* p2, * p3; p2 = (); ...

  2. 原子操作类AtomicInteger详解

    为什么需要AtomicInteger原子操作类?对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的.num++解析为num=num+1,明显,这个操作不 ...

  3. springboot 接口返回数据时 net.sf.json.JSONNull["empty"]) 异常

    @ResetController返回数据时出现异常 Could not write JSON: Object is null; nested exception is com.fasterxml.ja ...

  4. 构造函数与普通函数关于“new”操作符

    javascript中构造函数与普通函数的区别还有关于“new”操作符的一些原理   有一种创建对象的方法叫做工厂模式,例如: 1 function person(name,age){ 2 var o ...

  5. fastclick源码分析

    https://www.cnblogs.com/diver-blogs/p/5657323.html  地址 fastclick.js源码解读分析 阅读优秀的js插件和库源码,可以加深我们对web开发 ...

  6. Web测试注意事项

    参考文章:http://www.51testing.com/html/07/n-3723307.html 总结下遇到的web测试的时候需要注意的地方: 页面分辨率:  通常是计算机的默认分辨率,但是还 ...

  7. Python文件的I/o

    文章内容参考了教程:http://www.runoob.com/python/python-basic-syntax.html#commentform Python 文件I/O 本章只讲述所有基本的的 ...

  8. 005-C3P0连接池配置文件模板

    文件名必须为:c3p0-config.xml 一般放在src目录下面 <?xml version="1.0" encoding="UTF-8"?> ...

  9. c#随便写写 数据层和表现层,队列执行

    base.xxx() 调用父类的方法

  10. Derby的jar说明

    Derby的jar说明 Derby的下载后,解压发现lib中有很多jar包,下面说明一下每个jar包的用途: 引擎库 derby.jar是引擎库,必须的 For embedded databases. ...