0 votos

¿Cómo puedo ejecutar una aplicación java que quiere enlazar con los puertos 80 y 443?

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

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

iniciar sesión con éxito como el root 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 cuando me conecto como un usuario normal user Tampoco observo este error cuando se inicia la sesión como root a través de la interfaz gráfica de usuario de OS X.

No estoy seguro de por qué burp rechaza la vinculación con los puertos 80:http & 443:https . Si es simplemente un error debido a ( chown ) y ( chmod ) permisos; habría pensado que tener root El acceso se suponía que iba a trascender esas limitaciones.

Basado en esta pregunta y respuesta Puedo ver lo que el LSOpenURLsWithRole() & error -10810 medio. Estoy recibiendo este error porque el .jar no es una aplicación ejecutable.

Pero, ¿cómo puedo arreglar esto y hacer que funcione en mi máquina?

1voto

shsteimer Puntos 8749

Normalmente, no se puede ejecutar un .jar (que es un Archivo Java ARchive ) utilizando el open en OS X. No es un archivo ejecutable, no da al sistema ninguna pista sobre cómo debe ejecutarse normalmente, por lo que open es darle la LSOpenURLsWithRole() error que se ve arriba.

En primer lugar, tendrás que instalar Java en tu Mac. La forma más fácil de hacerlo es abrir un Terminal.app ventana y el tipo:

java -version

Si eso devuelve una versión 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)

Ya está. Java está listo para ser utilizado. Si java no está presente en tu sistema, al ejecutar ese comando aparecerá una ventana preguntando si quieres instalarlo. Sigue las indicaciones y cuando termines java -version le mostrará algo como lo que ve arriba. La versión puede ser diferente, pero el comando ahora funcionará.

Ahora tienes que ejecutar tu .jar utilizando el archivo java de mando. Es necesario proporcionar tres opciones al comando java para que esto funcione:

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

Para su descarga todo se verá así:

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

Esto iniciará el programa, aunque no podrá enlazar con los puertos 80 y 443. Esos son puertos protegidos. Los puertos <1024 en cualquier máquina Mac OS X sólo pueden ser vinculados a procesos iniciados como root .

La forma correcta de ejecutar los programas como root es utilizar el comando sudo no a login como el root usuario. Esto proporciona un nivel de control e indirección a sus acciones para que no haga algo accidentalmente tonto como rm -rf / sin que te pregunte si estás seguro de querer hacer semejante tontería.

Así, 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, suponiendo que no haya 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 enlazarse a 80 y 443, tendrás que averiguar qué está enlazado allí ya y cerrarlo. Puedes usar el comando comando lsof 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, asumiendo que algo está escuchando en el puerto, se verá algo así:

> 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 puedes ver, tengo un proceso llamado nginx escuchando el puerto 80. Tiene el ID de proceso 50.

Puedo matar ese proceso con:

sudo pkill nginx

Eso no garantiza necesariamente que no intente volver, pero la forma de tratar esto de forma completa y exhaustiva es mejor que se plantee como una pregunta totalmente independiente en el sitio web.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X