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 desde stdin (FD: 0
) e imprimirá la salida en stdout y stderr (FDs 1
y 2
). Por lo tanto, el atacante no podrá interactuar con la shell.
Una forma de solucionar esto es suponer que cuando el servidor se inició, creó el número de FD 3
(para escuchar) y que luego, tu conexión estará en el número de FD 4
. Por lo tanto, es posible utilizar la llamada al sistema 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 posible contactar la shell una vez que se ejecute.
Ejemplo de exploit desde aquí:
Socat & pty
Tenga en cuenta que socat ya transfiere stdin
y stdout
al socket. Sin embargo, el modo pty
incluye caracteres DELETE. Por lo tanto, si envía un \x7f
(DELETE
), borrará el carácter anterior de su exploit.
Para evitar esto, el carácter de escape \x16
debe ser antepuesto a cualquier \x7f
enviado.
Aquí puedes encontrar un ejemplo de este comportamiento.
Última actualización