是真的小外套头像
网络安全实战第21期:一次完整的注入风险验证与记录封面图

网络安全实战第21期:一次完整的注入风险验证与记录

Week 3 收尾:一次完整的注入风险验证该怎么做、怎么记

网络安全实战 90 天 · Week 3 注入风险 | 难度 ★★★ 进阶 | 关键词:验证流程 只读判断 风险定级 修复建议 复现记录

这一周从原理讲到了绕过,最后要回答一个工程问题:给你一个接口,你按什么顺序查、查完怎么写、写的东西别人能不能照着复现。这篇是一次完整的走查记录,全程只读,目标是自己搭的靶场。

一、这一周到底在练什么

不是练 payload。payload 会过期,库版本一升就换写法。练的是判断链条:看到一个参数,能推出现在处在链条的哪一环、下一环需要什么证据、拿不到证据时该怎么记录。

阶段要回答的问题拿不到时怎么办
定位哪个参数进了 SQL,怎么进的读后端代码或看报错,不猜
确认真假条件能不能区分换观察量:条数 → 状态 → 耗时
摸结构几列、哪几列有回显用逐级收窄代替一次性取全
定量影响能读到哪些数据、到哪一层只记确实读到的,不外推
记录别人能否照着复现把请求、判据、结果写全

说明 本文所有操作均为自建靶场(本机容器中的 DVWA 与 SQLi-Labs)上的只读验证,用于练习判断与记录方法,不涉及任何真实业务系统。授权范围内的真实验证同样遵守「只读、最小影响」原则。

二、第一到第三步:定位、确认、摸结构

先找到一个确定会走数据库的查询入口,然后拿真假两个条件去撞,确认响应可区分。这一步一旦成立,后面的都是流水线。

bash

id=1 AND 1=1      # 返回正常列表
id=1 AND 1=2      # 返回空

两条响应不同,说明条件被代入执行了。接着确定结构:先数有几列,再确认哪几列的内容会被打回页面,然后才能把查询结果拼进去。

bash

id=1 UNION SELECT version(),database()
id=1 UNION SELECT user(),2
id=1 UNION SELECT schema_name,2 FROM information_schema.schemata

三条请求分别取到了数据库版本、当前库、数据库账号标识和库名列表。这些是「摸结构」阶段的产出,属于只读信息,不涉及任何业务数据。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、第四步:定量,到哪一层就停

定量是定级的依据,也是最容易越界的地方。做法是先把范围收窄到一张表,确认能读到列名,再取一行样本说明字段含义——不需要、也不应该把整表拉下来。

验证层级产出是否必须
库名确认目标库存在必须
表名清单确认业务表结构规模必须
列名清单确认字段语义必须
单行样本证明数据可读必须
全表导出—不必要,且风险显著

在这里插入图片描述

在这里插入图片描述

只读原则 整个过程没有写入、更新、删除任何记录,也没有在服务器上生成文件。验证到「能读到不应读到的数据」这一点就足够定级;继续扩大范围只会增加风险,不会增加结论。

四、第五步:把发现写成可复现的记录

记录的价值等于它的可复现性。一份合格的记录至少回答五个问题:在哪、什么条件、怎么判断的、影响多大、有没有被挡住。

字段示例写法常见错误
位置接口路径 + 参数名 + 方法只写域名,别人找不到入口
前置条件登录态 / 防护级别 / 依赖会话不提会话,复现时全部失败
判断依据真条件返回列表、假条件返回空只说「存在注入」,没有证据
影响可读库名、表名、单行样本写成「可读全库」,超出已验证范围
阻断情况哪一层拦截、什么表现被拦就当作不存在

五、修复建议要落到具体位置

定级之后最容易敷衍的一步是修复建议。写「请加强输入校验」等于没写。有效的建议必须指明改哪里、怎么改、为什么这样改有效。

优先级改什么怎么改为什么有效
P0查询构造方式参数化预编译,变量走绑定语法与数据分离,输入无法改变语句结构
P0参数类型入参强制转换并校验范围数字型入口不接受表达式
P1数据库账号只授予该业务必需的读权限即使注入成立,影响半径也被压缩
P1错误与文件能力关闭详细报错,禁用文件读写能力减少回显位,掐断写入落地路径
P2检测与告警对高频同源相似请求设阈值盲注类行为必然高频,可被识别

六、这一周的六个结论

天主题最值得带走的一句
Day015原理漏洞的根源是数据被当成了语法
Day016手工推理每一步都对应一道可以被堵死的门
Day017工具工具给的是分类结果,不是证明
Day018盲通道信息量决定速率,速率决定是否留痕
Day019过滤失效黑名单处理的是形状,不是身份
Day020综合验证换防护级别,要换观察方式
Day021收尾能复现的记录才有价值
  • 注入的本质是拼接,修复的本质是分离。所有绕过的讨论,最后都指向这一句。

  • 过滤不等于安全。看到的「被拦住」,往往只是换了一种表达的成本变高。

  • 能复现才算结论。一次成功可能只是缓存抖动,稳定复现才是证据。

  • 只读到该读的就停手。验证到能证明影响即可,扩大范围只增风险。

七、下周预告

注入这一层过了之后,下一周进入文件相关的风险面:上传、包含、以及「上传成功之后它到底落在哪」这个最容易被忽略的问题。

全部验证均在本机自建靶场完成,遵循只读与最小影响原则。真实环境中的任何验证都必须先获得书面授权,并严格控制在授权范围内。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2401_88349202/article/details/169943505

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--