好几个朋友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

History
- Created 2025-03-10 06:46
- Published 2023-12-04 23:19
- Updated 2025-03-10 06:53