第一章 我的安全世界观

安全是一个持续过程

6种威胁:Spoofing(伪装)、Tampering(篡改)、Repudiation(抵赖)、InformationDisclosure(信息泄漏)、Denial of Service(拒绝服务)、Elevation of Privilege(提升权限)

一个优秀的安全方案需要:

有效解决问题

用户体验良好

高性能

低耦合

易于升级和扩展

安全策略

Secure by Default原则(最小权限原则):白名单可通过和禁止黑名单,前者限制的范围更大更安全

Defense in Depth原则(纵深防御):在各个方面,各个深度形成整体进行有效防御

数据与代码分离原则:应当注意代码与数据的边界,将用户数据当作代码执行导致安全问题发生

第二章 浏览器安全

同源策略:限制来自不同源的"document",对当前"document"读取或设置某些属性

浏览器提出了"Origin(源)"的概念,影响“源”的因素有:host(域名或IP地址,如果是IP地址则看作一个根域名)、子域名、端口、协议,在浏览器中<script>、<img>、<iframe>、<link>等标签可以跨域加载资源,不受同源策略限制,这些带"src"属性的标签加载时,实际上是由浏览器发起一次GET请求,不同于XMLHttpRequest,通过src属性加载的资源,浏览器限制了JavaScript权限,使其不能读、写其中返回的内容

对于浏览器来说,除了DOM、Cookie、XMLHttpRequest受到同源策略限制以外,一些加载的第三方插件Flash、Google Gears等都有自己的控制策略

浏览器采取多进程构架,Google Chrome将主要进程分为浏览器进程、渲染进程、插件进程、扩展进程,各个进程相互隔离,互不影响

IE8也采取了多进程构架,每一个Tab页即一个进程

Sandbox即沙箱,现今泛指“资源隔离类模块”的代名词,Sandbox设计目的是为了让不可信的代码运行在一定的环境中,限制代码访问隔离区之外的代码,或者是通过一定的数据通道(封装的API)

多进程构架相对于单进程构架的好处在于发生崩溃时,其他进程不会受到影响

恶意网址拦截:浏览器周期性地从服务器端获取恶意网址名单,访问这些网址时弹出一个警告页面

第三章 跨站脚本攻击(XSS)

跨站脚本攻击,全称Cross Site Script,为了区别于CSS(Cascading Style Sheet),称为XSS

XSS根据效果不同,可以分为以下几类

反射型XSS:只是简单地把用户输入的数据“反射”给浏览器,黑客往往需要诱使用户“点击”一个恶意链接才能攻击成功,也称作“非持久型XSS”

存储型XSS:把用户输入的数据“存储”在服务器端,具有很强的稳定性,比如一篇博客里包含恶意代码,所有访问该博客的用户都会在浏览器中执行这段恶意代码,也称“持久型XSS”

DOM Based XSS:这种类型并非按照“数据是否保存在服务器端”来划分,它从效果来说也是反射型XSS,通过修改页面的DOM节点形成的XSS(通过闭合之前的标签,//注释掉之后的内容,中间插入<script>)

XSS攻击进阶

攻击者对页面植入恶意脚本,这些恶意脚本被称为“XSS Payload”,常见的XSS Payload就是通过读取浏览器的Cookie对象,发起“Cookie劫持”攻击,Cookie一般加密保存了当前用户的登陆凭证,攻击者可以不通过密码直接登陆用户账户,在后面的章节讲Cookie防御

构造GET与POST请求:假设Sohu博客所在域的某页面存在XSS漏洞,可以通过一张图片发起一个GET请求

var img=document.createElement("img");

img.src="http://blog.sohu.com/manage/entry.do?m=delete&id=156713012";

document.body.appendChild(img);

只要让博客作者执行这段JavaScript代码就可以把这篇文章删除

XSS代码还可以模拟浏览器发送GET、POST请求

例如获取QQ邮箱sid编码后模拟浏览器请求

识别用户端信息

在IE中可以通过判断ActiveX控件的classid是否存在来推测用户是否安装了该软件,然后选择对应的浏览器漏洞植入木马(下例检测是否安装了迅雷软件)

第三方软件可能会泄漏一些信息,比如Flash有一个system.capabilities对象,能够查询客户端电脑中的硬件信息

Firefox的插件(Plugins)列表存放在一个DOM对象中,通过查询DOM可以遍历出所有的插件navigator.plugins对象

获取用户IP:JavaScript本身没有获取本地IP地址的能力,XSS可以借助第三方软件来完成,比如客户端安装了Java环境,XSS就可以通过调用Java Applet的接口获取客户端的本地IP地址

有安全研究者将XSS Payload功能封装起来,成为XSS攻击平台,主要目的在于演示XSS的危害

Attack API

BeEF

XSS-Proxy

终极武器:XSS Worm

2005年,19岁的Samy Kamkar发起了对MySpace.com的XSS Worm攻击,当时的MySpace过滤了很多危险的HTML标签,只保留了<a><img><div>等安全标签,所有的事件如“onclick”也被过滤了,却允许CSS,如

<div style="background:url('javascript:alert(1)')">

通过拆分法避开JavaScript的敏感词

一般来说,存在储存型的XSS,比较容易发起XSS Worm攻击

白帽子讲Web安全1.pdf的更多相关文章

  1. 白帽子讲Web安全2.pdf

    XSS构造技巧 利用字符编码: var redirectUrl="\";alert(/XSS/);"; 本身没有XSS漏洞,但由于返回页面是GBK/GB2312编码的“% ...

  2. 《白帽子讲Web安全》- 学习笔记

    一.为何要了解Web安全 最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前辈们全都跑路了). ...

  3. 读>>>>白帽子讲Web安全<<<<摘要→我推荐的一本书→1

      <白帽子讲Web安全>吴翰清著 刚开始看这本书就被这本书吸引,感觉挺不错,给大家推荐下,最近读这本书,感觉不错的精华就记录下, 俗话说>>>好脑袋不如一个烂笔头< ...

  4. 白帽子讲web安全——认证与会话管理

    在看白帽子讲web安全,刚好看到认证与会话管理:也就是我们在平常渗透测试中遇到最多的登录页面,也即是用户名和密码认证方式,这是最常见的认证方式. 了解两个概念:认证和授权 1):认证的目的是为了认出用 ...

  5. 白帽子讲web安全读后感

    又是厚厚的一本书,为了不弄虚做假,只得变更计划,这一次调整为读前三章,安全世界观,浏览器安全和xss.其它待用到时再专门深入学习. 吴翰清是本书作者,icon是一个刺字,圈内人称道哥.曾供职于阿里,后 ...

  6. 白帽子讲web安全——一个安全解决方案的诞生细节

    1.白帽子:做安全的人.主要做的事,防御,是制定一套解决攻击的方案.而不是只是解决某个漏洞. 2.黑帽子:现在说的黑客.让web变的不安全的人.利用漏洞获取特权.主要做的事,攻击,组合各种方法利用漏洞 ...

  7. 读书笔记——吴翰清《白帽子讲Web安全》

    目录 第一篇 世界观安全 一 我的安全世界观 第二篇 客户端脚本安全 一 浏览器安全二 跨站脚本攻击(XSS)三 跨站点请求伪造(CSRF)四 点击劫持(ClickJacking)五 HTML5 安全 ...

  8. 白帽子讲web安全——白帽子兵法(设计安全方案中的技巧)

    1.Secure By Default原则 白名单:筛选出被允许的,屏蔽其他. 黑名单:屏蔽可能造成的威胁. 2.XSS和SSH XSS攻击:跨站脚本(cross site script)攻击是指恶意 ...

  9. 《白帽子讲web安全》——吴瀚清 阅读笔记

    浏览器安全 同源策略:浏览器的同源策略限制了不同来源的“document”或脚本,对当前的“document”读取或设置某些属性.是浏览器安全的基础,即限制不同域的网址脚本交互     <scr ...

随机推荐

  1. VS2010配置目录,解决:error MSB6006: “CL.exe”已退出,代码为 5问题

    配置属性->VC++目录 可执行文件目录:$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;$ ...

  2. 检查mysql数据库是否存在坏表脚本

    #!/bin/bash #此脚本的主要用途是检测mysql服务器上所有的db或者单独db中的坏表 #变量说明 pass mysql账户口令 name mysql账号名称 data_path mysql ...

  3. (转) sphinx 高亮显示搜索词

    http://hi.baidu.com/tewuapple/item/7a7bc34adbda24a8df2a9fe5  (转)

  4. 23种设计模式全解析 (java版本)

    转自:http://blog.csdn.net/longyulu/article/details/9159589 其中PHP常用的五种设计模式分别为:工厂模式,单例模式,观察者模式,策略模式,命令模式 ...

  5. php提取背景图片

    preg_match_all('/background\s*-\s*+image\s*:\s*url\s*\("*([^"]*)"*\)/i', $content,$ma ...

  6. 【WPF】布局控件总结

    <Canvas>:画布,默认不会自动裁减超出内容,即溢出的内容会显示在Canvas外面,这是因为默认 ClipToBounds="False":可设置ClipToBou ...

  7. [简历] JAVA 软件工程师

    首先,一份好的简历不光说明事实,更通过FAB模式来增强其说服力. Feature:是什么 Advantage:比别人好在哪些地方 Benefit:如果雇佣你,招聘方会得到什么好处 其次,写简历和写议论 ...

  8. 第一个CUDA程序

    开始学CUDA 先写一个简单的 #include<iostream>__global__ void add( int a, int b, int *c ) { *c = a + b;}in ...

  9. bzoj3677: [Apio2014]连珠线

    Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色.游戏 开始时,只有1个珠子,而接下来新的 ...

  10. Android 自定义RadioButton实现

    由于使用小米系统MIUI运行是RadioButton样式跟google Android API自定义的不一样,则我们可以定义任何想要的东东.没有做不到,只有想不到 Android 自定义RadioBu ...