大家好,又见面了,我是你们的朋友全栈君。
什么是XSS攻击:
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制–例如同源策略(same origin policy)。这种类型的漏洞由于被黑客用来编写危害性更大的网络钓鱼(Phishing)攻击而变得广为人知。
XSS分类:
类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
(也就是web开发人员在编写网页脚本时无意间造成的错误)
类型B,反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。
(简单解释一下大致意思,当用户在网站的地址栏输入URL,从服务器端获取到数据时,网站页面会根据返回的信息而呈现不同的返回页面,如果这个时候恶意用户在页面中输入的数据不经过验证且不经过超文本标记语言的编码就录入到脚本中,就会产生漏洞)
类型C,存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。这种类型的漏洞 可以使恶意用户将javascrip永久性的存储在数据库中。
XSS攻击流程大致如下:
1,发现存在webXSS漏洞web,
2,恶意用户通过该漏洞将javascrip插入到该web的脚本中,等待或欺骗新用户去访问。当用户打开此含有XSS漏洞的页面,脚本运行。如果这个代码是用来获取用户的个人信息,就返回一个信息输入页面,当用户将个人用户信息输入后,当窃取到用户信息后,将该信息发送到恶意用户自行搭建的获取信息的接口。
XSS漏洞形成原因:
介绍完了XSS漏洞的基本含义。作为测试漏洞是否存在的一方,当然要知道如何去寻找漏洞。
1。首先寻找漏洞输入点,一般在客户端界面显示为留言板或查询接口等。
2。当找到这样类似的漏洞输入点后,并不急于去构造相应的payload,而是通过输入一组字符外加一个特殊的识别符(可以是数字组合),提交后查看返回的源码,看是否服务器端做出了上述所说的处理即是否从客户端提交的数据有做相应的过滤或对返回的数据做相应的代码转译。而特殊的识别符就是观察点。如果输入的识别符被原封不动的返回,就说明有很大的几率存在XSS漏洞。
3。最后,根据输出点所在的html译文或者javascrip代码的上下文去构造闭合,最后构造payload、
开始渗透演示,首先当然是要找到一个存在XSS漏洞的网页。以下的演示为渗透练习平台上的演示。
首先检查输入端口是否存在XSS漏洞,主要是为了从返回查看输入是否被过滤掉
返回
从返回提示看不出任何信息,所以查看页面代码,然后control+F后在弹出的搜索框里输入刚刚我们输入的特殊提示符‘6666’
有上图可知,上面的提示符没有经过任何处理直接返回了。是否这里就存在漏洞呢,尝试着构造payload
重新返回输入端,构造jabascrip
并且这里是有长度限制的,但是,如果这种限制仅仅只是放在了前端,那起不到丝毫的作用。我们打开开发者工具
找到选择器然后将输入限制更改为20000
然后重新构造闭合
可以看见反射型字符
还是打开网页源代码,查看一下
接着我们刷新输入页面,应为是反射型的XSS,所以之前我们输入的代码并不会被保留
接着看一下后端的代码,大致如下
可以看见是没做任何的防范措施的。
则从XSS漏洞的发现到利用XSS反射型漏洞的大致过程就大体地演示完成。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138845.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...