1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#
# This script was written by H D Moore <hdmoore@digitaldefense.net>
# See the Nessus Scripts License for details
#
#
# Improved by John Lampe to see if XEXCH is an allowed verb
if(description)
{
script_id(11889);
script_bugtraq_id(8838);
if(defined_func("script_xref"))script_xref(name:"IAVA", value:"2003-A-0031");
if(defined_func("script_xref"))script_xref(name:"IAVA", value:"2003-a-0016");
script_cve_id("CVE-2003-0714");
script_version("$Revision: 1.11 $");
name["english"] = "Exchange XEXCH50 Remote Buffer Overflow";
script_name(english:name["english"]);
desc["english"] =
"This system appears to be running a version of the Microsoft Exchange
SMTP service that is vulnerable to a flaw in the XEXCH50 extended verb.
This flaw can be used to completely crash Exchange 5.5 as well as execute
arbitrary code on Exchange 2000.
Solution : See http://www.microsoft.com/technet/security/bulletin/MS03-046.mspx
Risk factor : High";
script_description(english:desc["english"]);
summary["english"] = "Tests to see if authentication is required for the XEXCH50 command";
script_summary(english:summary["english"]);
script_category(ACT_GATHER_INFO);
script_copyright(english:"This script is Copyright (C) 2003 Digital Defense Inc.");
family["english"] = "SMTP problems";
family["francais"] = "Problmes SMTP";
script_family(english:family["english"], francais:family["francais"]);
script_dependencies("smtpserver_detect.nasl");
script_exclude_keys("SMTP/wrapped");
script_require_ports("Services/smtp", 25);
exit(0);
}
include("smtp_func.inc");
port = get_kb_item("Services/smtp");
if(!port) port = 25;
if (get_kb_item('SMTP/'+port+'/broken')) exit(0);
if(! get_port_state(port)) exit(0);
soc = open_sock_tcp(port);
if(! soc) exit(0);
greeting = smtp_recv_banner(socket:soc);
if(debug) display("GREETING: ", greeting, "\n");
# look for the exchange banner, removing this may get us through some proxies
if (! egrep(string:greeting, pattern:"microsoft", icase:TRUE)) exit(0);
send(socket:soc, data:string("EHLO X\r\n"));
ok = smtp_recv_line(socket:soc);
if (! ok) exit(0);
if(debug) display("HELO: ", ok, "\n");
if("XEXCH50" >!< ok)exit(0);
send(socket:soc, data:string("MAIL FROM: Administrator\r\n"));
ok = smtp_recv_line(socket:soc);
if (! ok) exit(0);
if(debug) display("MAIL: ", ok, "\n");
send(socket:soc, data:string("RCPT TO: Administrator\r\n"));
ok = smtp_recv_line(socket:soc);
if (! ok) exit(0);
if(debug) display("RCPT: ", ok, "\n");
send(socket:soc, data:string("XEXCH50 2 2\r\n"));
ok = smtp_recv_line(socket:soc);
if (! ok) exit(0);
if(debug) display("XEXCH50: ", ok, "\n");
if (egrep(string:ok, pattern:"^354 Send binary")) security_hole(port:port);
close(soc);
|