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
sudo_inject — [Linux] Dos técnicas de escalada de privilegios que abusan del token de sudo | Kitploit
Herramientas/GitHubGitHub/nongiach/sudo_inject
Escalada de PrivilegiosExplotaciónPost-ExplotaciónForensia DigitalCTFAprendizaje y EducaciónRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Dos técnicas de escalada de privilegios que abusan del token de sudo

Ver Repositorio
730113hace 7 añosRevisado por Kitploit

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

[Linux] Escalada de privilegios inyectando procesos que poseen tokens de sudo

Inyectar procesos que tengan un token de sudo válido y activar nuestro propio token de sudo

Introducción

Todos hemos notado que a veces sudo no nos pide contraseña porque nos recuerda. ¿Cómo nos recuerda y cómo nos identifica? ¿Podemos falsificar nuestra identidad y convertirnos en root? Hasta donde sé, esta investigación aún no está documentada, pero avísame si lo está. De hecho, sudo crea un archivo para cada usuario de Linux en /var/run/sudo/ts/[username]. Estos archivos contienen autenticaciones exitosas y fallidas; luego sudo usa estos archivos para recordar todos los procesos autenticados. -- @chaignc

Este repositorio te proporciona:

  • Una forma de obtener privilegios de root abusando de los tokens de sudo (No te alegres demasiado, hay requisitos).
  • Una herramienta para forjar tokens de sudo para un proceso dado (write_sudo_token en ./extra_tools/).
  • Una herramienta para parsear tokens de sudo con fines forenses (read_sudo_token_forensic y read_sudo_token en ./extra_tools).
  • Una técnica para transformar cualquier escritura arbitraria de archivos como root en ejecución de código root estable.
  • Una pista para crear un exploit que no requiera ptrace ni que el proceso objetivo esté vivo.

Cómo explotar un sistema vulnerable

PD: ¡lee los requisitos!!

root@kitploit:~
$ sudo loquesea
[sudo] password for user:    # Presiona <ctrl>+c ya que no tienes la contraseña. # Esto crea tokens de sudo inválidos.
$ sh exploit.sh
.... espera 1 segundo
$ sudo -i # no se requiere contraseña :)
# id
uid=0(root) gid=0(root) groups=0(root)

Requisitos

  • Ptrace totalmente habilitado (/proc/sys/kernel/yama/ptrace_scope == 0).
  • El usuario actual debe tener un proceso vivo que posea un token de sudo válido con el mismo uid.
root@kitploit:~
El tiempo de espera de contraseña predeterminado es de 15 minutos. Entonces, si usas sudo dos veces en 15 minutos (900 segundos), no se te pedirá que escribas la contraseña del usuario nuevamente.

Advertencia

  • Solo con fines educativos, no lo uses en un sistema que no sea tuyo.
  • No está bien probado, así que no lo consideres estable.

¿Qué sucede detrás de escena?

exploit.sh inyecta todos los procesos de shell propiedad del usuario actual y usa su token de sudo para validar nuestro propio token de sudo. Es apenas 3 líneas de shell, échales un vistazo.

Caso de uso

Esto está lejos de ser una escalada de privilegios genérica sin requisitos, pero funciona; por ejemplo, si tienes un RCE y no tienes la contraseña del usuario, pero la víctima usa sudo, entonces puedes obtener root fácilmente robando su token.

¿Cómo simularlo en un laboratorio?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # No te preocupes, esto no es persistente tras reiniciar

Abre dos terminales:

  • uno para escribir sudo e ingresar la contraseña correcta (ejemplo: sudo ls).
  • otro para iniciar el exploit como se describió anteriormente.

Yendo más allá

exploit v2 crea una sh suid en /tmp/sh

Para aquellos con menos suerte con el exploit v1, prueben la v2

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

Forense, DFIR?

La impresión está por mejorar, pero cada intento de sudo de un proceso tiene una entrada en /var/run/sudo/ts/[username]. Además, estos archivos se almacenan en tmpfs (RAM); se podría escribir un plugin de volatility para parsear esta información y recopilar intentos de sudo.

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

Escritura arbitraria a root

Si tienes una escritura arbitraria, puedes crear un token de sudo para tu proceso actual y obtener ejecución de código como root. Revisa './write_sudo_token $$ > /var/run/sudo/ts/[username]' en extra_tools.

Tickets plateados de sudo

Una muy buena forma de crear una puerta trasera root secreta en servidores que rara vez se reinician. Aún no está hecho, pero revisa './write_sudo_token $$' en ./extra_tools

Por qué

Estaba buscando una forma de robar el token de sudo de procesos muertos, pero no parece posible porque están asociados por ((tiempo de inicio del proceso y id de sesión del proceso) o (tiempo de inicio de la tty y id de sesión de la tty)). El id de sesión (pid del proceso) se puede suplantar, pero el tiempo de inicio del proceso no es falsificable.

¿Cómo remediarlo?

  • Actualiza tu versión de sudo
  • Reduce el poder de ptrace, por ejemplo edita /etc/sysctl.conf con
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Enlaces

Parsing /proc/[pid]/stat

Sudo token struct

Linux based inter process code injection without ptrace

Moving a process to another terminal

https://www.linusakesson.net/programming/tty/


Por @chaignc #HexpressoTeam.

Descargar herramienta