XSS注入

XSS

什么是XSS?

​ XSS跨站脚本(Cross-Site Scripting,XSS)自1996年诞生以来,如今已经历十多年的演化。由于和另一种网页技术-层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防止混淆,故把原本的CSS简称为XSS

XSS特点:

1、能注入恶意的HTML/JavaScript代码到用户浏览的网页上,是因WEB应用程序对用户输入过滤不足而产生的,当用户浏览这些网页时,就会执行其中的恶意代码。

2、由于HTML代码和客户端JavaScript脚本能在受害者主机上的浏览器任意执行,这样等同于完全控制了WEB客户端的逻辑,在这个基础上,黑客可以轻易地发起Cookie窃取,会话劫持,钓鱼欺骗等各种各样的攻击

通常情况下,我们既可以把XSS理解成一种WEB应用安全漏洞,也可以理解成一种攻击手段。

xss攻击流程

1. 正常服务器信息

2. 服务器存储恶意代码

3. 用户浏览网页

4. 服务器将恶意代码返回给用户

5. 客户端浏览器执行恶意代码

反射型XSS

在这里插入图片描述

反射型XSS也被称为非持久性XSS,是现在最容易出现的一种XSS漏洞

当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

<?php
$username = $_GET['username'];
echo $username;
?>

在这段代码中,程序使用GET接收username值后再输出,
如果提交xss1.php?username=test,那么程序将输出test,
如果攻击者输入username=<script>alert(‘xss’)</script>,
将会造成反射型XSS漏洞。

反射型xss,是在URL中的,一种攻击者被动的方式,需要用户去主动点击该URL。构造了反射性xss,url会显得很臃肿很长,可以转换为短连接,或二维码等方式。

**Cookie:**保存在客户端的简单文本文件。记录当前客户端的个人信息。

xss检测,是否存在漏洞

在页面做弹出验证。

在有输入参数的地方输入

在这里插入图片描述


存储型 XSS

在这里插入图片描述


存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本

允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击,这就是存储型XSS


测试是否存在存储型XSS:

1、确定输入与输出点

2、输出点:内容显示在标签内,还是属性内

3、输出点在标签属性内:XSS代码将不被被执行。

持久型/存储型XSS:嵌入到web页面的恶意HTML会被存储到应用服务器端,简而言之就是会被存储到数据库,等用户在打开页面时,会继续执行恶意代码,能够持续的攻击用户;

DOM型XSS

DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞

DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分

客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。

DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等

在这里插入图片描述

DOM就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。然后通过Js去对网页进行修改,变化执行

常用DOM属性

在这里插入图片描述

document.cookie    读取当前网页的Cookie 			[xss必备]
document.lastModified   获得当前页面的最后修改时间		[识别伪静态必备]
document.write    向文档中写文HTML或者JS代码		[Dom xss常见的存在方式]
innerHTML:
	document.getElementByid("test").innerHTML="HI <b>"+url.substring()
	
eval:把字符串当代码执行

<script>
 var a=location.hash.substr(1);
 eval(a);
 //这里是获取锚点后的值,然后 放入eval
</script>
	
Document	# 网页中的元素
Location		#URL
Window		#窗口


dom 与 反射式与存储区别:

1、dom不经过后端

2、反射型经过后端

3、存储型是持久的,反射型不是,存储型也经过后端

同源

同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能都可能会受到影响

同源策略规定了不同源的客户端脚本在没有明确授权的情况下,不能读取对象的资源

同源:同协议、同域名/IP、同端口,三者相同即为同源

同源:

http://a.com/a

http://a.com/b

不同源:

https://a.com/a

http://a.com/a


xss防护

输入验证:
  对用户提交的数据进行有效验证,仅接受指定长度范围内,采用适当格式的内容提交,阻止或忽略初次之外的其他任何数据
  输入是否仅仅包含合法的字符
  输入的字符串是否超过最大长度的限制
  输入如果为数字,数字是否在指定的范围内
  输入是否符合特定要求,例如:邮箱、电话号码、IP地址等

输入与输出中的过滤
黑名单与白名单
WEB安全编码规范
HttpOnly cookie

输出编码
对输出的数据进行编码,如HTML编码,就是让可能造成危害的信息变成无害

总的原则:输入做过滤,输出做转义

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值