xss跨站攻击

XSS的简单介绍

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户目的。
XSS危害:

流量劫持
获取用户cookie信息,盗取账号
篡改、删除页面信息(钓鱼)
配合CSRF攻击,实施进一步攻击

XSS分类

反射型XSS:反射型XSS也被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,就造成XSS漏洞,这个过程就像一次反射,所以叫反射型XSS。
存储型XSS:存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这是存储型XSS。
DOM型:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom-xss是通过url传入参数去控制触发的。

xss的检测方法

1、工具扫描

可以使用APPscan、AWVS等工具进行扫描

2、手工测试

Burpsuite、firefox(hackbar)、XSSER XSSF

使用手工检测Web应用程序是否存在XSS漏洞时,最重要的是考虑那里有输入,输入的数据在什么地方输出。在进行手工检测XSS时,人毕竟不像软件那样不知疲惫,所以一定要选择有特殊意义的字符,这样可以快速测试是否存在XSS。

(1)在目标站点上找到输入点,比如查询接口,留言板等;

(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;

(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;

测试管理界面是否存在XSS
在用户名框中输入">(闭合input标签)
在这里插入图片描述
结果,界面弹窗,证明该系统存在XSS注入
在这里插入图片描述
上一步验证得出,该页面存在XSS漏洞。接下来针对该漏洞进行修改链接属性实现跳转到钓鱼界面

在username=后面加上"><a(修改忘记密码a标签的href,使其指向钓鱼网站)
在这里插入图片描述
点击忘记密码,进入钓鱼网站
存储型xss
cms文章管理系统的留言板存在xss漏洞,现在我们通过构造代码进行注入
在这里插入图片描述
模拟管理员登录改文章管理系统的后台进行浏览审核用户的留言,发现触发xss弹窗,查看源代码我们发现用户输入的信息被嵌入在了html里面被浏览器解析执行了。
在这里插入图片描述
当管理员审核通过之后,任何浏览到该留言内容的人都会同样解析执行我们注入的payload的。

JavaScript的使用

1、语法格式

<script>
[Javascript代码]
</script>

例如:

<!DOCTYPE html>
		<html>
			<head>
				<meta charset="utf-8">
				<title></title>
			</head>
			<body>
				<script type="text/javascript">
				alert('第一个javascript程序');
				</script>
			</body>
		</html>

1、xss常用的js标签
alert

alert()方法用于显示带有一条指定消息和一个确认按钮的警告框

window.location

window.location对象用于获得当前页面的地址(URL) ,并把浏览器重定向到新的页面

ocation.href

返回当前显示的文档的完整URL

onload

一张页面或一幅图像完成加载

onerror

在加载文档或图像时发生错误

onchange

HTML 元素改变

onclick

用户点击 HTML 元素

onmouseover

鼠标指针移动到指定的元素上时发生

onmouseout

用户从一个 HTML 元素上移开鼠标时发生

onkeydown

用户按下键盘按键

XSS漏洞防范

XSS的威力主要是取决于JavaScript能够实现的程度,XSS跨站脚本的形成原因是对输入输出没有严格过滤,导致在页面上可以执行JavaScript等客户端代码,所以只要将敏感字符过滤,就可以修复XSS跨站漏洞。
修复和防范方法:

1.在cookie中设置了HttpOnly属性,那么通过JavaScript脚本将无法读取到cookie信息,这样能一定程度上防止XSS攻击。

2.假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的cookie中的变量,HTTP请求头部中的变量等。

3.不仅验证数据的类型,还要验证其格式、长度、范围和内容

4.过滤“<” 、“>” 将用户输入放入引号间,基本实现数据与代码隔离;过滤双引号防止用户跨越许可的标记,添加自定义标记;过滤TAB和空格,防止关键字被拆分;过滤script关键字;过滤&#,防止HTML属性绕过检查。在客户端和服务器端同时做数据的验证与过滤。

5.对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值