elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  Ejecutar comandos desde las reglas de Nginx
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar comandos desde las reglas de Nginx  (Leído 13,052 veces)
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #10 en: 6 Mayo 2015, 23:46 pm »

Pues a mi me funciona en mi consola. ¿Sera open_basedir? ¿O quizas tu SELinux?


En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #11 en: 7 Mayo 2015, 01:17 am »

Pues no, aplico todos los cambios, reinicio el servidor (es centos 7) y nada, el script me dice que el id es apache y es el httpd el que está ejecutando el script en php, nginx lo único que hace es hacer de reverse proxy nada mas porque la configuración para interactuar con scripts dinámicos es mas complejo, generalmente debes usar servicios paralelos con sockets de comunicación, al final nginx nunca ejecuta finalmente el script sino el servicio de cgi, en ese caso supongo que httpd hace lo mismo pero de manera mas ordenada, nativa y automatizada, por eso mejor dejé ambos instalados.

open_basedir puede se eh, lo revisaré ahora mismo aunque por defecto debería poderse.


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #12 en: 7 Mayo 2015, 01:21 am »

¿No te lanza ningun error? Revisa que tengas configurado PHP para lanzar errors. error_reporting y display_errors.
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #13 en: 7 Mayo 2015, 02:03 am »

Código:
[root@localhost ~]# tail -f /var/log/httpd/error_log
sh: /var/ban/403.sh: Permission denied
/bin/bash: /var/ban/403.sh: Permission denied
sudo: unable to open audit system: Permission denied
sudo: unable to open audit system: Permission denied

En orden sería:
Código
  1. system('/var/ban/403.sh');
  2. # sh: /var/ban/403.sh: Permission denied
  3.  
  4. system('/bin/bash /var/ban/403.sh');
  5. # /bin/bash: /var/ban/403.sh: Permission denied
  6.  
  7. system('sudo /var/ban/403.sh');
  8. # sudo: unable to open audit system: Permission denied
  9.  
  10. system('sudo /bin/bash /var/ban/403.sh');
  11. # sudo: unable to open audit system: Permission denied

Definitivamente el sudoers no funciona :( , el script en php corre con permisos de "apache" y el sudoers está habilitado para ejecutar cualquier cosa sin contraseña con sudo y nada. Cuando resulte bien dejo habilitado solo los scripts necesarios.
« Última modificación: 7 Mayo 2015, 02:06 am por WHK » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #14 en: 7 Mayo 2015, 02:14 am »

Bueno ya busqué por algunos blogs y definitivamente el problema es el selinux tal como decías.

Intenté hacerle un bypass como se recomendaba en algunos lados pero sin éxito:
Código:
User_Alias WWW=apache
Cmnd_Alias WEBCMDS=/bin/bash /var/ban/403.sh
WWW ALL=NOPASSWD: WEBCMDS

Ahora... entiendo que por todos lados está muy restringido que un script via http se ejecute como root desde el mismo servidor hasta los sistemas de protección del mismo sistema operativo, por lo cual podría decirse que no debería hacerlo, pero entonces como lo hago si necesito que dependiendo de ciertas solicitudes http se generen acciones inmediatas a bajo nivel como cambiar la configuración de balanceos de carga, baneos por firewall, etc, no me sirve crear un log y listo, necesito que el sistema sea proactivo y rwactivo, esto quiere decir que si existe una solicitud peligrosa el usuario quede baneado al instante y no esperar a que un daemon barra un log.

En ese caso que sería mas óptimo? crear un servicio que reciba comandos? porque al final igual de todas maneras el servicio web va a tener que gatillar acciones como root, asi que no entiendo como debería hacerse sin arriesgar la seguridad de todo el sistema, no quiero tener que deshabilitar selinux.

O será que esta es una excepción a la regla?

creo que tendré que ir replanteandome si hacer esto via nginx y apache o snort directamente, veré si snort tiene la capacidad de ejecutar cosas dependiendo de cada regla.
« Última modificación: 7 Mayo 2015, 02:30 am por WHK » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #15 en: 7 Mayo 2015, 02:30 am »

Bueno, es que SELinux tiene reglas mucho mas restrictivas. Siempre y cuando sepas lo que estas haciendo y entiendas las consecuencias no hay problema, claro que no siempre es posible prever todo. Yo diria que simplemente le des los permisos adecuados bajo SELinux, no veo razon por la cual no deba permitirte estando configurando propiamente.

Creo tambien que puedes pasar de Enforcing a Permissive con SELinux aunque yo creo que es preferible en enforcing sobre todo por lo que estas haciendo de configurar los contextos adecuadamente con SELinux.

Este comando cambia el type a uno que supuestamente permite apache lanzar el script:

Código
  1. sudo chcon -t httpd_sys_script_exec_t /var/ban/403.sh
« Última modificación: 7 Mayo 2015, 04:49 am por MinusFour » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #16 en: 7 Mayo 2015, 04:15 am »

Pues si, efectivamente deja ejecutar el script pero manteniendo los permisos de apache, los que se llaman con sudo siguen sin ejecutarse :(
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #17 en: 7 Mayo 2015, 04:21 am »

Pues si, efectivamente deja ejecutar el script pero manteniendo los permisos de apache, los que se llaman con sudo siguen sin ejecutarse :(

Porque no tienes el setuid puesto:

Código
  1. sudo chmod 4711 /var/ban/403.sh

Si quieres usar sudo en apache vas a necesitar agregar a las politicas el typo de /usr/sbin/sudo o donde quiera que este en centos. No intentes cambiar el tipo al binario de sudo.
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.606


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #18 en: 7 Mayo 2015, 04:41 am »

Bueno, para ir descartando puse selinux en modo permisivo y reinicié la maquina, ahora ejecuto:

Código:
[root@localhost ~]# su apache -s /bin/bash
bash-4.2$ id
uid=48(apache) gid=48(apache) grupos=48(apache) contexto=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
bash-4.2$ sudo id
uid=0(root) gid=0(root) grupos=0(root) contexto=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
bash-4.2$ exit
exit

Ahora si efectivamente el sudoers funciona perfectamente, pero el script en php no puede ejecutar el mismo comando a pesar de que tenga el mismo permiso. El log de errores dice:

Citar
sudo: sorry, you must have a tty to run sudo

Será que debo asignarle un bash al usuario apache dentro del /etc/passwd?
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Ejecutar comandos desde las reglas de Nginx
« Respuesta #19 en: 7 Mayo 2015, 04:45 am »

Pruebalo con shell_exec en lugar de system.
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
..Ejecutar comandos en la consola desde vb
Programación Visual Basic
MaLkAvIaN_NeT 5 7,289 Último mensaje 4 Octubre 2005, 04:52 am
por MaLkAvIaN_NeT
Ejecutar comandos cmd desde un Acceso Directo en Windows
Hacking
ikary 7 19,324 Último mensaje 12 Noviembre 2009, 21:06 pm
por Castg!
Ejecutar comandos desde lectura?
Hacking
EvilGoblin 1 3,306 Último mensaje 10 Febrero 2011, 19:27 pm
por Garfield07
Ejecutar programas en java desde la línea de comandos.
Java
binaryum 2 4,356 Último mensaje 8 Diciembre 2011, 14:40 pm
por [Case]
¿Como puedo ejecutar los comandos desde CMD?
Dudas Generales
underhoms 8 4,481 Último mensaje 16 Enero 2020, 05:23 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines