《白帽子讲Web安全》笔记1-5章
第1章 安全世界观
研究系统和网络的人=Hacker
黑客使用的漏洞利用代码=exploit
没有动手能力的黑客=Script Kids
SQL注入的出现是Web安全史上的一个里程碑 1999年出现
XSS(跨站脚本攻击)1999年出现 2003重视
安全问题的本质是信任
安全是一个持续的过程
安全三要素:CIA(C:机密性 Confidentiality)(I:完整性 Integrity)(A:可行性 Availability)
C:加密数据
I:数字签名
A:随需而得
拒接服务攻击 DoS(Denial of Service) DoS破坏了安全的可行性
互联网安全的核心问题,是数据安全的问题。
安全评估过程
1.资产等级划分
目标是什么,要保护什么。
2.威胁分析
可能造成的危害来源=威胁(Threat)
把所有的威胁都找出来。
STRIDE模型(威胁建模)
威胁 | 定义 | 对应的安全属性 |
---|---|---|
Spoofing(伪装) | 冒充他人身份 | 认真 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service(拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
3.风险分析
可能会出现的损失=风险(Risk)
Risk = Probability(可能性) * Damage Potential(潜在损害)
DREAD模型
方面 | 高(3) | 中(2) | 低(1) |
---|---|---|---|
Damage Potential(潜在的损害) | 获取最高权限 | 泄露敏感信息 | 泄露其他信息 |
Reproducibility(重现性) | 随意多次攻击 | 重复攻击,有时间限制 | 很难重复攻击 |
Exploitability(可利用性) | 短时间掌握攻击方法 | 熟练攻击才能完成 | 漏洞利用条件非常苛刻 |
Affected users(受影响的用户) | 所有用户、默认配置 | 部分用户、非默认配置 | 匿名用户 |
Discoverability(可发现性) | 漏洞明显、容易攻击 | 私有区域部分人看到 | 发现漏洞极难 |
高危(12-15)中危(8-11)低危(0-7)
4.确认解决方案
优秀的安全方案特点
有效解决问题
用户体验好
高性能
低耦合
易于扩展与升级
Secure By Default(默认安全)
类似于白名单
Defense in Depth(纵深防御)
多种不同的防御措施
深入威胁本质,做出正确的应对措施
第2章 浏览器安全
安全策略:同源策略(Same Origin Policy) 所有支持JS的浏览器
Web是构建在同源策略基础之上
所谓同源是指,域名,协议,端口相同。
不同源则拒绝请求
第3章 XSS攻击
跨站脚本攻击(Cross Site Script)
反射型XSS
非持久性XSS Non - persistent XSS
把用户输入的数据反射给浏览器,
如:黑客诱使用户点击一个恶意链接,才能攻击成功
存储型XSS
持久性XSS Persistent XSS
把用户输入的数据储存在服务器
如:发布一篇带js代码的博客文章,所有访问改博文的用户都会在他们的浏览器执行该js
DOM Based XSS
通过修改DOM节点形成XSS
类似SQL注入,标签+JS注入
如:<a href=“+str+”>test</a> str=’ onclick=alert(/test/) //
XSS Payload
Cookie劫持
构造GET与POST请求
GET 直接链接
POST JS生成form表单提交
也可以使用Charles工具修改form内容测试XSS
XSS钓鱼
伪造网页骗取用户信息
XSS攻击平台
Attack API 有多种获取用户隐私信息的JS API
BeEF+ metasploit 测试浏览器漏洞框架 可以控制被攻击者的浏览器 进行任意操作(待研究)
XSS-Proxy(代理)
一个轻量级的XSS攻击平台,实现远程控制被攻击的浏览器
XSS Worm(蠕虫)
利用服务器端软件漏洞进行传播(例:Samy Worm)
攻击条件:用户之间发生交互行为的页面,如果存在存储型XSS,则比较容易发生XSS Worm攻击。
自己理解:通过恶意地址抓取用户cookie然后利用cookie传播恶意地址。
技术:JS,模拟请求接口
回旋镖:B域存在反射型XSS_B,A域存在储存XSS_A,当用户访问A时同时嵌入B,则可以达到A跳转B,让XSS_B攻击用户目的。
Flash XSS
嵌入ActionScript脚本
限制Flash动态脚本的重要参数是allowScriptAccess,这个参数定义了Flash能否与HTML页面进行通信,它有三个值:
always:不限制
sameDomain:只允许本域的Flash与HTML通信,默认值
never:禁止通信
XSS防御
HttpOnly
浏览器将禁止页面的JavaScript访问中带有HttpOnly属性的Cookie。
XSS 格式过滤
XSS的本质是一种“HTML注入”,用户的数据被当成了HTML代码一部分来执行,从而混淆了原本的语义,产生了新的语义。
防御方法
XSS Filter:
html
HTMLEntitites
js
JavascriptEncode
css
encodeForCss()
url
URLEncode
以上方法都属于OWASP ESAPI的方法
第4章 CSRF
Cross Site Request Forgery 跨站点请求伪造
会受到浏览器的影响。
P3P Header 是W3C置顶的一项关于隐私的标准。
如果浏览器http头包含P3P头,则允许发送第三方Cookie。
js模拟GET和POST请求。
CSRF本质
CSRF为什么能够攻击成功?
其本质原因是重要的操作的所有参数都是可以被攻击者猜测到的。
CSRF防御
验证码
Referee Check
ToKen(不可预测性原则:保密性、随机性)
CSRF攻击是攻击者利用用户身份操作用户账户的一种攻击方式。设计CSRF的防御按必须先理解CSRF攻击的原理和本质。
第5章 点击劫持(ClickJacking)
案例:(一个透明的iframe遮罩住一个正常的btn,让用户点击btn的时候点击到透明的iframe)
ClickJacking的本质
点击劫持攻击与CSRF攻击有异曲同工之妙都是在用户不知情的情况下诱使用户完成一些动作。但是在CSRF攻击的过程中,如果出现用户交互的页面就无法顺利完成。但是点击劫持却没有这个顾虑,它利用的就是用户产生的交互。
点击劫持本质是一种视觉欺骗。
防止ClickJacking
1.禁止跨域iframe
js:
if(top.location != self.location){
parent.location = self.location;
}
2.设置X-Frame-Options(HTTP头设置)
三个可选值:
DENY(拒绝当前页加载frame页面)
SAMEORIGIN(frame只能为同域名下面的页面)
ALLOW-FROM origin(无限制)
Firefox的设置
Content Security Policy
NoScript
ClickJacking攻击有可能被攻击者利用在钓鱼、诈骗和广告作弊等方面。
学无止境=》 Web安全学习系列(2)