Libssh2-Exploit
Objetivos
En este proyecto, pretendemos crear un exploit para una vulnerabilidad de lectura fuera de los límites en libssh2 descrita en CVE-2019-13115. Crear un servidor ssh malicioso para provocar que un cliente que se conecte a él se bloquee y comprobar si esto puede explotarse más para robar datos del cliente.
Poner en marcha el servidor OpenSSH
- Descarga y extrae openssh-8.1p1.tar.gz (para el servidor OpenSSH sin editar) u openssh-malicious.zip (para el servidor malicioso).
- Ve a la carpeta y ejecuta los siguientes comandos
- ./configure --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-audit=debug --disable-strip
- make
- sudo make install
- sudo /usr/local/sbin/sshd
Configuración de libssh2 y verificación del bloqueo
- Descarga y extrae libssh2-1.8.2.tar.gz en cualquier carpeta, por ejemplo /usr/src/libssh2-1.8.2
- Ejecuta los siguientes comandos
- ./configure
- make
- make install
- ./ssh2 127.0.0.1 <username> <password> Esto provocará un bloqueo
- Para compilar cualquier programa en C que use las librerías de libssh2, utiliza los siguientes comandos
- gcc -g -I /usr/src/libssh2-1.8.2/include -I /usr/src/libssh2-1.8.2/src -L /usr/local/lib ssh2.c -o ssh222 -lssh2
- Si durante la ejecución hay problemas con las librerías de enlace dinámico
a) asegúrate de que las librerías estén presentes en /usr/local/lib
b) LD_LIBRARY_PATH=/usr/local/lib
c) export LD_LIBRARY_PATH