[Owasp-brazilian] Firewalls de Aplicação WEB, Idiomas e Expressões Regulares - Condições de Bypass

Rodrigo Montoro(Sp0oKeR) spooker at gmail.com
Fri Nov 20 11:48:01 EST 2009


Aloha ,

2009/11/20 Nash Leon <nashleon at yahoo.com.br>:
> Olá, Spooker!
>
> Voce pode criar uma regra específica para acentos.. mas o ponto
> em questão é que você não pode usar o conceito de 'listas' em
> expressão regular ou mesmo posix(quando o WAF usa pcre, por exemplo).

Dai concordo que não se pode criar lista mas não vejo isso como um
problema . Vale frisar que não testamos nada alem do que voce tem
testado e não sabemos da normalização do charset em outros WAF . Na
verdade não que voce esteja certo ou errado, so quero saber exato como
eles estão preparados =)

>
> E quando eu falo Bypass, é que por padrão costuma-se usar isso
> (por exemplo, lista [A-Za-z0-9]). Você usando outra coisa na regex
> pra detectar cai naquilo que eu falei de 'saber o que está fazendo'
> e não estará usando a lista pensando que nela está coberto todo
> o alfabeto brasileiro inclusive com acentos.
>

Eu concordo que o saber o que esta fazendo é fundamental. Quem
trabalha mais com pentest podera ver faciltmente por exemplo em
IDS/IPS quantos não tem target based configurado corretamente e voce
pode simplesmente fazer o evasion usando o fragrouter . Mas eu ainda
vejo como erro de config e não bypass, mas isso é meu modo de pensar
=)

> Se voce analisar todas as regras padrões do modsecurity que eh um WAF
> público, verá que elas detectam muito bem SQL Injection, por exemplo,
> mas não estão preparadas para o cenário que eu citei, logo, no meu
> modo de ver, o conjunto de regras 'default' do modsecurity
> permitem um bypass(Posso estar sendo presuncoso, mas acho que isso se aplica a todos os outros WAFs estrangeiros que trabalham em modo negativo tambem).
>

Bom , eu sou daqueles que acho que o modo negativo vulgo
blacklist/signature base sempre serão falhos eles pegam arroz com
feijão .
Por isso saliento o modo positivo ou whitelist =) .

>
> E como analista de teste de intrusão, eu "imagino" que esse tipo de bypass é muito útil, já como analista de segurança, eu acho que não devemos negligenciar esse problema.
>

Concordo se voce tiver os vetores como:

1-) Aplicação que normaliza os caracteres acentuados (não sei exato
como isso é utilizado em larga escala) e isso é algo FORA de um padrão
de melhores praticas .
2-) Estiver usando em blacklist. Usar regras padrões não atende TODOS
os ambientes na sua totalidade ainda mais com caracteristicas
especificas .
3-) Deixa-lo rodando em piloto automatico , ou seja, usando tudo
padrão e achar que os WAF tem que conhecer todas as estruturas
possiveis no mundo .

Voce já viu firewall vir configurado pra sua rede? Ou voce vai la e configura ?

Mas certamente é um otimo ponto pra pentester bem como algo que os
analistas de segurança que administram/instalam WAF se atentar  =) .
Coisas configuradas erroneadas é o que mais se tem por ai.

Como a empresa tem uma aplicação especifica visto isso não ser um
padrão mandatoriamente ele tem que criar algo especifico se for usar
negative model .

> Então, o foco, o X do problema reportado não é todas as regex,
> mas a utilização de listas, posix e bibliotecas sem suporte
> ao nosso idioma. Que sao coisas 'transparentes' para os estrangeiros
> e quem nao manja de regex. Entao, o analista criar a lista [A-Z]
> e pensa que ali dentro estao todas as letras, inclusive as com
> acentos e ai ele comete um erro.
>
> Quanto a imagem que voce colou, não vi nela a possibilidade
> de colocar letras acentuadas(ÀÉÍÔÜ). Eu acho que esse WAF pode
> estar vulnerável, hein!:).. Note que se o desenvolver nao for
> flexivel ao ponto de disponibilizar a possibilidade de criar
> as regex na mao, fica dificil se proteger no cenario citado.
>

Bom, como citei so tive a tela aqui, nao tive como testar mas acredito
que aquilo entre como caracteres ascii normalmente . O que acho é
quando eu usar whitelist, quando vier algo acentuado o sistema entende
como NÃO ascii e bloqueara no caso .  Mas no caso estamos falando de
modelo negativo .

Criar regex no modsec, imperva isso eu sei que dá =)

Mas certamente voce levantou uma bola bem legal sobre esse possivel
problema, so precisamos testar em diferentes WAF para ver exato onde
funciona ou não  .

>
> Um cordial abraço,
>

Absss!

> Nash Leon.
>
> --- Em qui, 19/11/09, Rodrigo Montoro(Sp0oKeR) <spooker at gmail.com> escreveu:
>
>> De: Rodrigo Montoro(Sp0oKeR) <spooker at gmail.com>
>> Assunto: Re: [Owasp-brazilian] Firewalls de Aplicação WEB, Idiomas e Expressões Regulares - Condições de Bypass
>> Para: "Nash Leon" <nashleon at yahoo.com.br>
>> Cc: owasp-brazilian at lists.owasp.org
>> Data: Quinta-feira, 19 de Novembro de 2009, 19:54
>> 2009/11/19 Nash Leon <nashleon at yahoo.com.br>:
>> > Como vai, Rodrigo?
>>
>> Eu to beleza, thread colocando a cuca pra pensar =)
>>
>> E ai ?
>>
>> >
>> > Sim, PCRE pega o assento, mas não na lista [A-Z] e
>> nem na posix
>> > [[:alpha:]]. Que é o que o artigo tenta mostrar.
>> >
>> > Mas se você fizer uma simples regex
>> "^S([A-Z]|É)LECT$" ela(pcre) já
>> > pegaria o SÉLECT, sem problemas.. isso pode ser
>> testado no PoC
>> > que segue o artigo.
>> >
>>
>> Se voce usar o \W+ ja cobre geral
>>
>>   re> /\W+/
>> data> Ẽ
>>  0: \xe1\xba\xbc
>> data> Ê
>>  0: \xc3\x8a
>> data> É
>>  0: \xc3\x89
>> data> é
>>  0: \xc3\xa9
>> data> È
>>  0: \xc3\x88
>> data> E
>> No match
>> data> e
>> No match
>> data>
>>
>>
>> > Mas o ponto chave é que o analista terá que criar as
>> expressões
>> > na mão para incluir É,Ë,Ê e etc.. para isso ele
>> precisa saber
>> > que a aplicação faz essa mudança de letras com
>> acentos
>> > para sem acentos.
>> >
>>
>> Acho que um bom regex mataria o problema . Bem sincero vou
>> usar uma
>> frase do Martin Roesch do Snort "Se o atacante sabe mais da
>> sua rede
>> que seu IDS ele vai bypassa-lo" ou seja, se a pessoa que
>> administra a
>> maquina não conhece suas aplicações, nao sabe como tudo
>> funciona ,
>> como vai colocar a maquina para trabalhar corretamente ?
>>
>>
>> > Chamo isso de "abordagem manual" no email que enviei.
>> > Agora, quantos analistas estrangeiros sabem desse
>> problema?
>> > Qual WAF estrangeiro vem por padrão com essas letras
>> acentuadas
>> > nas regras de regex?
>> >
>> > - Esse é o X da questão.E na prática, se voce for
>> ver nenhum
>> > WAF vem protegido contra isso... :)
>> >
>>
>> Mas ai que está a questão, bypass no meu ponto de vista
>> é algo que NÃO
>> tem como ser detectado e isso citado tem como ser detectado
>> , tanto
>> com um regex como ainda estou verificando com o profile da
>> imperva,
>> sei  que no profile da pra separar caracteres
>> especiais como essa
>> imagem que tenho aqui
>> http://img97.imageshack.us/img97/9922/impervaprofile.png
>> e habilitar
>> somente o que pode e dai usando conceito de whitelist
>>
>> No caso isso pra mim é desconhecimento da sua
>> rede/aplicação pois não
>> da pra usar tudo de fabrica =) .
>>
>> Como citei quando tiver uma caixa quero ver a
>> normalização do Imperva
>> na part do Charset que comentei nos primeiros emails mas
>> infelizmente
>> não to com caixas demos aqui .
>>
>> > Espero ter ficado claro agora.
>> >
>>
>> Bem sincero acho legal isso como um melhores praticas e pra
>> alertas
>> pessoal de websec na hora de configurar seu WAF mas como
>> citei pra mim
>> isso não é BYPASS e sim erro de configuração. Não sei
>> a opiniao do
>> restante da lista =)
>>
>> >
>> > Um abraço,
>> >
>>
>> Abs!!!
>>
>> Sp0oKeR
>> > Nash Leon.
>
>
>
>
>      ____________________________________________________________________________________
> Veja quais são os assuntos do momento no Yahoo! +Buscados
> http://br.maisbuscados.yahoo.com
>



-- 
Rodrigo Montoro (Sp0oKeR)
http://www.spooker.com.br
http://www.twitter.com/spookerlabs
http://www.linkedin.com/in/spooker


More information about the Owasp-brazilian mailing list