渗透高级课四天学习总结

目录

渗透测试四天学习内容总结

根据目录下的文件和资料,为你整理了这四天的学习内容总结:

第一天:课程介绍与环境搭建

核心内容

  • 学习目标:就业、CTF比赛、护网行动
  • 技能需求
    • Web漏洞挖掘与利用
    • 前端逆向工程
    • 云安全(Docker、K8s)
    • AI辅助安全
  • 环境搭建
    • PHPStudy(Windows)
    • Ubuntu 22.04
    • Docker容器
    • VSCode远程调试
  • 工具准备
    • BurpSuite V2025.3.1
    • Python 3.10+
    • Xdebug

详细知识点

  1. 安全学习路径

    • 就业方向:企业安全、甲方安全、安全服务
    • CTF比赛:强网杯、网鼎杯、全国大学生信息安全竞赛
    • 护网行动:红蓝对抗、漏洞挖掘、应急响应
  2. 环境搭建详解

    • PHPStudy配置:多版本PHP切换、Apache/Nginx配置
    • Ubuntu 22.04:网络配置、SSH服务、防火墙设置
    • Docker基础:镜像管理、容器操作、网络配置
    • VSCode插件:Remote-SSH、PHP Debug、Docker扩展
  3. 工具使用

    • BurpSuite:拦截代理、扫描器、Intruder、Decoder
    • Python环境:conda虚拟环境、pip包管理
    • Xdebug配置:php.ini设置、VSCode launch.json配置

第二天:PHP源码调试与HTTPS原理

核心内容

  • PHP源码调试
    • Xdebug + VSCode调试
    • Pwndbg命令行调试
    • Docker容器调试(tuwen/phpsrc镜像)
    • VSCode远程SSH连接容器
  • HTTPS原理
    • RSA密钥协商算法
    • TLS握手过程
    • 中间人攻击与防御
    • BurpSuite证书配置

重点技术

  • 调试技巧:利用Docker快速搭建PHP8.1-backdoor环境
  • 网络安全:理解HTTPS加密机制和证书验证流程

详细知识点

  1. PHP源码调试

    • Xdebug配置

      ini 复制代码
      [Xdebug]
      xdebug.mode = debug
      xdebug.start_with_request = yes
      zend_extension=php_xdebug.dll
    • Docker调试环境

      bash 复制代码
      docker run -it --rm --name debug -p 8080:8080 -p 2222:22 tuwen/phpsrc
    • VSCode远程连接

      • SSH密钥生成:ssh-keygen -t rsa -b 2048
      • 配置 ~/.ssh/config文件
      • 使用Remote-SSH插件连接容器
    • Pwndbg命令

      • break设置断点
      • continue继续执行
      • print查看变量
      • backtrace查看调用栈
  2. HTTPS原理

    • RSA密钥协商
      • 非对称加密:公钥加密、私钥解密
      • 密钥交换:客户端生成随机数,用服务端公钥加密
      • 会话密钥:基于随机数生成对称加密密钥
    • TLS握手过程
      1. Client Hello:支持的TLS版本、密码套件、随机数
      2. Server Hello:选择TLS版本、密码套件、随机数
      3. 证书验证:服务端发送证书,客户端验证
      4. 密钥交换:生成预主密钥,计算会话密钥
      5. 完成握手:双方确认加密通道建立
    • BurpSuite证书配置
      • 导出CA证书:Proxy -> Options -> Import / Export CA Certificate
      • 浏览器安装证书:添加到受信任根证书颁发机构
      • 移动设备证书:通过HTTP下载并安装
  3. 实战技巧

    • PHP8.1-backdoor分析
      • 漏洞触发条件
      • 利用方法
      • 修复方案
    • 远程调试Docker容器
      • 端口映射
      • 权限配置
      • 代码同步

第三天:文件包含漏洞深入分析

核心内容

  • Phar文件包含
    • Phar文件结构(stub、manifest、contents、signature)
    • phar://协议原理
    • Zip格式伪装绕过上传限制
  • 源码级分析
    • 完整调用链(Stream Wrapper → URL解析 → 格式检测 → 内容读取)
    • 关键数据结构(php_stream、phar_entry_info)
  • PHP_filter妙用
    • 编码解码绕过
    • 字符串操作去除"死亡exit"

重点技术

  • 协议特性:phar://不依赖扩展名,通过文件头识别格式
  • 漏洞利用:将恶意PHP文件压缩为ZIP,重命名为图片后利用phar://访问

详细知识点

  1. Phar文件结构

    • Stub :PHP启动加载器,必须包含 __HALT_COMPILER()
    • Manifest:元数据和序列化数据
    • Contents:压缩的文件内容
    • Signature:签名(SHA1、SHA256、OpenSSL)
  2. phar://协议原理

    • URL格式phar://archive.phar/path/to/file.php

    • 格式识别 :通过文件头Magic Bytes识别

      • Zip格式:PK\x03\x04
      • Phar格式:PHP\x00\x00\x00\x00
      • Tar格式:ustar
    • 绕过上传限制

      bash 复制代码
      # 创建包含shell.php的zip
      zip test.zip shell.php
      # 重命名为jpg
      mv test.zip test.jpg
      # 利用phar://访问
      include('phar://test.jpg/shell.php');
  3. 源码级调用链

    • Stream Wrapper注册phar_stream_wops结构
    • URL解析phar_parse_url()分离archive和entry
    • 打开文件phar_open_from_filename()
    • 格式检测phar_detect_phar_format()
    • 解析内容phar_parse_zipfile()构建manifest哈希表
    • 创建流php_stream_alloc()设置 phar_ops
    • 读取内容phar_stream_read()定位并读取文件
  4. 关键数据结构

    • php_stream

      c 复制代码
      typedef struct {
          const php_stream_ops *ops;
          void *abstract; // phar_entry_info*
      } php_stream;
    • phar_entry_info

      c 复制代码
      typedef struct phar_entry_info {
          zend_off_t fp_pos;      // 文件在zip中的偏移
          size_t uncompressed_size; // 解压后大小
          phar_archive_data *phar; // 所属phar
          char *filename;         // 文件名
      } phar_entry_info;
  5. PHP_filter妙用

    • base64解码绕过

      php 复制代码
      // 去除<?php exit; ?>
      include('php://filter/write=convert.base64-decode/resource=shell.php');
    • 字符串操作

      php 复制代码
      // 去除XML标签
      include('php://filter/read=string.strip_tags/resource=file.php');
    • 多过滤器组合

      php 复制代码
      // 先strip_tags再base64-decode
      include('php://filter/read=string.strip_tags|convert.base64-decode/resource=file.php');

第四天:高级文件包含利用技术

核心内容

  • phpinfo+LFI
    • 利用phpinfo打印上传缓存文件路径
    • 条件竞争攻击获取临时文件
    • 编写EXP自动提取临时文件名并包含
  • PHP7崩溃利用
    • 利用php://filter/string.strip_tags触发Segment Fault
    • 使临时文件不被删除
    • 结合dir.php列举临时文件
  • 实战案例
    • DeadsecCTF2025 baby-web
    • PHP代码挑战赛

重点技术

  • 条件竞争:利用HTTP请求处理时间差
  • 崩溃利用:PHP7 segment fault特性
  • 自动化EXP:编写Python脚本实现自动攻击

详细知识点

  1. phpinfo+LFI技术

    • 原理:phpinfo会打印所有$_FILES信息,包括临时文件路径

    • 临时文件特性

      • 路径格式:/tmp/phpXXXXXX
      • 处理流程:上传 → 临时文件 → 脚本结束后删除
    • 条件竞争利用

      python 复制代码
      # 发送大请求使phpinfo加载缓慢
      padding = 'A' * 2000
      # 上传包含webshell的文件
      files = {'file': BytesIO('<?php eval($_POST[shell]);?>')}
      # 同时发送包含请求
    • EXP编写

      • 正则提取临时文件名:tmp_name.*?([/\\]php\w+)
      • 多线程并发请求
      • 自动重试机制
  2. PHP7崩溃利用

    • 触发条件

      php 复制代码
      // 触发Segment Fault
      include('php://filter/string.strip_tags/resource=/etc/passwd');
    • 原理:PHP7在处理某些filter时会崩溃,导致临时文件不被清理

    • 利用流程

      1. 发送崩溃请求
      2. 上传包含webshell的文件
      3. 利用dir.php列举/tmp目录
      4. 包含临时文件获取shell
  3. 实战案例分析

    • DeadsecCTF2025 baby-web
      • 题目来源:当include邂逅phar------DeadsecCTF2025 baby-web.pdf
      • 题目描述:文件上传+文件包含漏洞组合利用
      • 核心考点:phar://协议不依赖文件扩展名的特性
      • 解法:Zip伪装+phar://协议
      • 详细步骤:
        1. 创建包含shell.php的zip压缩文件
        2. 将zip文件重命名为.jpg绕过文件上传限制
        3. 利用phar://协议访问压缩包内的PHP文件
        4. 成功执行恶意代码获取flag
    • PHP代码挑战赛
      • 题目来源:PHP代码挑战赛.zip
      • 题目描述:无phpinfo页面的文件包含漏洞利用
      • 核心考点:PHP7崩溃导致临时文件不被删除
      • 解法:PHP7崩溃+dir.php目录列举
      • 详细步骤:
        1. 利用 php://filter/string.strip_tags/resource=/etc/passwd触发PHP崩溃
        2. 上传包含webshell的文件
        3. 通过dir.php列举/tmp目录下的临时文件
        4. 包含临时文件获取服务器权限
    • 文件包含5-7
      • 题目来源:文件包含5-7.md
      • 案例1:phpinfo+LFI条件竞争
        • 利用phpinfo打印临时文件路径
        • 条件竞争获取临时文件
        • 自动提取文件名并包含执行
      • 案例2:PHP7崩溃利用
        • 触发Segment Fault使临时文件不被删除
        • 结合目录列举找到临时文件
        • 包含执行获取flag
    • PHP8.1-dev后门
      • 题目来源:远程调试PHP底层复现8.1-dev后门.pdf
      • 漏洞描述:PHP 8.1.0-dev版本存在内置后门
      • 利用条件:目标使用了开发版本的PHP
      • 利用方法:通过User-Agent头执行任意代码
      • 调试分析:使用GDB或Pwndbg调试PHP源码
      • 修复方案:升级到正式版本
  4. 自动化工具开发

    • Python EXP框架

      python 复制代码
      import requests
      from io import BytesIO
      import re
      import threading
      
      def upload_file(url, data):
          files = {'file': BytesIO(data)}
          return requests.post(url, files=files)
      
      def exploit_lfi(url, tmp_file):
          payload = {'shell': 'system("cat /flag");'}
          return requests.post(f"{url}?file={tmp_file}", data=payload)
    • 关键技术点

      • Socket编程实现精确时间控制
      • 正则表达式提取信息
      • 异常处理增强稳定性
      • 多线程并发提高成功率

学习成果

1. 理论基础

  • 安全概念:深入理解Web安全、网络安全、应用安全的核心原理
  • 攻击链:掌握漏洞发现、利用、权限提升、持久化的完整攻击流程
  • 防御机制:理解现代Web应用的安全防护措施和绕过技术

2. 技术能力

  • PHP安全
    • 源码级调试与分析
    • 文件包含漏洞高级利用
    • 协议层安全分析
  • 容器安全
    • Docker镜像安全
    • 容器隔离机制
    • 镜像漏洞扫描
  • 网络安全
    • HTTPS加密原理
    • TLS握手过程
    • 中间人攻击防御

3. 实战经验

  • CTF技能
    • 文件包含类题目解法
    • 条件竞争攻击
    • 崩溃利用技术
  • 漏洞挖掘
    • 自动化EXP编写
    • 多线程并发攻击
    • 正则表达式提取信息
  • 环境管理
    • 快速搭建漏洞环境
    • Docker容器编排
    • 远程调试配置

4. 工具精通

  • BurpSuite
    • 拦截代理配置
    • 扫描器使用
    • Intruder暴力破解
    • Decoder编码解码
  • VSCode
    • 远程SSH连接
    • PHP Debug调试
    • Docker扩展管理
  • Python
    • 安全脚本开发
    • 多线程编程
    • 网络请求处理

HTTPS原理与RSA密钥协商算法详解

一、核心概念

HTTPS的安全目标
  • 保密性:防止信息被窃取
  • 完整性:防止信息被篡改
  • 可用性:确保服务正常访问
  • 身份认证:验证通信双方身份
密钥交换算法
  • 对称加密:用于实际数据传输,速度快
  • 非对称加密:用于密钥交换,安全性高
  • RSA:经典非对称加密算法,用于密钥协商

二、RSA密钥协商的TLS握手过程

第一次握手(Client Hello)
  • 客户端发送:
    • TLS版本号
    • 支持的密码套件列表
    • 客户端随机数(Client Random)
    • 支持的压缩算法
第二次握手(Server Hello + Certificate + Server Hello Done)
  • 服务端响应:
    • 确认TLS版本
    • 选择密码套件(如TLS_RSA_WITH_AES_128_GCM_SHA256)
    • 服务端随机数(Server Random)
    • 数字证书(包含服务端公钥)
    • 结束标记
客户端证书验证
  • 验证流程
    1. 计算证书Hash值H1
    2. 使用CA公钥解密证书签名得到H2
    3. 比较H1和H2,相同则可信
  • 证书链:根证书 → 中间证书 → 服务器证书
第三次握手(Client Key Exchange + Change Cipher Spec + Finished)
  • 客户端操作:
    1. 生成预主密钥(pre-master)
    2. 用服务端公钥加密pre-master
    3. 发送加密后的pre-master
    4. 通知服务端开始使用加密通信
    5. 发送加密的握手摘要
第四次握手(Change Cipher Spec + Finished)
  • 服务端操作:
    1. 用私钥解密得到pre-master
    2. 通知客户端开始使用加密通信
    3. 发送加密的握手摘要

三、会话密钥生成

密钥材料
  • 三个随机数
    1. Client Random(客户端生成)
    2. Server Random(服务端生成)
    3. pre-master(客户端生成,服务端解密)
生成过程
  • 客户端和服务端使用相同的算法
  • 基于三个随机数计算Master Secret
  • Master Secret派生为多个会话密钥
    • 用于加密的密钥
    • 用于消息认证的密钥

四、RSA密钥协商的安全性分析

优点
  • 实现简单:逻辑清晰,易于理解
  • 兼容性好:广泛支持,适用于各种环境
  • 性能尚可:握手过程较快
缺陷
  • 不支持前向保密
    • 私钥泄露会导致所有历史通信被破解
    • 因为会话密钥依赖于固定的RSA私钥
  • 易受中间人攻击
    • 如果证书验证不严格
    • 可能被伪造证书攻击

五、改进方案

DHE/ECDHE算法
  • 前向保密:每次会话生成新的密钥对
  • 安全性更高:即使私钥泄露,历史通信也安全
  • 计算效率:ECDHE比DHE更快
现代HTTPS配置
  • 推荐密码套件:ECDHE-RSA-AES256-GCM-SHA384
  • 证书选择:使用受信任的CA颁发的证书
  • TLS版本:启用TLS 1.2/1.3

六、实战应用

BurpSuite证书配置
  • 导出CA证书
  • 浏览器安装证书
  • 配置代理拦截HTTPS流量
证书验证绕过
  • 自签名证书:添加到信任列表
  • 证书锁定:验证证书指纹
  • 中间人代理:如BurpSuite、Charles

七、总结

RSA密钥协商算法是HTTPS早期使用的经典密钥交换方案,通过非对称加密保护对称密钥的传输,实现了安全的通信加密。虽然存在前向保密的缺陷,但由于其实现简单、兼容性好,至今仍被广泛使用。

现代HTTPS部署推荐使用ECDHE等支持前向保密的密钥交换算法,结合强密码套件和最新的TLS版本,以提供更高的安全性和性能。

学习效果评估

掌握较好的内容

1. PHP伪协议
  • 深入理解
    • php://filter的各种过滤器用法
    • phar://协议的工作原理和利用方式
    • zip://协议的路径格式和使用场景
  • 实战应用
    • 利用php://filter进行文件内容读取和编码转换
    • 通过phar://协议绕过文件上传限制
    • 结合多种伪协议实现复杂的攻击链
  • 技术细节
    • 理解伪协议的注册和处理机制
    • 掌握不同过滤器的组合使用方法
    • 熟悉协议参数的格式和传递方式
2. 文件包含漏洞
  • 深入理解
    • 本地文件包含(LFI)和远程文件包含(RFI)的区别
    • 各种绕过技术(目录遍历、编码绕过等)
    • 与其他漏洞的组合利用
  • 实战应用
    • phpinfo+LFI条件竞争攻击
    • PHP7崩溃利用获取临时文件
    • Phar文件包含与反序列化的结合
  • 技术细节
    • 源码级调用链分析
    • 临时文件处理机制
    • 条件竞争的时间窗口控制

学习不足的内容

PHP函数编译源码解析
  • 学习状态
    • 对PHP源码的整体结构理解不够深入
    • 函数编译的具体过程掌握不全面
    • 底层C代码的分析能力有待提高
  • 改进方向
    • 系统学习PHP源码的目录结构和核心模块
    • 重点研究Zend引擎的编译和执行过程
    • 多使用调试工具(GDB、Pwndbg)分析源码
    • 结合具体漏洞(如PHP8.1-dev后门)进行源码级分析
  • 学习建议
    • 从简单的PHP扩展开发入手
    • 逐步深入到Zend引擎核心
    • 参考PHP官方文档和源码注释
    • 参与PHP源码相关的技术社区

总结

通过这四天的学习,你已经掌握了渗透测试的核心技能和方法论,包括:

  1. 环境搭建与调试:从基础环境配置到高级源码调试
  2. 漏洞原理与利用:深入理解文件包含漏洞的底层机制
  3. 协议分析与安全:掌握HTTPS和各种PHP协议的安全特性
  4. 自动化攻击技术:编写EXP实现高效漏洞利用
相关推荐
西岸行者7 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意7 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码7 天前
嵌入式学习路线
学习
毛小茛7 天前
计算机系统概论——校验码
学习
babe小鑫7 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms7 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下7 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。7 天前
2026.2.25监控学习
学习
im_AMBER7 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J7 天前
从“Hello World“ 开始 C++
c语言·c++·学习