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项目编译运行时提示jdk版本过低问题解决方法
明明使用的是1.8jdk,但是运行项目时提示使用的是java版本是1.5,版本过低. 修改pom.xml,添加如下: <build> <plugins> <plugin& ...
- 【大数据】SparkSql学习笔记
第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和 DataSet,并且作为分布式 ...
- MT【107】立体几何中用阿波罗尼乌斯圆的一道题
分析:利用内外圆知识知道,B,C两点到 AD 的距离$\le4$. 利用体积公式$V=\frac{1}{3}S_{截面}|AD|\le2\sqrt{15}$
- KUR-Couriers
题目链接: QwQ Solution: 以权值为下标,对每个点建树 对于x点,以它为根的树涵盖的是1到x区间内每个数出现的次数 Code: #include<bits/stdc++.h> ...
- Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用
1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...
- 【BZOJ1303】[CQOI2009]中位数图(模拟)
[BZOJ1303][CQOI2009]中位数图(模拟) 题面 BZOJ 洛谷 题解 把大于\(b\)的数设为\(1\),小于\(b\)的数设为\(-1\).显然询问就是有多少个横跨了\(b\)这个数 ...
- 【BZOJ1047】[HAOI2007]理想的正方形(单调队列,动态规划)
[BZOJ1047][HAOI2007]理想的正方形(单调队列,动态规划) 题面 BZOJ 洛谷 题解 直接一个单调队列维护一下没给点和它前面的\(n\)个位置的最大值,再用一次单调队列维护连续\(n ...
- Linq查询条件里有可空字段比较时报错variable '<>h__TransparentIdentifier2' of type referenced from scope '', but it is not defined
当我运行下面的linq查询时报了这个错, 1: var result = (from so in svcContext.new_sales_orderSet 2: join soitem in s ...
- luogu4155/bzoj4444 国旗计划 (倍增)
成环,把每个区间变成两个然后展开成链 一个人的下一个人肯定是在彼此相交的基础上,右端点越大越好 于是就把它连到相交的.右端点最大的点上,连成一棵树 于是每次只要从某个节点开始,一直在树上跳到覆盖了一个 ...
- jedisClient操作redis实现增删改查功能
这个集群环境下和单机环境下: package com.taotao.sso.dao.impl; import org.springframework.beans.factory.annotation. ...