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 ...
随机推荐
- 动态sql防止报错的写法 当判断语句都是null时候会报错 需要手动添加一个判断语句 一般id都会存在
- [代码]--db2中left()函数和right()函数对应oracle中的substr()函数
DB2 LEFT.RIGHT函数 语法:LEFT(ARG,LENGTH).RIGHT(ARG,LENGTH) LEFT.RIGHT函数返回ARG最左边.右边的LENGTH个字符串,ARG可以是CHA ...
- Allowed Letters CodeForces - 1009G(状压思维)
题意: 给出一个字符串 给出几个定点必须是哪个字母(或者是几个字母中的一个) 然后求在满足所有定点后的最小字符串 解析: 没错 这题是暴力 用状压暴力 “a - f” 用”0 - 5“ 这几个数字代 ...
- 浅入 dancing links x(舞蹈链算法)
abastract:利用dancing links 解决精确覆盖问题,例如数独,n皇后问题:以及重复覆盖问题. 要学习dacning links 算法,首先要先了解该算法适用的问题,精确覆盖问题和重复 ...
- 【BZOJ4260】Codechef REBXOR (Trie树)
[BZOJ4260]Codechef REBXOR (Trie树) 题面 BZOJ 题解 两眼题.第一眼不会做,第二眼好简单... 前缀异或和一下,拿\(Trie\)树维护求一个在这个端点以左的最大值 ...
- 解题:HNOI 2014 世界树
题面 首先建虚树 DFS求虚树上每个点所属的点和到它所属点的距离,然后在=考虑虚树所有的边(对应原树一条链).如果两个端点所属节点不同就倍增出分界点统计答案,否则不用管(之后会统计到的):注意根节点特 ...
- Eclipse中创建java类的时候自动设置作者信息和创建时间
window—>preferences—>Java—>Code Stype—>Code Templates Code—>New Java files 点击Edit ${f ...
- ubuntu,centor 安装apache bench
ab全称为:apache bench. 是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试.比如nginx.to ...
- webpack打包提取css到独立文件
将本来镶嵌在bundle.js的css转到外面来,我们需要用到一个插件:extract-text-webpack-plugin 使用方法: 1.安装 npm i extract-text-webpac ...
- 鸟哥的Linux私房菜——第十章
视频链接 土豆网:http://www.tudou.com/programs/view/YI5fpob0Wwk B站(推荐):http://www.bilibili.com/video/av98064 ...