За последние 24 часа нас посетили 15614 программистов и 1557 роботов. Сейчас ищут 849 программистов ...

как закрыть дырку (Open directory Found)

Тема в разделе "Прочие вопросы по PHP", создана пользователем suu, 8 окт 2008.

  1. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    нашел сканер дыр
    запустил ссылку и вот что выдал

    Open directory Found: http://****.***.ru/index.php?i=10/a/
    Open file Found: http://****.***ru/index.php?i=10/g.php

    как бороться с /a/

    вот так я пишу в менюшках
    PHP:
    1. <?index.php?i='.GET(i).'&.................
    вот мой фильтр
    PHP:
    1. <?function GET($GET)
    2. {
    3.     $GET="$_GET[$GET]";
    4.     $GETs=basename($GET);
    5.     $GETss=htmlspecialchars($GETs);
    6.     $GETsss=preg_replace('/[^0-9]/', '', $GETss);
    7.     return $GETsss;
    8. }
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. function getint(){
    3.         foreach($_GET as $k=>$v){
    4.                 $_GET[$k]=(int)$v;
    5.         }
    6. }
    7.  
    8. getint();
    9.  
    10. /* Дальше пошел скрипт */
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    С этим борятся на уровне htaccess
     
  4. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Kreker
    Бугага, ога, deny from all - и никакие запросы не страшны :lol:
     
  5. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    ну тогда вообще проще снести сайт :)
     
  6. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Хм. А я смутно понял в чём проблема.
    Это что? $i содержит имя файла для функции include?
     
  7. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    нет все писано через switch
    switch (GET(i))
    {
    case 1: .......
    case 10 ......
    }
     
  8. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    default: что?
     
  9. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    SWITCH (GET(i))
    {
    CASE '1': include ("main/news.php"); BREAK;
    ......................
    CASE '63': include ("library/library_db/libary.php"); BREAK;
    default: include ("welcome.php"); BREAK;
    }
     
  10. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    suu
    Если ни в одном из инклудов у Вас не используется знчение из ГЕТа напрямую, то и уязвимости подобной нет.
    Что у Вас в case '10' ?
     
  11. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    CASE '10': include ("main/account.php"); BREAK;

    З.Ы. насчет ГЕТ-инклудов, уже читал что лучше не делать.
     
  12. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    suu
    Ну тогда я лично не вижу никакой уязвимости =/
    Что говорит о том, что либо я дурак, либо сканер :)
     
  13. В принципе, это не взаимоисключающие условия...
     
  14. suu

    suu Активный пользователь

    С нами с:
    5 окт 2008
    Сообщения:
    8
    Симпатии:
    0
    тогда етих фильтров хватит от инекции?
     
  15. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Достаточно только последнего. А можно вобще без фильтра. Ничего не изменится.