Relay的端口转发问题

好几个朋友relay时遇到了各种各样端口转发等限制的相关问题,这里总结一下:

1.windows 445无法端口转发(默认被占用)

2.linux端口转发不了(各种配置问题)

3.linux转发后接收不到请求(环回地址的问题)

4.什么时候该用什么端口转发来实现?(试情况而定)

Linux

起因:默认情况下,SSH server只允许将远程端口转发绑定到 localhost(本地回环接口),即仅限于本地访问。

注:使用公钥连接的时候需要指定:PubkeyAuthentication yes

1.端口先转发到其他端口,再转发到本地

/etc/ssh/sshd_config:

AllowTcpForwarding yes (默认yes)

sudo systemctl restart sshd

先将目标的0.0.0.0:80转发到127.0.0.1:1111,然后再将127.0.0.1:1111通过ssh转发到客户端的80端口,这样就变相转发了所有的80端口流量到客户端。

这就相当于从192.168.1.1:80进来的流量直接转发到了我们本地

nohup socat TCP-LISTEN:80,fork,bind=0.0.0.0 TCP:localhost:1111 &
ssh -i ~/.ssh/id_rsa root@192.168.1.1 -R \*:1111:127.0.0.1:80

2.直接端口转发

/etc/ssh/sshd_config:

AllowTcpForwarding yes (默认yes)
GatewayPorts yes (默认no)

sudo systemctl restart sshd

当使用 SSH 进行端口转发时,SSH 可以允许将本地端口绑定到服务器的 IP 地址上。GatewayPorts 配置项决定了服务器如何处理这些端口绑定。

默认情况下,SSH 只允许将端口绑定到本地回环接口(localhost),即仅能由本地机器访问该端口。但如果启用 GatewayPorts,则允许将端口绑定到所有接口(例如,0.0.0.0),使得外部机器能够访问通过 SSH 转发的端口。

  • GatewayPorts 允许控制 SSH 端口转发绑定到哪些网络接口,是否可以从外部访问。(yes 允许端口绑定到所有接口,no(默认值)仅绑定到本地接口,clientspecified 允许客户端自定义。)
  • AllowTcpForwarding 控制 SSH 服务器是否允许 TCP 端口转发。(yes 允许所有端口转发,no 禁用所有端口转发,local 和 remote 可以限制端口转发的类型。)
ssh root@192.168.1.1 -R 0.0.0.0:8080:localhost:80

Windows

1.445

445(smb)默认在windows处于占用状态

(1)加载驱动,将445流量转发到8445

https://github.com/praetorian-inc/PortBender

PortBender redirect 445 8445

(2)将8445流量转发到攻击机445

rportfwd_local 8445 0.0.0.0 445

2.非445

比如webclient等http relay,需要用到web端口,这样就不存在445的占用问题,直接转发相应端口到本地就ok

rportfwd_local 8003 0.0.0.0 80
  • Created 2025-03-10 06:46
  • Published 2023-12-04 23:19
  • Updated 2025-03-10 06:53