跨站脚本攻击原理、攻击过程及防御方法简介


一、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实体化(对代码进行编码,让代码只有文本意义),比如把尖括号换成&lt。由于实体化需要对整个页面进行实体化,因此容易出现二次传参的问题,因此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起到一定的参考作用,不足之处敬请谅解。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XSS(Cross-site scripting)脚本攻击是一种常见的Web安全漏洞,它允许攻击者在受害者的浏览器中注入恶意脚本,从而窃取用户的敏感信息,或者执行其他的恶意行为。 危害: 1. 盗取用户的Cookie和Session等敏感信息,以便进行身份欺骗。 2. 窃取用户的个人信息,如用户名和密码等。 3. 在受害者的浏览器中执行恶意脚本,从而攻击其他网或者发起DDoS攻击。 4. 篡改网的内容,使用户产生误解或者损失。 攻击原理攻击者通过注入恶意脚本来利用网的漏洞,从而在受害者的浏览器中执行恶意脚本攻击者可以通过以下方式进行攻击: 1. 通过URL注入:攻击者在URL中注入恶意脚本,当用户访问该URL时,脚本就会在用户的浏览器中执行。 2. 通过表单注入:攻击者在表单中注入恶意脚本,当用户提交表单时,脚本就会在用户的浏览器中执行。 3. 通过Cookie注入:攻击者在Cookie中注入恶意脚本,当用户访问网时,脚本就会在用户的浏览器中执行。 4. 通过DOM注入:攻击者在网页中的DOM节点中注入恶意脚本,当用户浏览网页时,脚本就会在用户的浏览器中执行。 常用工具: 1. XSSer:一款功能强大的XSS渗透测试工具,可以自动化执行XSS攻击。 2. BeEF:一款浏览器漏洞框架,可以将浏览器作为攻击的一部分,实现XSS攻击和其他浏览器相关的攻击。 3. XSStrike:一款自动化的XSS测试工具,可以识别漏洞并生成有效的攻击载荷。 防御策略: 1. 输入过滤:对用户输入的数据进行过滤,使其不包含特殊字符和脚本代码。 2. 输出转义:对输出到页面的内容进行转义,将特殊字符转换为HTML实体,从而防止恶意脚本的注入。 3. 使用CSP:通过限制网可以加载的资源,如脚本、样式表和图片等,来防止XSS攻击。 4. 使用HTTP-only Cookie:将Cookie标记为HTTP-only,使其只能通过HTTP协议传输,从而防止通过JavaScript访问Cookie。 5. 随机化Cookie:在Cookie中添加一些随机的信息,使攻击者无法猜测和伪造Cookie。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值