Common Exploiting Problems
FDs dans l'exploitation à distance
Lors de l'envoi d'une exploitation à un serveur distant qui appelle system('/bin/sh')
par exemple, cela sera exécuté dans le processus du serveur bien sûr, et /bin/sh
attendra une entrée de stdin (FD: 0
) et affichera la sortie dans stdout et stderr (FDs 1
et 2
). Ainsi, l'attaquant ne pourra pas interagir avec le shell.
Une façon de résoudre ce problème est de supposer que lorsque le serveur a démarré, il a créé le numéro de FD 3
(pour l'écoute) et que ensuite, votre connexion se fera sur le numéro de FD 4
. Par conséquent, il est possible d'utiliser l'appel système dup2
pour dupliquer le stdin (FD 0) et le stdout (FD 1) dans le FD 4 (celui de la connexion de l'attaquant) afin de pouvoir contacter le shell une fois qu'il est exécuté.
Exemple d'exploitation à partir d'ici:
Socat & pty
Notez que socat transfère déjà stdin
et stdout
vers le socket. Cependant, le mode pty
inclut les caractères DELETE. Ainsi, si vous envoyez un \x7f
(DELETE
-), cela supprimera le caractère précédent de votre exploit.
Pour contourner cela, le caractère d'échappement \x16
doit être ajouté avant tout envoi de \x7f
.
Vous pouvez trouver un exemple de ce comportement** ici.**
Last updated