¿Cómo ejecuto una aplicación java que quiere enlazar a los puertos 80 y 443?

0

Bien, entonces enciendo mi computadora portátil, inicio sesión en mi cuenta regular user y procedo a abrir / ejecutar una aplicación de proxy HTTP basada en Java llamada burp a través de Terminal.app . Se ejecuta normalmente pero se niega a vincularse con los puertos 80:http & %código%. Supongo que el error está relacionado con los privilegios, así que yo ...

user@MacBook-Pro:~$login
login:root
Password:********

..successfuly inicie sesión como 443:https usuario y ..

root@MacBook-Pro:~#open /Users/user/Downloads/burpsuite_free_v1.6.01.jar

... devuelve el siguiente error:

LSOpenURLsWithRole() failed with error -10810 for the file
/Users/user/Downloads/burpsuite_free_v1.6.01.jar.'

Sin embargo, no observo este error al iniciar sesión como un root regular; ni observo este error al iniciar sesión como user a través de la interfaz gráfica de usuario de OS X.

No estoy seguro de por qué root rechaza el enlace a los puertos burp & %código%. Si es simplemente un error debido a los permisos ( 80:http ) de propiedad y ( 443:https ); Habría pensado que tener chown access debía trascender esas limitaciones.

Sobre la base de esta pregunta y respuesta puedo ver qué chmod & root media. Recibo este error porque el archivo LSOpenURLsWithRole() no es una aplicación ejecutable.

¿Pero cómo soluciono esto y lo hago funcionar en mi máquina?

    
pregunta tjt263 26.08.2015 - 13:22

1 respuesta

1

Normalmente, no puede ejecutar un archivo .jar (que es un archivo de Java ARchive ) usando El comando open en OS X. No es un archivo ejecutable, no le da al sistema ninguna pista sobre cómo debería ejecutarse normalmente, por lo que open le está dando el error LSOpenURLsWithRole() que ve arriba.

Primero, necesitarás instalar Java en tu Mac. La forma más fácil de hacerlo es abrir una ventana Terminal.app y escribir:

java -version

Si eso devuelve una versión de java como esta:

IanCsiMac:~ |ruby-2.1.5|
> java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

has terminado. Java está listo para ser utilizado. Si Java no está presente en su sistema, al ejecutar ese comando aparecerá una ventana que le preguntará si desea instalarlo. Sigue las indicaciones y cuando hayas terminado, java -version te mostrará algo como lo que ves arriba. La versión puede ser diferente, pero el comando ahora funcionará.

Ahora necesita ejecutar su archivo .jar usando el comando java . Debe proporcionar tres opciones al comando java para que esto funcione:

  1. La opción -jar que le dice a java que está ejecutando el contenido de un archivo Java ARchive;
  2. Una opción de memoria para la máquina virtual Java en la forma -Xmx1024m ; y finalmente
  3. La ruta al archivo .jar en el disco.

Para su descarga, todo se verá así:

java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar

Eso iniciará el programa SIN EMBARGO, aún no podrá enlazarse a los puertos 80 y 443. Esos puertos están protegidos. Los puertos < 1024 en cualquier máquina Mac OS X solo pueden ser procesos iniciados como root .

La forma correcta de ejecutar programas como root es usar comando sudo , no a login como root usuario. Esto proporciona un nivel de control e indirección a tus acciones para que no hagas algo accidentalmente tonto como rm -rf / sin que te pregunte si estás seguro de que quieres hacer algo tan tonto.

Por lo tanto, la forma final de su comando será:

sudo java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar

Se le pedirá su contraseña y, si no hay nada más vinculado a los puertos 80 y 443, su aplicación se iniciará y estará escuchando en esos puertos.

Si falla porque no puede enlazar a 80 y 443, deberás averiguar qué hay allí y apagarlo. Puedes usar el lsof command para resolver esto .

Para el puerto 80, la llamada es:

sudo lsof -iTCP:80 -sTCP:LISTEN -n -P

Para 443 es:

sudo lsof -iTCP:443 -sTCP:LISTEN -n -P

La salida de ese comando, suponiendo que algo está escuchando en el puerto, tendrá un aspecto similar al siguiente:

> sudo lsof -iTCP:80 -sTCP:LISTEN -n -P
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx    50 root    9u  IPv6 0x8978b255ac4ef0b7      0t0  TCP *:80 (LISTEN)

Como puede ver, tengo un proceso llamado nginx escucha el puerto 80. Tiene un ID de proceso 50.

Puedo matar ese proceso con:

sudo pkill nginx

Eso no necesariamente garantiza que no lo intentará y volverá, pero la mejor manera de explicarlo es como una pregunta completamente separada en el sitio.

    
respondido por el Ian C. 22.09.2015 - 05:57

Lea otras preguntas en las etiquetas