ByPass WAF

Discussion in 'Уязвимости' started by Filipp, 15 Feb 2016.

  1. Filipp

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

    Joined:
    10 May 2015
    Messages:
    257
    Likes Received:
    57
    Reputations:
    31
    Доброго время суток, уважаемые античатовцы. Я вот тут наговнокодил мини-фильтрацию от скуль на PHP, хочу проверить насколько он дырявый.
    Господа скульщики, не поможете с этим делом?
    URL: http://185.86.76.169/
    Вроде с GET'ом все легко и просто, там достаточно поставить фильтрацию от всех символов кроме букв и цифр, но пока этого не сделал, оставил и в GET'e фильтрацию по словам. Самое интересное заключается в POST параметре, ибо излишния фильтрация будет во вред нормальной работе. Специально для этих дел формочку сверстал.
    Ну как то так.. Не верю что говорю это, но надо учиться защитаться от таких уродов как мы.
    P.S Я знаю что фильтрация на приходящие запросы не обьективна для фикса скули, но все же.
     
  2. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    с кодом было бы все проще)
     
    _________________________
  3. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    какой то неадекватный фильтр для post
    блокирует запрос "ololo ololo"

    но пропускает апостроф и выдает ошибку запроса
    'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1

    согласен с yarbabin, лучше бы исходники глянуть
     
    _________________________
  4. Filipp

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

    Joined:
    10 May 2015
    Messages:
    257
    Likes Received:
    57
    Reputations:
    31
    Спасибо, пофиксил для поста. Вот фильтрация для GET'а:
    PHP:
    preg_match('/(and|or|union|where|limit|group by|select|\'|\"|dbms|hex|substr|%|{|0x|,|version(|)information.shema|\/\*\*\/|\s)/i'$sql);
    А вот для POST'а:
    PHP:
    preg_match('/( union|\/\*\*\/|from\(| limit 0|group by|select\(|select |hex| substr|0x|information.schema|version\(|extractvalue|concat\(|..\/|\$\{|\s)/i'$param);
     
    #4 Filipp, 16 Feb 2016
    Last edited: 16 Feb 2016
  5. t0ma5

    t0ma5 Reservists Of Antichat

    Joined:
    10 Feb 2012
    Messages:
    829
    Likes Received:
    815
    Reputations:
    90
    не могу понять в какое место в запросе(post) данные попадают..
    апостроф также не фильтруется, большинство проверок обходятся через замену пробела на +
    /( union|\/\*\*\/|from\(| limit 0|group by|select\(|select |hex| substr|0x|information.schema|version\(|extractvalue|concat\(|..\/|\$\{|\s)/i

    +union from+ +limit+0 select+ concat+( и тд.
     
    _________________________
    Filipp likes this.
  6. Filipp

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

    Joined:
    10 May 2015
    Messages:
    257
    Likes Received:
    57
    Reputations:
    31
    Мда.. Ну, понятно.. Фильтрация дерьмо. Ладно, спасибо.. Придумаю что-то покруче.
     
  7. psihoz26

    psihoz26 Members of Antichat

    Joined:
    22 Nov 2010
    Messages:
    545
    Likes Received:
    159
    Reputations:
    324
    не изобретайте велосипед в пхп есть куча функций нормально отфильтрующих юзеринпут


    Code:
    URL: http://185.86.76.169/
    POST DATA: sql=qwe'||updatexml(1,EXPORT_SET(1,':',user(),'',2),1)||'
    
    а вот то-что MySQL из под root это вообще беда.
     
    #7 psihoz26, 16 Feb 2016
    Last edited: 16 Feb 2016
    Waki, Filipp and t0ma5 like this.
  8. yarbabin

    yarbabin HACKIN YO KUT

    Joined:
    21 Nov 2007
    Messages:
    1,663
    Likes Received:
    916
    Reputations:
    363
    и это не один вариант байпасса. в мускуле же миллион функций
     
    _________________________
    Filipp likes this.