multibyte exploit - o concept tambem passou despercebido por aqui

Started by rog, 18 de December , 2007, 12:04:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

rog

vou explicar o concept num modo esquematizado porque ele e muito extenso e variavel conformo o contexto

mas num modo geral se trata de um cliente (internet explorer) que vai enviar dados para um servidor web (apache)

1) o charset (jogo de caracteros)

existem um monte de jogo de caracteros que sao usados em informatica, esses jogos sao definido em tabelas onde tem os caracteros e as equivalenças em indice exadecimal :
- os derivados ISO que geralmente sao usados na europa
- utf-8 o tal de unicode que represente quase todos o caracteros
- big indian nunca nem usei - lol
e mais um monte

2) o content-type
para nao ter confusao entre o cliente e o servidor, vamos informar sobre o type de dados enviados
Content-Type: text/plain;
Content-Type: text/javascript;
Content-Type: java.lang.string
Content-Type: octet-stream
Content-Type: application/x-www-form-urlencoded
etc.....

3) o content transfer encoding
Content-Transfer-Encoding: 8bits
Content-Transfer-Encoding: 7bits
Content-Transfer-Encoding: quoted-printable
Content-Transfer-Encoding: base64
Content-Transfer-Encoding: gzip
Content-Transfer-Encoding: binary
etc......

4) o header
o header e a soma das informaçoes mandadas pelo programa antes do proprio conteudo
ele vai ajudar o programa que vai receber os dados a classificar eles num modo correto para tratar los no modo certo

5) esquema
vou tentar injetar um codigo meio malicioso no servidor mysql :
IE ==> apache ==> php ==> mysql

ou seja os dados vao ser tratados por 3 serviços diferentes, sendo que cada um tem um jeito proprio de lidar com os charsets.

a jogada seria entao de conseguir passar um aspa numa forma que o php nao reconhece e nao vai escapar, assim o bug no mysql seria guarantido

talvez algums servidores ainda sao vulneraveis a isso :
o caso do urlencoded vai mandar o aspa como %27, o apache repasse para php que mande para mysql. so que o mysql vai converter o %27 num aspa

entao a jogada do multibyte e de mandar o codigo malicioso num charset que nao vai ser convertido pelas funçoes qui filtram os dados antes de repassar o resultado filtrado para mysql num modo em que o mysql vai conveter aquele codigo na hora de inserir no banco de dados

+- isso

rog
realty.sys is corrupt :  reboot the universe (Y/N)

Be.Cool

Muito interessante esse conceito rog...
A parte do passou despercebido, você quer dizer pelo forum, ou pelo brasil?
Parabens. otimo conteudo ;)

A sabedoria está em suas mãos

Cloudy

Rog, além do %27, você tem outros exemplos? E como saber os equivalentes?

...by Cloudy
"You have to be trusted by the people tou lied to, so when they turn their back on you, you have the chance to the put the knife in." (Roger Waters)

...by Cloudy