felipe's blog

Exploração de race condition via procfs

Achei muito interessante um antigo post do StalkR's blog que fala de técnicas de exploração de race condition em file system, a que me chamou mais atenção foi a que utiliza procfs.

A exploração é feita através de um código que se re-executa usando /proc/self/exe (isto faz com que o dynamic-linker faça toda as relocações em load-time, mas também é uma abertura óbvia para race condition) e que também tem set-uid de root, baseado em uma falha encontrada no pulseaudio (CVE-2009-1894) por Tavis Ormandy e Julien Tinnes.

Sobreescrevendo chamadas de função com LD_PRELOAD

Nosso famoso dynamic-linker/loader `ld.so' fornece dentre vários recursos, um que nos permite carregar uma biblioteca dinâmica antes de qualquer outra de uma programa. E ele faz isso por meio da variável de ambiente LD_PRELOAD.

Backtracking control verbs com exemplos

Para quem não sabe, Perl 5.10 introduziu um novo recurso que permite controlar o backtracking realizado pela engine das expressões regulares. Isso dá um poder a mais quando se escreve uma regex. Demonstrarei abaixo alguns simples casos onde poderíamos lançar mão deste recurso através da lib. PCRE.

Vale lembrar que anteriormente já havia postado sobre um dos backtracking control verbs, o (*COMMIT), para quem ainda não viu: http://felipe.ath.cx/special-backtracking-control-verbs

CVE-2011-1002: Avahi Daemon Remote Denial of Service

Navegando por aí [1], acabei encontrando esse advisory: "CVE-2011-1002: Avahi Daemon Remote Denial of Service", procurei por detalhes e logo achei um texto a respeito, colocando até um link para um patch [2].

A descrição do CVE-2011-1002 é a seguinte:

avahi-core/socket.c in avahi-daemon in Avahi before 0.6.29 allows remote attackers to cause a denial of service (infinite loop) via an empty (1) IPv4 or (2) IPv6 UDP packet to port 5353. NOTE: this vulnerability exists because of an incorrect fix for CVE-2010-2244.

Para quem está curioso para testar esse bug localmente, é bem simples, basta enviar um pacote UDP NULL pro daemon do Avahi (porta 5353).

SQL injection no Oracle usando o tipo DATE via NLS_DATE_FORMAT

Seguindo a ideia passada no blog do Tom Kyte [1], é possível fazer sql injection via uma variável DATE no PL/SQL, isso por causa da possibilidade de alterar a formatação do tipo DATE, e isso pode ser feito tanto via ALTER SESSION, como via variável de ambiente.

Demonstrarei como poderíamos utilizar esse detalhe do Oracle (que não é um bug, mas uma falha na aplicação), para injetar SQL.