Common Exploiting Problems
FDs en Explotación Remota
Al enviar un exploit a un servidor remoto que llama a system('/bin/sh')
por ejemplo, esto se ejecutará en el proceso del servidor, y /bin/sh
esperará entrada de stdin (FD: 0
) y mostrará la salida en stdout y stderr (FDs 1
y 2
). Por lo tanto, el atacante no podrá interactuar con el shell.
Una forma de solucionar esto es suponer que cuando el servidor se inició, creó el FD número 3
(para escuchar) y que luego, tu conexión estará en el FD número 4
. Por lo tanto, es posible usar la syscall dup2
para duplicar el stdin (FD 0) y el stdout (FD 1) en el FD 4 (el de la conexión del atacante) para que sea factible contactar con el shell una vez que se ejecute.
Ejemplo de exploit desde aquí:
Socat & pty
Ten en cuenta que socat ya transfiere stdin
y stdout
al socket. Sin embargo, el modo pty
incluye caracteres DELETE. Así que, si envías un \x7f
( DELETE
-) eliminará el carácter anterior de tu exploit.
Para eludir esto, el carácter de escape \x16
debe ser precedido a cualquier \x7f
enviado.
Aquí puedes encontrar un ejemplo de este comportamiento.
Last updated