跨站脚本攻击原理、攻击过程及防御方法简介
文章目录
- 一、XSS简介
- (一)什么是XSS?
- (二)XSS的危害
- (三)XSS的分类
- (四)XSS的特性
- (五)XSS攻击过程
- 二、如何防御XSS攻击?
- 三、本文小结
一、XSS简介
(一)什么是XSS?
Cross-Site Scripting,简称为XSS或跨站脚本或跨站脚本攻击,是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。通常安全圈内的人喜欢称其为前端注入。
前端注入:用户输入的数据被当做前端代码执行(一般是当做JS代码执行)。
前端的三种代码中,出现XSS漏洞时,90%的情况下,注入的代码是被当做JS代码执行。
后端代码是在服务器上执行的,而前端代码是在客户端(浏览器)执行的,并且前端代码是完全对用户开放的,因此对于攻击者而言,通过分析前端代码,并进行测试,则有可能找到针对网站的XSS注入点,从而对网站实施攻击。
(二)XSS的危害
- 1、读取目标的cookie并通过ajax方法发送出去(XSS的核心是偷cookie)。关于ajax的内容,有时间我会专门出一篇文章讲解,有需要可以点击下方链接进行查看:
ajax简介:https://www.w3school.com.cn/js/js_ajax_intro.asp - 2、获取内网ip(可以扫描并攻击内网)
- 3、获取浏览器保存的明文密码
- 4、截取网页屏幕
- 5、网页上的键盘记录
(三)XSS的分类
XSS分为反射型、存储型和DOM型三类。
反射型XSS:
反射型XSS又称非持久型XSS,这种攻击方式往往具有一次性。
提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击。
存储型XSS:
存储型XSS又称持久型XSS,攻击脚本将被永久地存放在目标服务器的数据库或文件中,具有很高的隐蔽性。(你提交的数据成功的实现了XSS后,数据会存入数据库,别人访问这个页面的时候就会自动触发)。
DOM型XSS:
DOM型XSS是最复杂的一类XSS,既可以是反射型(大部分)也可以是存储型(小部分)。DOM最大的核心就是:通过JS代码对网页进行修改,变化和执行。当JS代码执行后的结果产生了XSS漏洞的话,这就是DOM型XSS,再根据该XSS能否被存储进数据库中,可再细分为反射型和存储型。
(四)XSS的特性
XSS的核心:获取别人的cookie来登陆别人的账号。
要展开XSS攻击,需要在目标网站上触发指定的JS语句。攻击者主要通过以下三种触发方式展开攻击:
1、标签法(又叫XML法) ,比如:
<script>alert(1)</script>
2、伪协议法,比如:
<a href=Javascript:alert(1)>123</a>
3、事件法,比如:
</img src=# onerror=alert(1) />
onXXXX=XXXXX,表示事件.
onerror表示当加载错误的时候触发。前面的SRC表示图片的路径,随便给它个符号让它报错,然后执行后面的句子。
如果改成onload,就表示加载成功的时候执行。
on事件可以去百度搜。事件还有很多,其中渗透测试最常用的事件主要有:
onerror
onload
onfocus
oninput
(五)XSS攻击过程
这里以反射型XSS靶场为例,讲解如何展开一波简单的XSS攻击。
对于攻击者而言,XSS是见框就插。通常是先在目标输入框中输入一些指定的字符,然后在网页源代码中搜索该字符,根据该字符出现在源代码中的位置,分析注入点,展开进一步测试。一般是设法让网页弹窗,如果网页弹窗成功,则表明存在XSS漏洞,就可以根据XSS的类型制定不同的利用策略。
下面以反射型XSS靶场为例,我们从攻击者的角度,看看如何寻找XSS注入点。
进入靶场:
输入qwert,然后查看网页源代码,按ctrl+f搜索qwert:
刚才输入的qwert出现在两处地方,其中一处是标签中的文本,暂不考虑利用,先看input标签,我们考虑,看到是单引号闭合,因此我们可以考虑,先闭合掉原标签,然后将后面的单引号注释掉,然后设法让网页弹窗。那么该如何输入呢?如下所示:
'> <script>alert(1)</script>//
发现网页没弹窗,查看源代码:
分析源代码,可以看到,两个尖括号都被实体化了,但是单引号还在,因此可以尝试改用事件法来做。继续输入:
' oninput=alert(1)//
成功弹窗!
二、如何防御XSS攻击?
实际上,从防御的角度来看,大多数漏洞最有效的防御方法就是过滤。XSS防御最主要的方法就是过滤和html实体化(对代码进行编码,让代码只有文本意义),比如把尖括号换成<。由于实体化需要对整个页面进行实体化,因此容易出现二次传参的问题,因此XSS防御起来并不是很容易。由于XSS攻击中,常常有偷用户甚至是管理员cookie的行为,对于这种攻击方法,可以将客户端的httponly勾上,这样就无法通过JS读取cookie了。当然给网站安装WAF也是一种行之有效的防御方法。
httponly的选项在检查页面的Application里面:
这样在控制台输入document.cookie
就读取不到cookie值了。对于httponly默认被勾选的这种情况,可以用ie浏览器来绕过,因为ie浏览器不支持httponly。另外也可以考虑想办法让cookie在页面上输出,比如访问该网站的探针文件(需要对网站进行目录扫描)。如果是使用框架一键搭建的WEB环境,往往有探针,比较常见的探针文件有phpinfo.php,i.php
等。
三、本文小结
本文针对跨站脚本攻击(XSS)从原理、特性、分类、危害、攻击过程等角度进行了介绍,并讲解了目前主流的XSS防御思路,希望能对大家学习XSS起到一定的参考作用,不足之处敬请谅解。
跨站脚本攻击原理、攻击过程及防御方法简介相关推荐
- SQL注入攻击的原理、分类和防御方法
一.SQL注入攻击原理 恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对用户输入内容过分信任而未对恶意用户插入的SQL语句进行过滤,导致SQL语句直接被服务端执行. 二.SQ ...
- DDOS攻击原理,种类及其防御
在网上看到这个例子感觉很形象: 我开了一家可容纳100人的老陕羊肉泡馍馆,由于用料上等,童叟无欺.平时门庭若市,生意特别红火,而对面二狗家的泡馍馆却无人问津.二狗为了对付我,想了一个办法,叫了100个 ...
- ARP攻击原理简析及防御措施
0x1 简介 网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验.网络安全的战场已经从互联网蔓延到用户内部的网络, 特别是局域网.目前利用ARP欺骗的木马病毒在局域网中广泛传 ...
- 常见web漏洞原理,危害,防御方法
一 暴力破解 概述: 在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取. 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果. 为了提高效率,暴力破解一般会使用带有字 ...
- csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法
跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...
- SQL注入原理、过程、防御方案、RASP概念
一.sql注入原理 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的语句上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此 ...
- 不可不知 DDoS的攻击原理与防御方法(2)
转自: http://tech.sina.com.cn/s/2006-07-17/09501040151.shtml DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Deni ...
- CSRF攻击原理以及防御方法
CSRF攻击原理以及防御方法 CSRF概念:CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解: 攻击者盗用了你的身份 ...
- 2020最全详解DDoS的攻击原理与防御方法
DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed ...
- DDoS的攻击原理与防御方法
DDoS的攻击原理与防御方法 不可不知DDoS的攻击原理与防御方法 DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Servic ...
最新文章
- python类的实例方法必须创建对象前还是后可以调用_classmethod可以来调用类的属性,类的方法,实例化对象...
- Python字符串拼接的十种方式
- ospf hello时间和dead_网络工程师_思科 | OSPF由简到难,配合命令学
- Win10无管理员帐户,如何把自己提权为管理员
- 线性表之顺序表与单链表的区别及优缺点
- ajax离开页面方法,如果用户在页面加载完成之前离开页面,则触发jQuery ajaxError()处理程序...
- delphi10android保存数据,DELPHI XE5 Android – SDCard的SAVE / LOAD文件
- Safari浏览器(有时没有图片时,提交会出现问题)。
- async And await异步编程活用基础
- linux学习笔记:vim编辑器基本操作(附vim 键盘图)
- 斐波那契数列的几种求解方法
- Windows电脑上有哪些非常好用的本地视频播放器?快试试这5款
- CAS4.0配置Mysql数据库,认证失败
- 2021四川省资阳市高考成绩查询,2021资阳中考查询系统
- 冒烟测试(smoke test)、可用性测试(sanity test)和回归测试(regression test)
- Qt利用深度优先搜索实现迷宫寻宝
- html5 meter样式,css – Chrome中的HTML5 Meter样式
- 基于深度学习的银行卡识别
- ue4技术方向学习路线如何安排?
- 数据库考研真题回忆版