2019-03-17 XSS实验报告

实验原理

XSS是最常见的计算机安全漏洞,又叫CSS(Cross Site Script) ,即跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
在XSS的攻击方式中,需要欺骗用户自己去点击链接才能触发的XSS称为反射型XSS,也称为非持久型XSS(Non-persistent XSS)。反射型XSS只是简单的把用户输入的数据“反射”给浏览器,特点为单击时触发,执行一次。

实验目的

理解反射型XSS的原理
学习反射型XSS的实现过程

实验内容

跨站脚本攻击之反射型XSS

打开测试站点,发现是一个提交并输出数据的表单,如下图所示。

尝试输入,发现成功弹窗,证明网站存在XSS漏洞。

XSS挑战初中高级

初级

example 1

点击进入,由提示可知关键代码如下:


易知源代码未作任何过滤,构建payload

/example1.php?name=

即可成功弹窗。

example 2

由提示可知关键代码如下:

可以看到过滤了小写的,因此可以采用大小写混淆的方式绕过,构建payload

/example2.php?name=

即可成功弹窗。

example 3

由提示可知关键代码如下:

过滤了不区分大小写的,因此可以采用双写pt>

即可成功弹窗。

中级

example 4

由提示可知关键代码如下:

可以看到对script做了大小写过滤/i,大小写混淆不再有效,但没有做更多限制。因此可以选择放弃使用

即可成功弹窗。

example 6

由提示可知关键代码如下:

可以采用闭合标签绕过。构建payload

/example6.php?name=

即可成功弹窗。

高级

example 7

由提示可知关键代码如下:

可知代码通过htmlentities()函数把字符转换为 HTML 实体。

htmlentities() 并不能转换所有的特殊字符,是转换除了空格之外的特殊字符,且单引号和双引号需要单独控制(通过第二个参数)。第2个参数取值有3种,分别如下:
ENT_COMPAT(默认值):只转换双引号。
ENT_QUOTES:两种引号都转换。
ENT_NOQUOTES:两种引号都不转换。

由图可知该函数在应用时没有设置过滤单引号,因此构建payload

/example7.php?name=';alert('1');'

即可成功弹窗。

example 8

由提示可知关键代码如下:

可知post地址使用了当前url,即

,因此构建payload

/example8.php/><"

即可成功弹窗。

此时标签闭合如下图

example 9

由提示可知关键代码如下:

xss直接在页面输出锚点id,因此构建payload

/example8.php#

并刷新网页,即可成功弹窗。

DVWA之反射型XSS

Low

在low级别中,关键代码如下所示:

可以看出未做任何防护,直接构建payload


即可成功弹窗。

Medium

在Medium级别中,关键代码如下所示:

可以看到只替换了小写的

ript>alert(1)

即可成功弹窗。

结果及分析

通过url的输入,将恶意脚本附加到url地址的参数中。能够弹出一个警告框,说明跨站脚本攻击漏洞存在。

实验结论

我抄我自己
XSS攻击的是浏览器,不同的浏览器效果不一样,同一款浏览器不同版本之间效果不同。反射型XSS通常出现在网站的搜索栏、用户登入口等地方,具有单击时触发、执行一次的特点。
对于反射型XSS,需要服务端和前端共同预防,针对用户输入的数据做解析和转义,或是限定脚本的来源域,以尽可能地避免XSS攻击。

XSS注入流程

  1. 通过常用语句漏洞的验证,如
  2. 查看源代码判断XSS的闭合,有没有过滤<>
  3. 查看源代码利用XSS的结构,若结构中会受到过滤等则进行XSS的变形。

常见的XSS攻击方法

  • 利用<>构造HTML 或者JS标签;
  • 利用HTML 标签的属性值进行XSS;
  • 产生自己的事件;
  • 利用CSS跨站等

常见XSS变形

根据过滤代码的写法采取不同的变形以绕过过滤,常见的有以下几种。

1. 扰乱过滤规则

大小写转换


引号的引用
@ 无引号

@ 单引号

@ 双引号

表格引用自 XSS绕过 - N1nG - CSDN

类型 写法
一个正常的XSS输入
转换大小写后的XSS
大小写混淆的XSS
不用双引号,而是使用单引号的XSS
不使用引号的XSS

2. 利用 / 代替空格


3. CSS中变形

@ 使用全角字符
    
@ 注释会被浏览器忽略
    
@ 样式表中的\ 和\0 同样会被浏览器忽略

4. 利用空格、Tab或回车

@ 利用Tab
click me!
@ 利用回车

5. 对标签属性值进行转码

@ 将字符转为十进制或十六进制,例如
a    97     a     a   
e    101    e    e
click me!

6. 拆分跨站

@ 拼接



@ 注释

XSS的危害

  • 网络钓鱼,包括窃取用户账号;
  • 窃取用户cookies资料,从而获得用户隐私信息,或利用用户身份进一步对网站执行操作;
  • 劫持用户会话,进行非法转账、强制发表日志、发送电子邮件等;
  • 强制弹出广告、刷流量等;
  • 恶意操作,删除文章等;
  • 网页挂马;
  • 传播跨站脚本蠕虫等

常见应对XSS方法

  • 输入输出检查并对敏感字符编码,如<转成<

    • 在XSS的防御上,输入检查一般是检查用户输入的数据中是否包含一些特殊字符,如

你可能感兴趣的:(2019-03-17 XSS实验报告)