当前位置:网站首页>CISP-PTE XSS基础
CISP-PTE XSS基础
2022-06-11 09:40:00 【beirry】
同源策略
百度:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
同源的意思是指域名,协议,端口相同。不同源的客户端脚本(JavaScript,actionscript)再没明确授权的情况下,不能读写对方的资源。
如果两个页面的协议,端口和域名都相同,则两个页面具有相同的源。
以百度为例:https://www.baidu.com
| URL | 是否同源 | 原因 |
|---|---|---|
| https://www.baidu.com/s?wd=1 | 是 | 协议,端口,域名都相同 |
| http://www.baidu.com/s?wd=1 | 否 | 协议不同 |
| https://www.sougou.com/s?wd=1 | 否 | 域名不同 |
| https://www.baidu.com:8080/s?wd=1 | 否 | 端口不同 |
利用XSS漏洞,我们可以通过在目标网站上执行我们自己的脚本(JavaScript脚本),从而突破同源策略的限制。
XSS
XSS攻击是在网页中嵌入恶意的脚本代码,这些代码一般是用javascript语言编写。
我们可以利用XSS攻击盗取用户的账号密码、Cookie,改变网页内容,URL跳转,水坑攻击等。
XSS类型
XSS大致分为三种类型:反射型,存储型,DOM型。
我直接通过打靶场(DVWA)的方式来给大家一个直观的讲解
反射型XSS
打开DVWA,在DVWA Security中将难度调整为low,然后点击反射型xss,可以看到这样的一个页面。

可以看到这里有一个输入框,我们用F12来看下它的输入框的标签属性,找到它是用name变量来接收我们输入的值,然后再往上看,可以看到是用GET传值来传输变量。

当我们在语句中输入xss语句时,看效果会如何,在输入框中输入弹窗语句:<script>alert(1)</script>,这句话的作用是弹窗显示数字1,如下图:

再让我们更加深入去了解反射型xss,我们查看网络,找到该页面的文件,查看响应,查找我们输入的xss语句,发现是xss语句是存在相应包的。且可以看到我们输入的语句,<script>被浏览器认成标签进行渲染。所以才导致xss语句被执行。
接下来我们随意点击一个页面,然后返回到反射型xss页面中,可以发现并没有弹窗。

那么我们这里可以总结以下特点:
1,反射型xss大多数用GET传值,传值是经过后端的(因为响应包里存在js语句)。
2,反射型xss的代码是只有一次性的,而并不是持久性的(从随意点击一个页面返回并没有弹窗可看出)。
3,反射型xss漏洞一般着重于在可以传值的地方中(类似于输入框)查找,说不定就存在xss漏洞了。
那么怎么利用反射型xss攻击呢,首先是我们找到该页面存在反射型xss漏洞,然后构造好恶意的xss语句,将该链接转发给正常的用户,以某种方式让用户点击链接,则攻击成功。
存储型XSS
访问存储型XSS页面,可以看到是一个留言板的页面。

我们看下是利用什么传值。

通过定位的操作可以看到是POST传值,POST传值相对于GET传值有几个好处:
1,比GET传值更加安全。
2,GET传值有限制值的大小,而POST没有。
3,GET传值输入的值是在URL中,而POST传值是在消息体中。
接下来写入xss弹窗语句<script>alert(1)</script>。

点击sign Guestbook,发现弹窗。

可以看到留言板中有我们输入的留言,但是内容是空的我们查看响应包,发现存在我们输入的xss语句,为什么我们的留言是空的呢?因为浏览器将其作为标签并将标签内的内容执行了,也就是我们看到的弹窗。

那么我们点击其他页面再返回存储型XSS,发现这次是会弹窗的。

这里总结下存储型的特点:
1,存储型XSS一般存在留言板,帖子,个人信息这类页面中,这些页面很有可能存在存储型xss漏洞。
2,存储型xss恶意语句会经过后端再保存到数据库中(我们的xss语句之所以可以永久存储,是因为我们的代码存放在了数据库中,正常用户访问这个页面,后端会将我们的xss恶意语句发送给用户,使用户遭受到xss攻击)。
3,相对于其他xss类型,存储型xss的隐秘性更高,因为其他都需要点击攻击者构造好的链接,而存储型不需要。
利用存储型xss攻击其实很简单,只需要找到页面的留言板,帖子,个人信息等这种将值存放在数据库中的页面,监测如果存在xss漏洞,则插入xss漏洞,坐等用户去访问这个页面或者诱骗用户访问该页面即可。
DOM型XSS
打开DOM型xss页面,点击select。

可以看到url中有一个default的传值,值为English。
我们将值修改成xss弹窗语句<script>alert(1)</script>
输入完后回车,触发弹窗。

查看响应包,查找xss语句,发现并没有找到。
说明DOM型XSS漏洞并不会将xss语句传入到后端中。
通过F12定位代码,可以看到default值在前端中定义的,我们输入的值会在<script>标签中的代码过一遍后输出。在<script>标签中将我们输入的xss语句直接输出到浏览器中,浏览器将其作为标签渲染后,执行我们的xss语句。
点击其他页面,再返回DOM型XSS漏洞页面,发现并不会弹窗。
总结下DOM型XSS的特点:
1,输入的值并不经过后端,而是在前端中执行。
2,用URL传值,构造方法和反射型相同。
3,xss语句为一次性,跟反射型相同。
攻击方法也与反射型相同。唯一的区别是反射型的payload是经过后端的,而DOM型则是在前端的。
三者的区别
| XSS类型 | 反射型 | 存储型 | DOM型 |
|---|---|---|---|
| 触发原理 | 用户访问带有XSS语句的URL | 用户访问携带有xss语句的页面 | 用户访问带有XSS语句的URL |
| 数据存储 | 存放在URL中 | 存放在数据库中 | 存放在URL中 |
| 经过位置 | 后端 | 后端,数据库 | 前端 |
| 输出位置 | HTTP响应 | HTTP响应 | DOM节点 |
以上是xss的基础内容,如果有表哥需要补充或修正的,请私信我哈~
边栏推荐
- Product list display
- 数据一致的问题
- RAC单独修改scanip到不同网段时会报错
- Interface, abstract class and relationship between classes
- [image denoising] image denoising based on median + wavelet + Wiener + filter, including Matlab source code
- js中的事件
- 赛灵思引脚约束文件 .xdc
- 整型提升例题
- 【Objective-C】结构体和类的区别
- [ROS] noedic moveit installation and UR5 model import
猜你喜欢

Don't use redis list to implement message queue. Stream is designed for queues

Integer lifting example

Opencv image basic operation (III) -- image feature extraction (corner detection)

Zhiyun health submitted the statement to HKEx again: the loss in 2021 exceeded 4billion yuan, an increase of 43% year-on-year

js中关键字this的理解

全局池化–Pytorch

ES6新增特性--箭头函数

Oracle DG physical standby database uses alias data file to change path to OMF path

Oracle 11g RAC disk group has space and cannot add data files?

Ora-00059 exceeds DB_ Files limit
随机推荐
不卷了!入职字节跳动一周就果断跑了。
【Objective-C】动态创建控件
Servlet 的初次部署
ESP8266_ SNTP(Simple Network Time Protocol)
Project lifecycle
JS foundation -- about DOM
Interface, abstract class and relationship between classes
Tap and longtap encapsulation of touch events -- from Ono
Technical practice of dolphin dispatching in kubernetes system
Flask (VI) - template
[image denoising] image denoising based on mean + median + Gauss low pass + various improved wavelet transform, including Matlab source code
P4147 "jade toad Palace"
How do we connect to WiFi?
关于原型及原型链
Flask (II) - route
An error will be reported when the RAC modifies the scanip to different network segments
Identifier keyword literal data type base conversion character encoding variable data type explanation operator
Rebuilding Oracle XdB components
面试常问:rem布局,flex布局等
我们是如何连上WiFi的?