[shellcode] Reverse shell over reused socket
|
07-03-2014, 17h41
(Modification du message : 10-03-2014, 11h12 par ark.)
Message : #1
|
|
ark
![]() Psyckomodo! ![]() ![]() ![]() ![]() ![]() Messages : 1,033 Sujets : 48 Points: 317 Inscription : Sep 2011 |
[shellcode] Reverse shell over reused socket
Yop à tous,
Bon, alors je fais ce post pour deux raisons. La première, c'est que j'ai du code potentiellement intéressant à vous montrer, la deuxième c'est parce qu'il ne marche pas et que j'ai pas franchement idée de pourquoi... x) Donc voila, je m'explique. Un jour en CTF, il a fallut que je réutilise une socket déjà existante pour me faire spawn un reverse shell. Jusque la tout va bien, il n'y avait pas besoin d'ecrire un shellcode pour ce genre de cas puisqu'on avait déjà accès à un pseudo shell. Bref, le fait est que du coup je me suis dit que ça pourrait être pas mal d'avoir un shellcode qui retrouve la socket avec laquelle on est connectés afin de bind un reverse shell dessus, c'est plutot discret puisque la socket est ouverte de manière légitime. Pour commencer, imaginons un serveur basique en C, qui va nous servir pour les tests. Serveur simple qui va récupérer le buffer et va l'executer. Voici son code: Code C :
Après la compilation, pensez à passer un coup d'execstack sur le binaire. En effet, nous récupérons l'entrée utilisateur dans un buffer situé sur la stack, nous allons donc éxecuter du code sur la stack, il faut donc la rendre executable. Okay, maintenant qu'on a notre serveur, voici le code du shellcode : (j'éspère qu'il est suffisamment commenté) Code ASM :
Voila, voila. ![]() Bon, pour exec le tout, j'ai trouvé un tool (que je n'ai pas sur le pc depuis lequel je post, je vous le filerai plus tard) qui get le shellcode depuis un objdump du fichier compilé, et du coup je fais juste un : Code BASH :
EDIT: Voilà le code de du script getsc Code BASH :
Bien entendu ce, après avoir lancé le serveur sur le port 1024. Le problème de ce code, c'est que mon shell s'execute bien, mais je ne le récupère pas à la fin... Peut etre que le fait de bind les fds standard 0, 1 et 2 sur une socket n'est pas valide et du coup ne fonctionne pas, je ne sais pas trop... En tout cas si je vire les dup2() ca spawn bien un shell, mais coté serveur du coup, pas très utile xD Donc si vous avez une idée d'où ça peut venir, je suis preneur ! ![]() |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[shellcode] Reverse shell over reused socket - par Ark - 07-03-2014, 17h41
RE: [shellcode] Reverse shell over reused socket - par gruik - 07-03-2014, 18h11
RE: [shellcode] Reverse shell over reused socket - par Ark - 10-03-2014, 15h20
RE: [shellcode] Reverse shell over reused socket - par gruik - 10-03-2014, 16h47
RE: [shellcode] Reverse shell over reused socket - par Ark - 10-03-2014, 16h57
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
[C] Socket + envoie de commande | notfound | 27 | 11,764 |
26-04-2013, 20h41 Dernier message: Kiwazaru |
|
[C] Socket Client-Serveur -> Write() + Read() | sakiir | 7 | 3,363 |
18-03-2013, 07h19 Dernier message: sakiir |
|
NEED HELP / SOCKET;FILTRES XDR; RPC | notfound | 4 | 2,468 |
21-01-2013, 02h18 Dernier message: notfound |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)