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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Cambiar los "capabilities" de un proceso...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cambiar los "capabilities" de un proceso...  (Leído 2,523 veces)
>FedeX<

Desconectado Desconectado

Mensajes: 151



Ver Perfil WWW
Cambiar los "capabilities" de un proceso...
« en: 25 Enero 2011, 03:09 am »

Hola comunidad

Estaba programando un app para android, cuando descubro que no se pueden usar los puertos 0-1023 como puerto local. Entonces, busqué el modo de solucionarlo y me encontré con el modo de ejecutar un programa compilado en C++ como Superusuario... Muy feliz, creo un simple programa que nada mas hace:

Código
  1. syscall(SYS_capget,&header,&data);
  2. data.effective |= CAP_TO_MASK(CAP_NET_BIND_SERVICE);
  3. data.permitted |= CAP_TO_MASK(CAP_NET_BIND_SERVICE);
  4. data.inheritable = 0;
  5. syscall(SYS_capset,&header,&data);

Ejecutando SYS_capget despues del SYS_capset descubro que los capabilities siguen siendo 0. No hubo efecto alguno :S

Googleando me encuentro con un patch que supuestamente impedirá que un proceso cambie los capabilities de otro... Supongo que esa es la razón... porque los syscalls devuelven 0 (no error)...

La pregunta es, ¿existe algún otro método que permita cambiar los capabilities de otro proceso en linux?.

Gracias!


En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: Cambiar los "capabilities" de un proceso...
« Respuesta #1 en: 25 Enero 2011, 09:20 am »

Esto encaja mejor en Java o Programación.


Has probado pidiendo permiso de root para ejecutar la aplicación?

Algo como en el ejemplo de abajo:

Código
  1. try {
  2. // Preform su to get root privledges
  3. p = Runtime.getRuntime().exec("su");
  4.  
  5. // Attempt to write a file to a root-only
  6. DataOutputStream os = new DataOutputStream(p.getOutputStream());
  7. os.writeBytes("echo \"Do I have root?\" >/system/sd/temporary.txt\n");
  8.  
  9. // Close the terminal
  10. os.writeBytes("exit\n");
  11. os.flush();
  12. try {
  13. p.waitFor();
  14. if (p.exitValue() != 255) {
  15. // TODO Code to run on success
  16. toastMessage("root");
  17. }
  18. else {
  19. // TODO Code to run on unsuccessful
  20. toastMessage("not root");
  21. }
  22. } catch (InterruptedException e) {
  23. // TODO Code to run in interrupted exception
  24. toastMessage("not root");
  25. }
  26. } catch (IOException e) {
  27. // TODO Code to run in input/output exception
  28. toastMessage("not root");
  29. }
  30.  

Si todo sale bien debería salirte un mensaje pidiéndote permiso de root, como este:



El código lo saqué de aquí, pero hace unas semanas vi un articulo mas o menos sobre lo mismo, si lo encuentro modifico la respuesta y dejo el enlace.

PD: Encontré otro muy parecido pero no es el que dije: Android Root Source Code: Looking at the C-Skills


En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
>FedeX<

Desconectado Desconectado

Mensajes: 151



Ver Perfil WWW
Re: Cambiar los "capabilities" de un proceso...
« Respuesta #2 en: 25 Enero 2011, 17:21 pm »

Gracias por la atención

Ese código no eleva los privilegios del proceso actual (osea de mi app). Solo, crea otro proceso con privilegios root. No puedo ejecutar mis apps-java con esto y no me pareceria practico... Solo programas compilados o binarios... Entonces la idea era crear un programa que otorgue los privilegios que necesito al proceso donde corre mi app-java, para que pueda abrir los benditos puertos celestiales...

Acabo de descubrir que mi programa compilado, aun corriendo como "root", no tiene el capability CAP_SETPCAP que me permite hacer lo que quiero hacer, dar privilegios a otro proceso... Tiene todos los capabilities excepto esa (0xFFFFFEFF)...

No sé que hacer, aún siendo root no puedo!!! :S ¿Es que hay otro super-superusuario en linux?.. No entiendo para qué crean tanta seguridad inútil y molesta...

Gracias por la atención
Salu2
« Última modificación: 25 Enero 2011, 17:22 pm por >FedeX< » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
De donde puedo descargar utilidades: "Formas", "Estilos", "Motivos", D
Diseño Gráfico
Ad0nis 2 8,817 Último mensaje 2 Septiembre 2006, 15:48 pm
por Ad0nis
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 17,255 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
Ayuda como solucionar "ventana no responde" durante un proceso en Python
Scripting
Yeison.Eng 2 6,483 Último mensaje 20 Noviembre 2010, 21:49 pm
por Yeison.Eng
cambiar localización de un proceso
Análisis y Diseño de Malware
Borito30 5 4,125 Último mensaje 30 Noviembre 2016, 16:25 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines