Web渗透|一篇文章搞懂XSS跨站脚本攻击
【Web渗透|一篇文章搞懂XSS跨站脚本攻击】
文章目录
- 0x00 XSS跨站脚本概要
- 1、什么是XSS跨站脚本漏洞?
- 2、XSS攻击流程
- 3、恶意脚本的形式
- 4、XSS危害检验概括
- 0x01 XSS跨站脚本分类
- 1、反射型XSS
- 1.1反射型XSS概述
- 1.2反射型XSS的流程
- 2、存储型XSS
- 2.1 存储型XSS概述
- 2.2存储型XSS攻击流程
- DOM型XSS
- 0x02 检测XSS漏洞
- 1、手工检测
- 2、工具检测
- 3、检测思路
- 0x03 漏洞利用
- **演示视频传送门**
- 0x04 漏洞防御
0x00 XSS跨站脚本概要 1、什么是XSS跨站脚本漏洞? XSS跨站脚本(Cross-Site Scripting,XSS)自1996年诞生以来,如今已经历十多年的演化。由于和另一种网页技术-层叠样式表(Cascading Style Sheets,CSS)的缩写一样,为了防止混淆,故把原本的CSS简称为XSS。在各种WEB应用安全漏洞中,XSS跨站脚本攻击漏洞一直被OWASP(Open Web Application Security Project)组织评为十大应用安全中的其中之一。【参考OWASP TOP 10:2007年A2 / 2010年A2 / 2013年A3】
XSS最大的特点就是能注入恶意的HTML/JavaScript代码到用户浏览的网页上,是因WEB应用程序对用户输入过滤不足而产生的,当用户浏览这些网页时,就会执行其中的恶意代码。由于HTML代码和客户端JavaScript脚本能在受害者主机上的浏览器任意执行,这样等同于完全控制了WEB客户端的逻辑,在这个基础上,黑客可以轻易地发起Cookie窃取,会话劫持,钓鱼欺骗等各种各样的攻击。
通常情况下,我们既可以把XSS理解成一种WEB应用安全漏洞,也可以理解成一种攻击手段。
2、XSS攻击流程
文章图片
3、恶意脚本的形式 利用XSS弹警告框:
>alert(‘xss’)
获取cookie值:
>alert(document.cookie)
嵌入其他网站:
XSS输入也可能是HTML代码段,如使网页不停刷新:
4、XSS危害检验概括
- 网络钓鱼,包括盗取各类用户账号
- 窃取用户cookie资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
- 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账,强制发表日志,发送电子邮件等
- 强制弹出广告页面,刷流量等
- 网页挂马
- 进行恶意操作,例如任意篡改页面信息,删除文章等
- 进行大量的客户端攻击,如DDOS攻击
- 获取客户端信息,例如用户的浏览历史,真实ip,开放端口等
- 控制受害者机器向其他网站发起攻击
- 结合其他漏洞进一步扩大攻击
- 提升用户权限,包括进一步渗透网站
- 传播XSS跨站脚本蠕虫等
反射型XSS也被称为非持久性XSS,是现在最容易出现的一种XSS漏洞。当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。
例子:
在这段代码中,程序接收username值后再输出,如果提交xss1.php?username=test,那么程序将输出test,如果攻击者输入username=,将会造成反射型XSS漏洞。
1.2反射型XSS的流程
文章图片
2、存储型XSS 2.1 存储型XSS概述
存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本。允许用户存储数据的WEB应用程序都可能会出现存储型XSS漏洞,当攻击者提交一段XSS代码后,被服务器端接收并存储,当再次访问页面时,这段XSS代码被程序读取响应给浏览器,造成XSS跨站攻击,这就是存储型XSS。
在测试是否存在XSS时,首先要确定输入点与输出点,例如:我们要在留言内容上测试XSS漏洞,首先就要去寻找留言内容输出(显示)的地方是在标签内还是标签属性内,或者在其他地方,如果输出的数据在属性内,那么XSS是不会被执行的。
2.2存储型XSS攻击流程
文章图片
DOM型XSS 0x02 检测XSS漏洞 1、手工检测 使用手工检测WEB应用程序是否存在XSS漏洞时,最重要的是考虑哪里有输入、输入的数据在什么地方输出。
1.可得知输出的位置
输入一些敏感字符,例如”、’、<、>、(、)等,在提交请求后查看HTML源代码,看这些输入的字符是否被转义。
2.无法得知输出位置
很多WEB应用程序源代码是不对外公开的,这时在测试XSS时就有可能无法得知输入数据到底在哪里显示。比如,测试留言本,留言之后要经过审核才显示,这时候就无法得知输入的数据在后台管理页面是何种状态。
通常可以采用””/>XSS来测试。
2、工具检测
Appscan
AWVS
BurpSuite
3、检测思路
提交正常数据,使用firebug,chrome的调试等工具跟踪提交数据的标签,如果显示区域不在HTML属性内,则可以直接使用XSS代码注入。如果说不能得知内容输出的具体位置,则可以使用模糊测试。
无论存储型XSS,还是反射型XSS。本质问题就是让对方浏览器执行你插入的JavaScript!
0x03 漏洞利用 盗取cookie,登录账号的场景演示
假如http://test.com/xss1.php存在XSS反射型跨站漏洞,那么攻击者的步骤可能如下。
- test1是网站test.com的用户,此时正在登录的状态中。
- 攻击者发现http://test.com/xss1.php存在XSS反射型跨站漏洞,然后精心构造JavaScript代码,此段代码可以窃取用户的cookie。
- 攻击者将带有反射型XSS漏洞的URL通过站内信息发送给用户test1,使用各种诱导的方式让用户test1去打开链接。
- 如果用户test1打开了带有XSS漏洞的URL,那么就会把自己的cookie发送到攻击者中。
- 攻击者接受到用户test1的会话cookie,就可以直接利用cookie以test1的身份登录test.com网站中。
演示视频传送门 0x04 漏洞防御 输入与输出中的过滤
黑名单与白名单
WEB安全编码规范
HttpOnly cookie
推荐阅读
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 由伐木工引发的陈述
- 随笔一篇
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- 我为什么写不出一篇读书分享稿()
- 2018-06-29|2018-06-29 这是我的第一篇文章 markdown
- spring|spring boot项目启动websocket
- 《如何写出一篇好文章》之赠送礼物的训练
- 为了女儿,我尝试画画——DIY绘本之《一支铅笔的梦想》(绘画小白的第一篇作品)
- OC:|OC: WKWebView详解