[FUG-BR] bug do telnetd
Patrick Tracanelli
eksffa em freebsdbrasil.com.br
Sexta Março 6 12:56:57 BRT 2009
JOAO H S L M SILVA escreveu:
> ae pessoal
>
> li em algum lugar um comentario que esse bug do telnet era tipo
> remoto, ou quase remoto alguma coisa assim e que dava pra explorarcom
> 2 linhas de codigo
Exatamente isso. O bug é semi-remote. Sim voce explora com 2 linhas de
codigo em biblioteca dinamicamente carregavel.
> li e reli o advisory e nao entendi o problema
> alguem pode explicar? pergunto por curiosidade, gosto do assunto,
> gostaria de entender na pratica como o bug funciona
1 - Voce escreve sua biblioteca que faz o que voce quiser, inclusive
executar comandos.
2 - Voce "da um jeito" dessa biblioteca estar dentro do servidor remoto.
Esse é a parte do "semi-remoto/semi-local" pois voce tem q por algo no
servidor. Seja via FTP, via sftp, como usuario local, ou via upload de
php ou ainda com injection de PHP (o que é bem facil hj em dia).
3 - Ai vem o bug. O Telnet export variaveis de ambiente, voce vai
destruir uma variavel que voce sabe que o programa login (que é o
processo evocado pelo telnetd pra autenticar o usuario) usa, e colocar
outro valor nessa variavel de ambiente. Resultado o login vai carregar o
que voce mandar, nesse caso uma biblioteca dinamica.
4 - Voce manda abrir a sessão, o ldd vai ver a variavel que tem que
carregar ao executar do login, e vai carregar essa variavel, que por sua
vez faz o que voce quer. Esse é o lado remoto. Portanto depende de lado
local e lado remoto, dai semi-remote/fully-local pois localmente o cara
pode dar telnet na propria maquina via lo0.
5 - Ahh mais o bug é no inetd, o telnetd pelo inetd roda como root, bla
bla bla: errado, se fosse xinetd, ou tcpserver, como root ou como
carlotajoaquina, o login tem as seguintes permissoes:
-r-sr-xr-x 1 root wheel 19996
Ou seja, suidbit pra root. Entao sua lib quando carregada pelo login que
é dinamico:
% ldd /usr/bin/login
/usr/bin/login:
libutil.so.5 => /lib/libutil.so.5 (0x2807e000)
libpam.so.3 => /usr/lib/libpam.so.3 (0x2808a000)
libbsm.so.1 => /usr/lib/libbsm.so.1 (0x28091000)
libc.so.6 => /lib/libc.so.6 (0x280a0000)
... sera sempre como root.
--
Patrick Tracanelli
FreeBSD Brasil LTDA.
Tel.: (31) 3516-0800
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"
Mais detalhes sobre a lista de discussão freebsd