渗透测试基础|信息收集——框架识别&框架漏洞利用
字数 1468 2025-08-29 08:29:36

渗透测试基础:框架识别与漏洞利用

前言

本文基于小迪安全2024年课程内容,系统介绍渗透测试中常见的Web框架识别方法和漏洞利用技术。主要内容包括Python、PHP、Java等主流框架的特征识别,以及如何利用这些框架进行渗透测试。

Web开发架构类型

  1. 纯手工开发模型:功能代码全部手写

    • 优点:代码原创性高
    • 缺点:未经安全检测,漏洞较多
  2. 开发框架模型:以框架为核心实现功能

    • 经过第三方机构检测,安全性相对较高
  3. 框架+组件模型:以框架为核心,组件为辅实现功能

    • 安全性最好,使用最广泛

Python框架识别

Django框架

  • FOFA搜索语法app="django" && country="CN"
  • 识别方法
    • 使用Wappalyzer等插件识别
    • 查看响应头中的特征字段
    • 检查默认图标特征

Flask框架

  • FOFA搜索语法app="Flask" && country="CN"
  • 识别特征
    • 响应头中Set-Cookie: expires=Flask
    • 默认图标特征(icon_hash="1618312653")

PHP框架识别

ThinkPHP

  • FOFA搜索语法app="ThinkPHP"
  • 识别特征
    • 专属欢迎页面
    • 插件可识别

Laravel

  • FOFA搜索语法app="Laravel-Framework"
  • 识别特征
    • 特定欢迎页面
    • 响应头特征

Java框架识别

Shiro框架

  • FOFA搜索语法app="APACHE-Shiro"
  • 识别特征
    • Cookie中存在rememberMe字段
    • 响应包中存在set-Cookie:remeberMe=deleteMe
    • 发送rememberMe=x请求,观察响应

Struts2框架

  • FOFA搜索语法app="Struts2" && country="CN"
  • 识别特征
    • URL后缀通常带.doaction
    • 特定错误页面

Spring Boot

  • FOFA搜索语法app="Springboot"
  • 识别特征
    • 网页标签中的小绿叶图标
    • 默认报错页面
    • 特定响应头

Fastjson/Jackson组件

  • 识别方法
    • Fastjson会把01解析成1
    • Jackson在解析01时会抛出异常

框架漏洞利用实战

Shiro反序列化漏洞(CVE-2016-4437)

  1. 环境搭建

    • 使用Vulhub靶场:https://github.com/vulhub/vulhub
    • 启动命令:docker-compose up -d (CVE-2016-4437环境)
    • 关闭命令:docker-compose down -v
  2. 漏洞识别

    • 抓包观察rememberMe字段
    • 确认Shiro框架特征
  3. 漏洞利用步骤

    • 使用工具爆破密钥
    • 检测可用利用链
    • 执行命令注入
    • 部署内存马(推荐使用哥斯拉)
  4. 工具箱推荐

    • 下载地址:https://www.one-fox.cn/
    • 配置关键参数:
      • 目标URL
      • 密钥
      • 命令执行参数

总结

  1. 框架识别是渗透测试的重要前置步骤

  2. 识别方法包括:

    • FOFA等搜索引擎语法
    • 响应头特征分析
    • 默认页面/图标识别
    • 特定字段检测
  3. 工具和插件并非万能,需要结合手动识别

  4. 识别出框架后,可针对性地搜索相关漏洞和利用工具

  5. 实战中需灵活组合各种识别方法和利用技术

参考资料

  1. 小迪安全全栈网络安全课程
  2. Java主流框架和中间件介绍
  3. Fastjson与Jackson区别
  4. Vulhub漏洞环境
  5. 渗透测试工具箱
渗透测试基础:框架识别与漏洞利用 前言 本文基于小迪安全2024年课程内容,系统介绍渗透测试中常见的Web框架识别方法和漏洞利用技术。主要内容包括Python、PHP、Java等主流框架的特征识别,以及如何利用这些框架进行渗透测试。 Web开发架构类型 纯手工开发模型 :功能代码全部手写 优点:代码原创性高 缺点:未经安全检测,漏洞较多 开发框架模型 :以框架为核心实现功能 经过第三方机构检测,安全性相对较高 框架+组件模型 :以框架为核心,组件为辅实现功能 安全性最好,使用最广泛 Python框架识别 Django框架 FOFA搜索语法 : app="django" && country="CN" 识别方法 : 使用Wappalyzer等插件识别 查看响应头中的特征字段 检查默认图标特征 Flask框架 FOFA搜索语法 : app="Flask" && country="CN" 识别特征 : 响应头中 Set-Cookie: expires=Flask 默认图标特征(icon_ hash="1618312653") PHP框架识别 ThinkPHP FOFA搜索语法 : app="ThinkPHP" 识别特征 : 专属欢迎页面 插件可识别 Laravel FOFA搜索语法 : app="Laravel-Framework" 识别特征 : 特定欢迎页面 响应头特征 Java框架识别 Shiro框架 FOFA搜索语法 : app="APACHE-Shiro" 识别特征 : Cookie中存在 rememberMe 字段 响应包中存在 set-Cookie:remeberMe=deleteMe 发送 rememberMe=x 请求,观察响应 Struts2框架 FOFA搜索语法 : app="Struts2" && country="CN" 识别特征 : URL后缀通常带 .do 或 action 特定错误页面 Spring Boot FOFA搜索语法 : app="Springboot" 识别特征 : 网页标签中的小绿叶图标 默认报错页面 特定响应头 Fastjson/Jackson组件 识别方法 : Fastjson会把 01 解析成 1 Jackson在解析 01 时会抛出异常 框架漏洞利用实战 Shiro反序列化漏洞(CVE-2016-4437) 环境搭建 : 使用Vulhub靶场: https://github.com/vulhub/vulhub 启动命令: docker-compose up -d (CVE-2016-4437环境) 关闭命令: docker-compose down -v 漏洞识别 : 抓包观察 rememberMe 字段 确认Shiro框架特征 漏洞利用步骤 : 使用工具爆破密钥 检测可用利用链 执行命令注入 部署内存马(推荐使用哥斯拉) 工具箱推荐 : 下载地址: https://www.one-fox.cn/ 配置关键参数: 目标URL 密钥 命令执行参数 总结 框架识别是渗透测试的重要前置步骤 识别方法包括: FOFA等搜索引擎语法 响应头特征分析 默认页面/图标识别 特定字段检测 工具和插件并非万能,需要结合手动识别 识别出框架后,可针对性地搜索相关漏洞和利用工具 实战中需灵活组合各种识别方法和利用技术 参考资料 小迪安全全栈网络安全课程 Java主流框架和中间件介绍 Fastjson与Jackson区别 Vulhub漏洞环境 渗透测试工具箱