Smashing The Browser:From Vulnerability Discovery To Exploit学习记录
浏览器Fuzz技术
漏洞挖掘
白盒挖掘
代码审计
自动化代码分析黑盒挖掘
Fuzzing
两种Fuzzing技术
静态Fuzzing
基于变异的
- 文件、文档
- 多媒体
- bf3
基于生成的
- 浏览器
重点是测试用例的生成
动态Fuzzing
Fuzzing框架
- Grinder
Fuzzing工具
- CrossFuzz
- ndujaFuzz
- NodeFuzz
- X-Fuzzer
- jsFunFuzz
重点是测试用例的重建、Crash样本的捕获
怎么动手写Fuzzing工具
1.搜集POC
- 2.规范文档
- W3C
- MDN
- MSDN
- 3.目标
- javascript
- HTML
- CSS
策略
数据VS关系
数据类型朝向VS逻辑朝向
代码路径覆盖率->浏览器状态覆盖率
- DOM Tree状态
- 渲染森林状态
- 布局状态
- 事件句柄状态
- 多页面状态
规范标准
- W3C
- MDN
- MSDN
最终的指导
- HTML
- CSS
逻辑元素->各个字典(见下)->规范标准和指导
- 基础字典
- property字典
- 函数字典
- Style字典
目标
UAF漏洞
构造->Fuzz->Free->Use
释放的节点->无引用
Traverse Node 横穿节点??
1.保存引用(id[idex])
2.DOM实现(document.all[index])
节点引用
1.caching
2.clearing tree node
3.递归清除子树
Get Property
1.动态获取
- ProperTies
- FuncTions
- Events
2.缓存Caching
3.for...in
4.typeof
Fuzz Property
1.smart values->specification
2.random values->no dictionary
Fuzz Function
Functional programming + eval()
DOM Tree构造
- Base DOM Tree
- random nodes
- 随机树生成算法
- for loop
- document.createElement
- node.appendChild
 - Smarter structure
- Form
- Table
- Map
- List
- Audio
- Video
Svg
- Network
- XMLHttpRequest
WebSocket
Prelude
- TextNode
- Special nodes
- Window
- Document
- Attribute
- NamedNodeMap
- Group
- Range
- Selection
- NodeIterator
TreeWalker
- Multiple Pages
- Iframe
- Window.open
- Recursively nested iframes
Renderer process <=> Instance
- Web Worker & SharedWorker
MulTple threads
- Event handler
“ATM”
- CSS
- PseudoMclasses & pseudoMelements
Render forest
- Initial properties
Start states
Fuzzing
- DOM Node
- ProperTes
- Functions
Styles
Return value -> Fuzzing list
- Fuzzing Values
- Normal
- Dirty
- Random
Return
- Force Layout
Node.offsetParent
- Clear DOM SubTree
- innerHTML
- outerHTML
- innerText
outerText
- Clear whole DOM Tree
- write
- writeln
- open
documentElement.innerHTML
- DOM Tree Modify
- appendChild
- insertBefore
- insertAdjacentElement
- insertAdjacentHTML
- insertAdjacentText
- removeChild
- replaceChild
cloneNode
Special node manipulate
- Group manipulate
execCommand
- Multiple pages
- Mutual manipulate
Mutual clear
- setTimeout
Disrupt the Tme sequence
- Garbage Collect
Force IE Memory Protector to reclaim
####Finale
- GC
- Reuse all elements
- Properties
- Functions
- Styles
- Reuse group
- Reuse special nodes
- Reuse funcTon return values
Ditionary
通过准确性和完整性来判断字典的好坏。
字典->规范
- 规范
- Scripts(or grep + sed)
- Manual
扩展性
- 新东西
- 地理位置
- 客户端数据库
- Canvas
- Blobs
- 语音合成
规范+智能的值=字典
评估一种Fuzz方法的好坏要看它的结果。
- 漏洞
- UAF
- Double Free
OOB
- Bug
- 空指针引用
栈上溢
Event Handle
- Idea
- Fuzzing:rendering engine ->some state
- Set event handler: fuzzing and clear
- Fuzzing: fire event
Kind of race condiTon
- StateFuzzer
- CFlatMarkupPointer UAF
- CInput UAF
- CFrameSetSite CTreeNode UAF (CVE-2014-1769)
- CCaret Tracker UAF
CClipStack OOB Access (CVE-2014-1773)
Summary
Fuzzing = Programming + Specification reading + Vulnerabilities’ characteristic collecting + Ideas
Smashing The Browser:From Vulnerability Discovery To Exploit学习记录的更多相关文章
- elasticsearch Discovery 发现模块学习
发现模块和集群的形成 目标 发现节点 Master选举 组成集群,在Master信息发生变化时及时更新. 故障检测 细分为几个子模块 Discovery发现模块 Discover是在集群Master节 ...
- (转)zookeeper学习记录--附browser
转自:http://agapple.iteye.com/blog/1111377 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeep ...
- 一个浏览器Fuzzing框架的学习
一个浏览器Fuzzing框架的学习 关于框架 之前是LCatro师傅在小密圈分享的他写的这个Fuzzing框架(不过我以前翻github时好像就看到过),但是之前一直没啥时间搞这方面,这两天研究学习了 ...
- Android linux kernel privilege escalation vulnerability and exploit (CVE-2014-4322)
In this blog post we'll go over a Linux kernel privilege escalation vulnerability I discovered which ...
- Kingsoft Office Writer 2012 8.1.0.3385 - (.wps) Buffer Overflow Exploit (SEH)
#!/usr/bin/python # Exploit Title: Kingsoft Office Writer v2012 8.1.0.3385 .wps Buffer Overflow Expl ...
- An iOS zero-click radio proximity exploit odyssey
NOTE: This specific issue was fixed before the launch of Privacy-Preserving Contact Tracing in iOS 1 ...
- 自学Zabbix9.1 Network Discovery 网络发现原理
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.1 Network Discovery 网络发现原理 1. 网络发现简介 网络 ...
- (60)zabbix网络发现介绍Network Discovery
网络发现简介 网络发现有什么用?网络发现怎么配置? 我们带着这两个问题开始我们的网络发现之旅. 比如小明有100台服务器,不想一台台主机去添加,能不能让zabbix自动添加主机呢,当然可以,网络发现便 ...
- Web Application Penetration Testing Local File Inclusion (LFI) Testing Techniques
Web Application Penetration Testing Local File Inclusion (LFI) Testing Techniques Jan 04, 2017, Vers ...
随机推荐
- maven基础知识汇总
maven的dependency中scope=compile和provided的区别 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artif ...
- BOM之screen对象
前面的话 screen对象在javascript编程中,比较冷门,不太常用.screen对象用来表明客户端的能力,其中包括浏览器窗口外部的显示器的信息,如像素高度和宽度等.本文将详细介绍screen对 ...
- 一本通1633【例 3】Sumdiv
1633:[例 3]Sumdiv 时间限制: 1000 ms 内存限制: 524288 KB [题目描述] 原题来自:Romania OI 2002 求 ABAB 的所有约数之和 mo ...
- Exploring Pyramids UVALive - 3516 (记忆化DP)
题意:给定一个序列 问有多少棵树与之对应 题目连接:https://cn.vjudge.net/problem/UVALive-3516 对于这一序列 分两种2情况 当前分支 和 其它分支 用df ...
- 【题解】 bzoj2115: [Wc2011] Xor (线性基+dfs)
bzoj2115,戳我戳我 Solution: 看得题解(逃,我太菜了,想不出这种做法 那么丢个链接 Attention: 板子别写错了 又写错了这次 \(long long\)是左移63位,多了会溢 ...
- 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
前言 在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载. 解决 内置枚举转换器 MyBatis内置了两个枚举转换器分别是:org. ...
- 1.Unix,Linux起源与编译原理
一.UNIX操作系统 作者:丹尼斯.里奇,肯.汤普逊 版权:贝尔实验室 时间:1971 特点:多用户,多任务(多进程),多CPU(多种CPU架构),高安全,高可靠,高性能,高稳定 应用:构 ...
- vue axios的使用
详细可以看:https://www.kancloud.cn/yunye/axios/234845 这里介绍日常使用得比较多的get和post: import axios from 'axios' // ...
- Object类型的怎么判断空值
例如 Object result; 我直接这样是不行的 if(result==null) //这样是错的 ... 要这样判断 if(result == System.DBNull.Value) //这 ...
- [整理]WebAPI中应用oData
http://www.odata.org/ http://bitoftech.net/category/odata/ http://www.hanselman.com/blog/CreatingAnO ...