Ваши вопросы по уязвимостям.

Discussion in 'Уязвимости' started by darky, 4 Aug 2007.

Thread Status:
Not open for further replies.
  1. Ded MustD!e

    Ded MustD!e Banned

    Joined:
    23 Aug 2007
    Messages:
    392
    Likes Received:
    694
    Reputations:
    405
    что за форум? название, версия.
     
  2. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    форум самописный
    в личку с кину адрис
     
  3. Ded MustD!e

    Ded MustD!e Banned

    Joined:
    23 Aug 2007
    Messages:
    392
    Likes Received:
    694
    Reputations:
    405
    у меня не получилось авторизоваться с теми данными, которые ты кинул.
     
  4. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    ник тот я впример дал, а на самом деле ник uplol.ru
    Пароль: 00 или 0000000 разницы нет
     
    #8264 SeNaP, 31 Jul 2009
    Last edited: 31 Jul 2009
  5. Ded MustD!e

    Ded MustD!e Banned

    Joined:
    23 Aug 2007
    Messages:
    392
    Likes Received:
    694
    Reputations:
    405
    потестил, ну вобщем-то ничего ты с этого не поимеешь, просто почему-то криво обрабатываются пароли состоящие из "0", ни с какими другими символами больше не прокатывает.
     
  6. cr0w

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

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    SeNaP

    Скорее всего там пхп?

    Примерчик:
    Code:
    <?php 
    if ( $_GET[pass] == '00' ) echo "В первом случае пароль верный. ";
    if ( $_GET[pass] === '00' ) echo "И во втором случае тоже верный!";
    ?>
    Если передать скрипту в параметре 'pass' любое колличество нулей, то пароль в первом if'e всегда будет верный. Во втором - только при двух нулях.

    Т.е. в том скрипте некорректно реализована проверка верности пароля. А о разнице между '==' и '===' стоит почитать в док-ии по PHP. :)
     
    #8266 cr0w, 31 Jul 2009
    Last edited: 31 Jul 2009
  7. 2la.painkiller

    2la.painkiller New Member

    Joined:
    22 May 2008
    Messages:
    26
    Likes Received:
    4
    Reputations:
    -10
    Что ты даешь, там нету способов внедрения шела.

    Ответ остается открытым:

    Как залить шел на mybb имея админку??? все мозга уничтожил (((
     
  8. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Да, один ноль не прокатыват, токое ощущение, что просто его скрипт не замечает, просит ввести пароль.
    Code:
    PHP не проверяет равенство типов при двойном равно (==), автоматически приводя их к строковому.
    Для верного сравнения данных разных типов применяется тройное равно (===).
    Неправильное использование двойного равно, например, в авторизации, == может обернуться уязвимостью.
    
    PHP код:
     $aaa = 123456; 
         
        if( '123456' ==  $aaa ){echo '<br>ok!';}else{echo '<br>no.';} 
        if( '123456' === $aaa ){echo '<br>ok!';}else{echo '<br>no.';}  
    
    
    ok!
    no.
    (C)Alekt
    
    Что то я вообще запутался
     
    #8268 SeNaP, 31 Jul 2009
    Last edited: 31 Jul 2009
  9. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    Code:
    if ($_GET[pass] == 00)
    В этом случае $_GET[pass] при водится к строковому типу и сравнивается с 00, которое тоже приводится к строковому типу
    Code:
    '00' равно 00
    00 равно 00
    
    Code:
    if ($_GET[pass] === 00)
    В этом случае $_GET[pass] сравнивается с 00 c учётом типов
    Code:
    '00' не равно 00
    00 равно 00
    
    0 - универсальный => использование символов отличных от нуля даёт нормальный результат
     
    #8269 FireFenix, 31 Jul 2009
    Last edited: 31 Jul 2009
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Code:
    Что ты даешь, там нету способов внедрения шела.
    
    например так:
    Code:
    https://forum.antichat.ru/showpost.php?p=565927&postcount=8
    
    и причем здесь обязательно именно админка. Переведи для начала что такое "Remote Code Execution"
     
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Code:
    http://moikabriz.ru/uslugi.php?uslugi=5
    Инклюдит файл
    Code:
    http://moikabriz.ru/uslugi/uslugi5
    Т.е. в скрипте что-то типа
    PHP:
    <?php
    include('uslugi/uslugi'.$_GET['id']);
    ?>
    Соответственно
    Code:
    http://moikabriz.ru/uslugi.php?uslugi=/../uslugi5
    должен заинклюдить тот же
    Code:
    http://moikabriz.ru/uslugi/uslugi5
    , но нет - пишет нот фаунд.
    Code:
    http://moikabriz.ru/uslugi.php?uslugi=/../../index.php
    должен заинклюдить индекс, но опять нот фаунд.
     
  12. cr0w

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

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    SeNaP

    Вот еще интересный пример:
    Code:
    <?php 
    if ( '000' == '000000' ) echo "Первое условие верно. ";
    if ( '00789' == '000000000789' ) echo "Второе условие верно. ";
    if ( "00abc" == "0000abc" ) echo "Третье условие верно";
    ?>
    Выведет
    Т.е. при сравнении оператором '==' строк, состоящих из чисел, предваряемых нулями, нули эти, получается, "отбрасываются". Почему так - я пока не знаю, видимо какая-то фича пхп, постараюсь разобраться в этом.
     
    1 person likes this.
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    а на
    Code:
    http://moikabriz.ru/uslugi.php?uslugi=../../../../../../../../../../../../../../etc/passwd
    
    пишет
    Code:
    Operation not permitted
    
     
  14. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    мод секурити или типа того... Бесполезно...
     
  15. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    *зачеркнуто*
    Для начала определись что есть папка, и что есть файл.
    Ты пытаешься подняться выше несуществующего файла
    */зачеркнуто*
    соре ошибочка.
    Ты пытаешься подняться выше несуществующего пути. вот.
     
    #8275 geezer.code, 31 Jul 2009
    Last edited: 31 Jul 2009
  16. Kakoytoxaker

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

    Joined:
    18 Feb 2008
    Messages:
    1,038
    Likes Received:
    1,139
    Reputations:
    350
    Строки, при таком сравнении, приводятся интерпритатором к числам, если в них вначале есть числа. Остальное отбрасывается. Посмотри вот так:
    if ( 4 == '4abc' ) echo "условие верно. ";

    Тоесть по сути ты сравниваешь
    1. 0 с 0
    2. 789 и 789
    3. Нет чисел, тоесть 2 разных строки

    Ну а "0" это не совсем число, при таком сравнении. Это у пыха "особенный символ" :)
    if ( 0 == null ) echo "условие верно. ";
    if ( 4 == '0004abc' ) echo "условие верно. ";
     
  17. cr0w

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

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    jokester

    Интерпретатор переводит строку к числу, когда у нее первый символ - цифра, если второй операнд - числовой (как в твоем примере). Но я в тех примерах сравнивал по две строки, а не числа со строками.
    К тому же, если интерпретатор просто переводит эти строки в числа, то с нулем в начале, он по логике вещей скорее должен был бы считать их восьмеричными числами, но это не так: 0789 - не восьмеричное число.

    По сути, скорее всего пхп сравнивает:
    '' c '' (пустые строки)
    '789' и '789' (именно строки, а не числа)
    и строки '00abc' и '0000abc' - при наличии букв нули в строках не убираются, даже если вставить цифры:
    Code:
    <?php 
    if ( '0012a' == '000012a' ) echo "Условие верно";
    ?>
    Результатом условия будет false.

    add: впрочем, это пока просто мои предоложения - как будет время покопаюсь в сорсах php по этому поводу.
     
    #8277 cr0w, 31 Jul 2009
    Last edited: 31 Jul 2009
    2 people like this.
  18. Kakoytoxaker

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

    Joined:
    18 Feb 2008
    Messages:
    1,038
    Likes Received:
    1,139
    Reputations:
    350
    cr0w

    Он так-же приведёт строки к числу если обе строки состоят только из цифр.

    add/

    Так что вроде всё логично. Это строки, т.к. буквы присутствуют:
    Code:
    if ( '0012a' == '000012a' ) echo "Условие верно";
    А вот это уже числа:
    if ( 4 == '4abc' ) // сдесь т.к. один из операндов число
    if ( '000' == '000000' ) // ну а тут
    if ( '00789' == '000000000789' ) // всё числа

    PS Спасибо Qwazar, направил на путь истиный :)
     
    #8278 Kakoytoxaker, 31 Jul 2009
    Last edited: 31 Jul 2009
    1 person likes this.
  19. HAXTA4OK

    HAXTA4OK Super Moderator
    Staff Member

    Joined:
    15 Mar 2009
    Messages:
    946
    Likes Received:
    838
    Reputations:
    605
    раз удалил тему мою кто то напишу тут

    есть XSS спер куки...тока спер я PHPSESSID а с логином и пассом куки не сперлось

    что это мне дает? можно ли что нибудь с этим сделать?
     
    _________________________
  20. cr0w

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

    Joined:
    11 Sep 2008
    Messages:
    92
    Likes Received:
    141
    Reputations:
    33
    jokester

    В целом, ты тут прав.

    Хотя насчет "логичности" таких преобразований типов можно было бы поспорить. Но в документации такое поведение, вобщем-то, кое-как зафиксировано, т.ч. ресерчить тут вроде как и нечего.
     
    #8280 cr0w, 31 Jul 2009
    Last edited: 31 Jul 2009
Thread Status:
Not open for further replies.