端口转发(port forwarding)
基于linux端口转发
自带工具
前置条件:root权限
优点:基于内核转发,不同于ssh转发,无需新建链路
1. 开启iptables端口转发:
### 1.以下两种方法都可 |
2. 添加转发规则
0x01 转发本地
#将7777端口流量以tcp形式转发到6666端口 |
本地未开启链路监听
开启转发的机器使用ncat监听6666流量并将转发bash命令,在另一台机器上使用nc请求7777端口,成功建立连接并执行命令
建立连接的端口有所区别
远程
本地
0x02 作为路由转发其他
本地添加两条转发规则
iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 10.211.55.4:7777 |
实测填写本地ip转发失败,可能是因为使用的不是一个网络出口?
由于是内核转发,使用ss看不到任何链接
未填写转发端口的情况:
慎用!将转发对应端口的流量,来什么转什么,也就是说,退出了ssh后就连不上了…
0x03 端口复用
自定义一条链路,添加匹配规则,将匹配到的流量转移到链路中
### 创建端口复用链路 |
实际效果:
3. 其他命令
#删除指定类型序号规则 |
0x00 本地端口转发
ssh –fgN –L lport:localhost:rprot locahhost |
0x01 远程端口转发
ssh –fgN –R lport:rhost:rprot locahhost |
0x02 动态转发,本地开启socks5端口转发流量
ssh –fgN –D lport root@rhost |
其他工具
其他的太多了,只列举部分
本地监听端口并转发请求目标端口流量
ncat --sh-exec "ncat rhost rport" -l lport --keep-open |
本地监听端口并转发请求目标端口流量
socat TCP4-LISTEN:lport.reuseaddr,fork TCP4:rhost:rport |
基于windows端口转发
自带工具
前置条件:administrator权限
0x00 转发远程
#将远程服务8081端口流量转发至本地8888端口 |
0x01 正向代理 转发内网其他ip
# 监听本地2222端口并将流量转发到远程22端口,本地ip为内网地址 |
注:由于与iptables机制不同,使用netsh interface portproxy reset清空代理时建立的链接也会断开
其他工具
同样很多,懒得总结,暂时挖坑
本文章由nemu1k5ma编撰,转载请标注哦~