整站分析:操作系统 Web容器,用什么数据库搭建的。例如根据该数据库的特点或者缺陷进行渗透测试。
浏览器安全测试
? 作为浏览器厂商竞争的底牌。Google在安全方面目前比较有优势。
1.同源策略
协议(http)、域名、端口(没有指明就是80端口)、子域名 一样属于同源。
1.1意义
限制不同源的脚本对当前网站进行修改,防止两个网站之间互相干扰。避免掐架。不同源"document"不能访问、
1.2目的
? 保护用户信息安全,比如用户登录银行网站,又去访问其他网站。其他网站只能使用自己的cookie,不能访问银行网站的cookie。
1.3注意
a.com通过以下代码
<script src = http://b.com/b.js></script>
加载了b.com上的b.js,但是b.js是运行在a.com页面中的,因此对于当前打开的页面(a.com)来说,b.js的Origin就应该是a.com而非b.com
? 浏览器哪些标签可以跨域加载资源?
? < script> <img> <iframe> < link> 等标签可以加载跨域资源。不受同源策略的限制。但浏览器会限制脚本发起的跨域请求。
? 那些会受到限制?
? DOM、Cookie。XMLHttpRequest
? 第三方插件也有控制策略:
? Flash、JavaApplet(嵌入到网页中java编写),主要通过目标网站提供的crossdomain.xml判断是否允许当前源的Flash跨域访问目标资源。
<cross-domain-policy>
子节点 允许从哪里访问
<allow-access-from domain=“*.qq.com”/> 允许qq下的可以访问b网站
<allow-access-from domain=“*.gtimg.com”/>
</ cross-domain-policy >
site-control 也是子节点
如果别的目录也有相同文件,这个节点下有不同的值。如果是none,任何源不许访问。
all任何文件可以访问。这样上传目录也可以访问
攻击者可以通过上传crossdomain.xml 来控制flash,flash9以后通过MINE来判断xml是否合法,会检查是否在根目录下。
?
? Silverlight(微软的快浏览器插件交互式应用)、
? Google Gears(浏览器拓展插件,可以让脚本访问本地缓存)
? 同源策略也会有漏洞。
2.浏览器沙箱
? 挂马:在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式,被称为“挂马”。
? 沙箱:资源隔离类模块。
2.2设计目的
? 让不可信的代码运行在隔离区中,限制访问隔离区外的资源。
? 如果要交换数据,只能通过指定的数据通道。
2.3多进程架构
? 将浏览器的各个功能模块分开,各个浏览器实例分开,一个进程崩溃不会影响其他。
? Chrome第一个采用多进程架构:浏览器进程、渲染进程、插件进程、拓展进程等。(互相隔离,通过特定API通讯)
? 如flash,java,pdf相互隔离。
2.4好处
? 崩溃只影响一个页面。
? 但也不一定安全,(flash\pdf\java)第三方插件出现安全漏洞,也会成为攻击热点。
三.恶意网站拦截
1.别的威胁
? 钓鱼网站(浏览器要提示危险)、诈骗网站。目前拦截功能是基于“黑名单”。访问浏览器的服务端上的“黑名单”。
? 挂马网站:携带恶意脚本。
? 浏览器会与专业安全厂商合作,由安全厂商提供黑名单。Google和微软由自己的安全团队。
? EVSSL证书,在地址栏显示绿色。让消费者确信网站安全。
跨站脚本(XSS)漏洞
1.介绍
XSS 跨站脚本攻击,最常见的Web应用程序漏洞之一。通常由JS编写,XSS带有恶意代码。可以盗取cookie,黑掉页面,导航到恶意网站。
? 蠕虫:攻击者发布一个带有恶意代码的链接,用户点击后自动关注一个用户,并自动发微博和私信好友恶意链接。传播速度很快。
? 阎罗王病毒:也是一种蠕虫病毒,用JS编写,向雅虎邮箱发送邮件,只要用户打开邮件,电脑会被感染。(其他病毒打开附件才会感染)感染后自动向其他人发邮件。
?
2.xss原理
? 在一个有xss漏洞的网站让这个代码执行就可以了。如果网站没有过滤,那么用户可以输入这个代码。实现攻击。
'><script>alert('XSS')</script>
2.1反射性XSS
? 非持久型、参数型跨站脚本,这类型的脚本最常见的,也是使用最为广泛的一种。可以将恶意的脚本附加到URL地址的参数 例如:
http://www.xxcc.com/search.php?key=“><script>alert(“xss”)</script>
? 一般使用将构造好的URL发给受害者,使受害者点击触发,而且只执行一次,非持久化或者将恶意脚本附加到带参数的输出函数中
<html>
<body>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XSS</title>
</head>
<form action="" method="get">
<input type="text" name="input">
<input type="submit">
</form>
<br>
<?php
$XssReflex = $_GET['input'];
echo 'output:<br>'.$XssReflex;
?>
</body>
</html>
输入:1,hello,<script>alert('xss')</script>
2.2存储型XSS
? 什么是存储型XSS?
? 存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。当用户提交一段XSS代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击。
? 存储型XSS与反射型XSS、DOM型XSS相比,具有更高的隐蔽性,危害性也更大。反射型XSS、DOM型XSS执行必须依靠用户手动去触发,而存储型XSS却不需要。
? 允许用户存储数据的Web应用程序都可能会出现存储型XSS漏洞。
2.3DOM XSS
? DOM :Document Object Model,文档对象模型 ? DOM通常用于代表在HTML、XHTML和XML中的对象。使用DOM可以允许程序和脚本动态地访问和更新文档的内容、结构和样式。 ? DOM XSS 通过JavaScript修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
为什么很多输入的代码要带 ‘ ,这个是脚本注入点。是为了闭合HTML文件中操作的单引号。
3.XSS脚本注入点
? 进行XSS脚本注入时,在不同的注入点进行注入,会产生不同的结果。
对于大多数HTML标签而言,如果插入点就在标签之间,那么是可以直接运行js脚本的,如<div>标签。
对于<title>、<iframe>、<noscript>、<noframes>等标签,会对标签之间的内容进行htmlencode编码,需要闭合标签。
插入点在value值内,如<input type=“text” value=“[输出]”>,需要让js代码跳出value值,并且想办法执行
<title>
<script>alert(1)</script>
</title> 这个不会执行脚本内容
<title></title>
<script>alert(1)</script>
</title>这个可以执行alert
当type类型在前,且为hidden型时,就无法使用onmouseover方法了,可以使用关闭标签的方法。如:
<input type="hidden" value=""><script>alert(1)</script>"
当type类型在value后,为hidden时,HTML代码有一个特性,当标签中存在两个type属性时,第二个type属性就会失效,因此我们只要插入一个type="text",问题就容易解决了。
<input value="" onmouseover=alert(1) type="text" type="hidden">第二个type属性失效,
利用这一点输入: " οnmοuseοver=alert(1) type="text
<input value=""/><script>alert(1)</script>" type="hidden">
4.检测 XSS
手工检测输入< > ’
和全自动检测 借助工具
awvs netsparke appscan burpsuit
5.XSS漏洞防范
? XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤,在页面执行JavaScript等客户端脚本,这就意味着只要将敏感字符过滤,即可修补XSS跨站漏洞。
=“hidden”>
## 4.检测 XSS
手工检测输入< > '
和全自动检测 借助工具
awvs
netsparke
appscan
burpsuit
## 5.**XSS**漏洞防范
? XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤,在页面执行JavaScript等客户端脚本,这就意味着只要将敏感字符过滤,即可修补XSS跨站漏洞。
|