
scripts de prueba de concepto para 2 RCE no autenticados en Samba (CVE-2026-4408 & CVE-2026-4480) y escalada de privilegios local en TelnetD (CVE-2026-28372)
Este repositorio contiene scripts de prueba de concepto para las vulnerabilidades presentadas en la charla "Olvidados pero no desaparecidos: RCE no autenticados y LPE en servicios Linux heredados" de Black Hat USA 2026 y DEF CON 34.
Escalada de privilegios local en TelnetD: Los atacantes sin privilegios pueden explotar la función de variables de entorno de TelnetD para obtener un shell con privilegios de root. Por diseño y según su RFC, el protocolo Telnet permite a sus clientes establecer variables de entorno para la sesión de shell. Esta característica fue mal diseñada desde una perspectiva de seguridad. El servicio permitía a clientes no autenticados establecer variables de entorno para el propio proceso telnetd y para todos sus subprocesos. Uno de sus subprocesos es /usr/bin/login. El establecimiento de variables de entorno como cliente telnet remoto nos permitió lanzar /usr/bin/login con la variable de entorno "CREDENTIALS_DIRECTORY". Esto hace que el proceso de login busque un archivo llamado "login.noauth" en el directorio especificado por "CREDENTIALS_DIRECTORY". Si el archivo contiene la cadena "yes", el proceso de login omite la autenticación y proporciona un shell para el cliente que se ejecuta como el usuario que el cliente especificó. Puede ser cualquier usuario, incluso root.
Ejecución remota de código no autenticada en Samba a través de SAMR: Samba depende de comandos de shell establecidos en su archivo de configuración (smb.conf) para llevar a cabo diversas operaciones solicitadas por sus clientes, como agregar un nuevo recurso compartido de red, agregar una nueva impresora, y más. Algunos de esos comandos de shell reciben parámetros basados en la solicitud enviada por el cliente. La mayoría de las veces, los parámetros se sanean y los caracteres especiales se escapan antes de ejecutar el comando para prevenir la inyección de shell.
La vulnerabilidad reside en la función "check_password_complexity" que formatea una cadena especificada por el cliente en un comando de shell sin sanearla. La vulnerabilidad requiere dos condiciones:
Para configurar el daemon RPC de samba (samba-dcerpcd) para usar NCACN_IP_TCP, debe lanzarse como un servicio de sistema separado y no como parte del servicio principal de samba. Además, la opción "rpc start on demand helpers" en el archivo de configuración debe establecerse en "no".
Ejecución remota de código no autenticada en Samba a través de SPOOLSS: la función generic_job_submit también formatea una cadena controlada por el cliente en un comando de shell sin sanearla. La combinación de las siguientes configuraciones resulta en esta vulnerabilidad:
Un cliente no autenticado puede solicitar acceso a un recurso compartido de impresora a través de la interfaz RPC spoolss. Luego, se puede enviar un trabajo de impresión mediante la función RpcStartDocPrinter. El nombre del documento especificado en la solicitud se usará como el nombre del trabajo formateado en el parámetro "%J" del comando. Llamar a hRpcEndDocPrinter activa generic_job_submit, que ejecutará el "print command" de la configuración después de formatear el nombre del trabajo sin saneamiento. El código enviado por el exploit se ejecutará como el usuario "nobody". Si la configuración "valid users = @users" se agrega a la sección del recurso compartido de impresora, la explotación sigue funcionando, pero requiere credenciales válidas. Si se realizó la autenticación, el código enviado por el exploit se ejecutará como el usuario autenticado y no como "nobody".