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

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

  1. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    а вот про авто-регу с капчей я че-то не понял твоего кода...

    imagestring = 0...

    i do beleive, this is the fix for admin/core.php

    /*foreach ($_GET as $key => $value)
    $GLOBALS[$key] = $value;
    foreach ($_POST as $key => $value)
    $GLOBALS[$key] = $value;
    foreach ($_COOKIE as $key => $value)
    $GLOBALS[$key] = $value;*/

    extract($_GET, EXTR_SKIP);
    extract($_POST, EXTR_SKIP);

    я ниче не пропустил? :)
     
    #161 Yuna, 8 Aug 2009
    Last edited: 8 Aug 2009
  2. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Да вроде бы ничего, ну разве что может какие модули завязаные на старый код попадают :)
     
  3. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    а про авто-регу?

    а этот код он как делает: то-же самое что и старый, только если переменная уже есть - оно ее не тронет
     
  4. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Про авторегу не ко мне, я не вникал.

    З.Ы.
    А попадать могут те, которые на COOKIE завязаны, или переписывают переменные.
     
  5. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    на куки - то ваще надо быть психом =)))

    а вообще - надо с нцуля движок сделать :D
     
    1 person likes this.
  6. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    XSS вроде не было такой =)

    http://10.235.11.163/treker/makepoll.php?action=edit&pollid=2&returnto=%20%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E
     
    _________________________
  7. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    немного хитрая дырка- надо знать id опроса, а он кажеться в блоке опроса не светиться
     
  8. Rostov114

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

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    PHP:
    $b get_row_count("captcha""WHERE imagehash = ".sqlesc($_POST["imagehash"])." AND imagestring = ".sqlesc($_POST["imagestring"]));
    Проблема в том что sqlesc() экранирует только параметры отличные от numeric. И получаеться что мы просовываем SQL запрос вида:
    Code:
    SELECT * FROM captcha WHERE imagehash = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' AND imagestring = 0
    И MySQL цепляет запись из таблицы с imagehash равным 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' а т.к. там у нас 0 без '' MySQL по моему вообще не смотрит данное значение и возвращает результат в итоге $b у нас равна 1, что дает нам спокойно зарегестрироваться

    P.S. SQL запрос конечно не такой но лень было лезть и смотреть функцию get_row_count(), а так я забыл че в ней содержиться. xD
     
    #168 Rostov114, 9 Aug 2009
    Last edited: 9 Aug 2009
  9. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    Окей, тогда пофикшу принудительной кавычкацией.

    sqlesc($something, true);

    function sqlesc($value, $force = false) {
    // Stripslashes
    /*if (get_magic_quotes_gpc()) {
    $value = stripslashes($value);
    }*/
    // Quote if not a number or a numeric string
    if (!is_numeric($value) || $force) {
    $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
    }

    ваще какой-то бред сказанул...
     
    #169 Yuna, 9 Aug 2009
    Last edited: 9 Aug 2009
  10. Rostov114

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

    Joined:
    5 Sep 2008
    Messages:
    33
    Likes Received:
    10
    Reputations:
    5
    :p Что ты хочеш от сонного человека....
     
  11. Yuna

    Yuna Member

    Joined:
    22 Jun 2009
    Messages:
    41
    Likes Received:
    8
    Reputations:
    12
    Ну смотри - если imagehash = 32-а 0-ка то это выйдет 0 и imagestring = 0

    что выйдет SELECT COUNT(*) FROM captcha WHERE imagehash = 0 AND imagestring = 0; что ваще-то должно тоже вернуть 0 и $b должно тоже быть 0!
     
  12. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    XSS

    http://localhost/treker/testport.php?port=%3E%3Cscript%3Ealert(/Hi/)%3C/script%3E

    Code:
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    		$port = $_POST["port"];
    	else
    		$port = $_GET['port'];
    ................................................................
    <font color=darkgreen><br><center><b>IP: $ip is on the Port: $port good !</b></center><br></font>
    можно просто ввести скрипт в поле =) ибо и $port = $_POST["port"]; через POST посылается
     
    _________________________
    #172 HAXTA4OK, 9 Aug 2009
    Last edited: 9 Aug 2009
  13. Dflbv

    Dflbv New Member

    Joined:
    4 May 2009
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    скажите есть ли какие нибудь уязвимости в message.php?
     
  14. 1ce666

    1ce666 Member

    Joined:
    9 Dec 2008
    Messages:
    45
    Likes Received:
    79
    Reputations:
    -4
    PHP:
            $port $_POST["port"];
        else
            
    $port $_GET['port'];
    Заменяем на:
    PHP:
            $port = (int)$_POST["port"];
        else
            
    $port = (int)$_GET['port'];
     
    #174 1ce666, 12 Aug 2009
    Last edited: 12 Aug 2009
    4 people like this.
  15. maxiox

    maxiox New Member

    Joined:
    14 Mar 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    как оптимизировать етот запрос?
    17] => 7.104873 [SELECT COUNT(*) FROM torrents]
     
  16. 1ce666

    1ce666 Member

    Joined:
    9 Dec 2008
    Messages:
    45
    Likes Received:
    79
    Reputations:
    -4
    PHP:
    <input type=hidden name=returnto value=<?=$_GET["returnto"]?>>
    Заменяем на:
    PHP:
    <input type=hidden name=returnto value=<?=(int)$_GET["returnto"]?>>
    Подсказал HAXTA4OK :)
     
  17. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Эмм, а вам не кажется что в этом поле значением является не цифра, и такой фикс не катит?
     
    1 person likes this.
  18. 1ce666

    1ce666 Member

    Joined:
    9 Dec 2008
    Messages:
    45
    Likes Received:
    79
    Reputations:
    -4
    Ну я протестил и XSS небыло :rolleyes:
     
  19. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    что предложиш? я просто в пхп не силен на столько :) да вроде поставив int он вроде как все равно работает :)
     
    _________________________
  20. Qwazar

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

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    XSS то не проходит, но логику приложения вы нарушили, к примеру вот этот код никогда не выполнится, из-за вашего "фикса":
    PHP:
    if ($returnto == "main")
    header("Location: $DEFAULTBASEURL");
    Фиксить, когда значение является строкой, можно к примеру, так:
    Code:
    <input type=hidden name=returnto value="<?=htmlspecialchars($_GET["returnto"])?>">
     
    #180 Qwazar, 12 Aug 2009
    Last edited: 12 Aug 2009