看我如何绕过waf,拿下某985(母校)某系统
字数 1805 2025-08-25 22:59:02

绕过WAF并渗透某985高校系统的技术分析

前言

本文详细分析了一次针对某985高校系统的渗透测试过程,重点介绍了如何绕过Web应用防火墙(WAF)的技术手段。渗透过程始于弱口令发现,经历了WAF绕过、文件上传漏洞利用、权限提升等多个环节。

系统发现与初步渗透

番外篇:意外发现的运维系统

  1. 在渗透主系统过程中,通过分析JS文件发现被注释掉的另一个相同平台
  2. 该平台为运维测试环境,安全性较低
  3. 利用相同弱口令进入后台
  4. 发现任意文件上传漏洞并成功getshell
  5. 使用bypass_disablefunc_via_LD_PRELOAD脚本绕过disable_functions限制
  6. 尝试提权过程中因Redis服务下线而失败

经验总结:运维测试环境通常比生产环境脆弱,是渗透测试的良好切入点。

主系统渗透过程

1. 文件上传漏洞分析

  1. 后台存在文件上传功能,初步测试发现:
    • 修改文件后缀后,返回的文件后缀未变化
    • 文件内容相同则保持原后缀,内容不同则更新后缀
  2. 上传流程可能存在双重验证:
    • 文件内容校验
    • 文件后缀校验

2. WAF绕过技术

2.1 连接策略绕过

  • 直接发送恶意包会导致IP被封禁数小时
  • 发现技巧:当请求长时间等待(WAF检测)时立即取消连接,可避免立即封禁

2.2 PHP标签绕过

  • WAF检测并拦截标准PHP标签<?php ?>
  • 成功使用PHP短标签<? ?>绕过:
    • 需要服务器开启short_open_tag配置
    • 测试payload: <? echo 1111; ?>

2.3 文件名绕过

尝试多种文件名构造方式均失败:

  • xx.jpg.php
  • xxx.php.jpg
  • 截断攻击
  • 非常规后缀(phtml, pht, php3, php4, Php)
  • 多重filename参数

成功方法:使用超长垃圾数据使WAF崩溃

  • 生成30万个字符作为垃圾数据
  • 导致WAF对filename长度处理失效

2.4 PHP函数绕过

  • 直接使用危险函数如eval(), file_get_contents()会被拦截
  • 部分函数可通过字符串拼接绕过:
    $a = "file_" . "get_" . "contents";
    $a();
    
  • evalfile_put_contents无法通过此方式绕过

2.5 代码混淆技术

  • 发现eval(p/模式不被拦截
  • 需要构造$p参数但不能使用常规方式:
    • $p=$_GET['x'] 被拦截
    • $p=$_POST['x'] 被拦截
    • $p=$_SERVER['X'] 被拦截

解决方案:使用php://input流获取输入数据

  • php://input是访问原始POST数据的只读流
  • 可绕过常规参数检测

3. Webshell构造

最终构造的Webshell利用以下技术:

  1. 使用php://input获取输入
  2. 多层base64编码绕过内容检测
  3. 通过注释进行代码混淆

示例Webshell结构:

<? 
// 混淆代码
$p = file_get_contents("php://input");
// 进一步处理
eval(base64_decode($p));
?>

4. 文件写入与后续利用

  1. 通过Webshell写入加密的流量代理小马
  2. 使用蚁剑连接管理
  3. 发现服务器禁用了一些危险函数,限制了后续操作

技术总结与防御建议

渗透技术要点

  1. WAF绕过技术

    • 连接策略调整
    • PHP短标签利用
    • 超长数据使WAF崩溃
    • 代码混淆与注释利用
  2. 文件上传漏洞利用

    • 文件内容与后缀的关联分析
    • 多阶段验证绕过
  3. 权限维持

    • 多层编码的Webshell
    • 输入流利用

防御建议

  1. WAF配置优化

    • 添加短标签检测
    • 实现合理的请求大小限制
    • 增强代码混淆检测能力
  2. 系统安全加固

    • 禁用不必要的PHP特性(如短标签)
    • 严格限制文件上传功能
    • 对运维测试环境实施同等安全措施
  3. 监控与响应

    • 建立异常连接模式检测
    • 对多次尝试行为实施渐进式封禁

附录:实用资源

  1. bypass_disablefunc脚本:
    https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD

  2. PHP官方文档参考:

    • 短标签:https://www.php.net/manual/zh/ini.core.php#ini.short-open-tag
    • php://input:https://www.php.net/manual/zh/wrappers.php.php#wrappers.php.input
  3. 渗透测试工具:

    • Burp Suite
    • 蚁剑(AntSword)
绕过WAF并渗透某985高校系统的技术分析 前言 本文详细分析了一次针对某985高校系统的渗透测试过程,重点介绍了如何绕过Web应用防火墙(WAF)的技术手段。渗透过程始于弱口令发现,经历了WAF绕过、文件上传漏洞利用、权限提升等多个环节。 系统发现与初步渗透 番外篇:意外发现的运维系统 在渗透主系统过程中,通过分析JS文件发现被注释掉的另一个相同平台 该平台为运维测试环境,安全性较低 利用相同弱口令进入后台 发现任意文件上传漏洞并成功getshell 使用 bypass_disablefunc_via_LD_PRELOAD 脚本绕过disable_ functions限制 尝试提权过程中因Redis服务下线而失败 经验总结 :运维测试环境通常比生产环境脆弱,是渗透测试的良好切入点。 主系统渗透过程 1. 文件上传漏洞分析 后台存在文件上传功能,初步测试发现: 修改文件后缀后,返回的文件后缀未变化 文件内容相同则保持原后缀,内容不同则更新后缀 上传流程可能存在双重验证: 文件内容校验 文件后缀校验 2. WAF绕过技术 2.1 连接策略绕过 直接发送恶意包会导致IP被封禁数小时 发现技巧:当请求长时间等待(WAF检测)时立即取消连接,可避免立即封禁 2.2 PHP标签绕过 WAF检测并拦截标准PHP标签 <?php ?> 成功使用PHP短标签 <? ?> 绕过: 需要服务器开启 short_open_tag 配置 测试payload: <? echo 1111; ?> 2.3 文件名绕过 尝试多种文件名构造方式均失败: xx.jpg.php xxx.php.jpg 截断攻击 非常规后缀(phtml, pht, php3, php4, Php) 多重filename参数 成功方法 :使用超长垃圾数据使WAF崩溃 生成30万个字符作为垃圾数据 导致WAF对filename长度处理失效 2.4 PHP函数绕过 直接使用危险函数如 eval() , file_get_contents() 会被拦截 部分函数可通过字符串拼接绕过: 但 eval 和 file_put_contents 无法通过此方式绕过 2.5 代码混淆技术 发现 eval(p/ 模式不被拦截 需要构造 $p 参数但不能使用常规方式: $p=$_GET['x'] 被拦截 $p=$_POST['x'] 被拦截 $p=$_SERVER['X'] 被拦截 解决方案 :使用 php://input 流获取输入数据 php://input 是访问原始POST数据的只读流 可绕过常规参数检测 3. Webshell构造 最终构造的Webshell利用以下技术: 使用 php://input 获取输入 多层base64编码绕过内容检测 通过注释进行代码混淆 示例Webshell结构: 4. 文件写入与后续利用 通过Webshell写入加密的流量代理小马 使用蚁剑连接管理 发现服务器禁用了一些危险函数,限制了后续操作 技术总结与防御建议 渗透技术要点 WAF绕过技术 : 连接策略调整 PHP短标签利用 超长数据使WAF崩溃 代码混淆与注释利用 文件上传漏洞利用 : 文件内容与后缀的关联分析 多阶段验证绕过 权限维持 : 多层编码的Webshell 输入流利用 防御建议 WAF配置优化 : 添加短标签检测 实现合理的请求大小限制 增强代码混淆检测能力 系统安全加固 : 禁用不必要的PHP特性(如短标签) 严格限制文件上传功能 对运维测试环境实施同等安全措施 监控与响应 : 建立异常连接模式检测 对多次尝试行为实施渐进式封禁 附录:实用资源 bypass_ disablefunc脚本: https://github.com/yangyangwithgnu/bypass_ disablefunc_ via_ LD_ PRELOAD PHP官方文档参考: 短标签:https://www.php.net/manual/zh/ini.core.php#ini.short-open-tag php://input:https://www.php.net/manual/zh/wrappers.php.php#wrappers.php.input 渗透测试工具: Burp Suite 蚁剑(AntSword)