三位一体的漏洞分析方法-web应用安全测试方法
本文转自乌云知识库
0x00 前言
节选自: http://www.owasp.org.cn/OWASP_Conference/owasp-20140924/02OWASPWeb20140915.pdf
- 4.1 主动式(全自动 ):Web2.0、交互式漏洞扫描
- 4.2 半自动式漏洞分析:业务重放、url镜像,实现高覆盖度
- 4.3 被动式漏洞分析:应对0Day和孤岛页面
0x01 主动式(全自动 )Web扫描
• 使用常见的漏洞扫描器 • 自动fuzz,填充各种攻击性数据 • 业务逻辑混淆,导致服务出错
• 局限: • 难以处理高交互式应用 • 只能发现暴露给用户(搜索引擎)的链接,难以覆盖100%的业务链接 • 解决方法:引入半被动式漏洞分析方法 • 在人工未参与的情况下,50%以上的Web应用系统存在高危漏洞
0x02 半自动式漏洞分析:业务重放+url镜像,实现高覆盖度
1. 方法一:业务重放
- 测试过程使用 burpsuite、fiddler:
- HTTP(S)业务流量录制与重放扫描
- 手工修改业务数据流
- 对手机APP也适用
检测逻辑漏洞: •水平权限绕过 •订单修改 •隐藏域修改
2. 方法二: 手工记录
• 从日志中获取url记录
1. Fiddler的Url日志
2. 获取Apache、Nginx、Tomcat的access日志
3. 从旁路镜像中提取url日志 (安全人员不用再被动等待应用 的上线通知)
- 从Fiddler2、 burpsuite 导出Url日志 再导入到漏洞扫描器扫描
2.获取Apache、Nginx、Tomcat的access日志
- 360-日志宝
- Splunk
- 各种日志审计系统
- 从旁路镜像中提取url日志 (安全人员不用再被动等待应用 的上线通知) 如:jnstniffer、 360鹰眼、各大IT公司等
• 从旁路镜像中获取url列表,能高效地检出大量的漏洞,不需要运维人员通知,便可以获知业务系统的上线情况并执行漏洞扫描任务。
0x03 半自动式漏洞分析:业务重放、url镜像,高覆盖度
- 局限 ① 时间滞后/token: 流量重发时,不一定能100%重现当时的业务流程及出现的bug。 ② 依然难以覆盖100%的业务链接,存在孤岛页面。(正常数据流不触发) ③ 漏洞检测(防御)技术滞后于攻击技术,无法解决0day漏洞 - 解决方法:引入全被动式漏洞分析
0x04 全被动式漏洞分析:
国外产品:Nessus PVS被动扫描
全被动式漏洞分析(不发送任何数据包)
- 全被动式扫描VS主动式漏洞扫描器 相同点:都是根据双向数据包的内容,判断漏洞是否存在 不同点: 检测方式:被动式扫描不需要联网,不会主动发出url请求,也不发出任何数据包 PVS和IDS的区别: • 更关注漏洞感知,而不是入侵,如页面出现sql错误信息,可触发pvs报警,但不会触发ids报警。 • 报警结果不一样:pvs按照漏洞的风险等级,ids按照黑客的攻击手段报警 • 双向分析数据报文 • 更关注于web应用,OWASP TOP10的攻击手段 • 按攻击影响报警(分析双向报文),而不是按攻击手段去报警(分析单向报文) Nessus的PVS只是一个思路,它专注及网络及主机漏洞,对Web应用的检测能力有限,需要重新设计一个针对web的PVS出来:WebPVS,同步接受用户提交的所有业务请求,通过扫描引擎识别请求,一旦发现恶意请求或者该请求返回数据,触发报警处理
• WebPVS的优点: • 虽然依然难以覆盖100%的业务链接,但是能覆盖100%已经发生的业务链接。 • 能与黑客同步发现各种漏洞 • 由于HTTP协议是固定,因此能够根据回包情况发现0day攻击。
三位一体的漏洞分析方法-web应用安全测试方法的更多相关文章
- web前后端分离漏洞分析防御
web前后端分离漏洞分析防御 漏洞分析,主要漏洞有 一.跨站脚本攻击XSS 程序 + 数据 = 结果:攻击后,数据夹杂一部分程序(执行代码),导致结果改变: 1.XSS攻击注入点 (a):HTML节点 ...
- Web 漏洞分析与防御之点击劫持(三)
原文地址:Web 漏洞分析与防御之点击劫持(三) 博客地址:http://www.extlight.com 一.全称 点击劫持,顾名思义,用户点击某个按钮,却触发了不是用户真正意愿的事件. 二.原理 ...
- Web 漏洞分析与防御之 CSRF(二)
原文地址:Web 漏洞分析与防御之 CSRF(二) 博客地址:http://www.extlight.com 一.全称 跨站请求伪造(Cross-site Request Forgery) 二.原理 ...
- Web 漏洞分析与防御之 XSS(一)
原文地址:Web 漏洞分析与防御之 XSS(一) 博客地址:http://www.extlight.com 一.全称 跨站脚本攻击(Cross Site Scripting) 二.原理 通过在网站中的 ...
- 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗
1 基础知识1.1 网络熟悉常见网络协议:https://www.ietf.org/standards/rfcs/1.2 操作系统1.3 编程2 恶意软件分析2.1 分类2.1.1 木马2.1.2 B ...
- [WEB安全]phpMyadmin后台任意文件包含漏洞分析(CVE-2018-12613)
0x00 简介 影响版本:4.8.0--4.8.1 本次实验采用版本:4.8.1 0x01 效果展示 payload: http://your-ip:8080/index.php?target=db_ ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- FFmpeg任意文件读取漏洞分析
这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花. 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static. ...
- SpringBoot SpEL表达式注入漏洞-分析与复现
目录 0x00前言 0x01触发原因 0x02调试分析 0x03补丁分析 0x04参考文章 影响版本: 1.1.0-1.1.12 1.2.0-1.2.7 1.3.0 修复方案:升至1.3.1或以上版本 ...
随机推荐
- JavaScript的for循环语句
语法格式 for(初始化值;循环的条件;每一次循环的递增值){ // 循环的条件结果为true,则执行循环体中的代码 } 示例(打印出1-10之间的整数): for(var a=1;a<=10; ...
- 在一个ros包下怎么使用另外一个自定义ros包里的message
假设自定义消息包my_message_package https://answers.ros.org/question/206257/catkin-use-ros-message-from-anoth ...
- linux中直接进行系统调用和通过C库调用的示例
深入了解LINUX,这方面内容不可少,这段时间再补补.. #include <syscall.h> #include <unistd.h> #include <stdio ...
- STL模板整理 set
SET set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序.应该注意的是set中数元素的值不能直接被 ...
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- Codeforces 1038E Maximum Matching
可能写了个假算法 假设定义:含有一个欧拉路的图为类欧拉图 欧拉路的定义:一个无向连通图中,存在一条路径对所有边都遍历且仅遍历一次:判断方法:该连通图中度为奇数的点的个数不能超过2,即为0或者2 题目解 ...
- ( 转 ) mysql 实战 or、in与union all 的查询效率
OR.in和union all 查询效率到底哪个快. 网上很多的声音都是说union all 快于 or.in,因为or.in会导致全表扫描,他们给出了很多的实例. 但真的union all真的快于o ...
- 【块状树】bzoj3731 Gty的超级妹子树
带 加点 删边的块状树. 加点在 bzoj3720 说过. 删边其实就是块顶打标记,记录其属于哪棵树,防止在dfs搜集答案时跑到别的树上. 然后暴力把所在块拆开. 好像用邻接表存图,直接在vector ...
- STL之priority_queue3
描述 使用STL中的优先队列,将n个点按照横坐标从小到大顺序排序,如果横坐标相同,按照纵坐标从小到大排序. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { in ...
- SQL函数学习(十六):STUFF()函数
16.STUFF()函数 STUFF()函数用于删除指定长度的字符,并可以在制定的起点处插入另一组字符. 16.1 STUFF()函数语法 select stuff(列名,开始位置,长度,替代字符串) ...