一,XSS基本原理与分类
XSS
又叫
CSS
(
Cross Site Script
),跨站脚本攻击。因为与
html
中的
css
样式
同,所以称之为
XSS
。
XSS
攻击最终目的是在网页中嵌入客户端恶意代码,最
常用的攻击代码是
JavaScript
语言,但也会使用其他的脚本语言。
XSS
主要分为反射型、存储型、
DOM
型。在
DVWA
靶场中主要也涉及这三
类,在
Pikachu
靶场中,种类延伸更多些。
1.反射型
XSS
反射型
(Reflected Cross-site Scripting
),通常产生于前端;漏洞特征:一次性
的、前端执行、不会储存在后端数据库。反射型跨站脚本也称作非持久型、参数
型跨站脚本。主要用于将恶意脚本附加到
URL
地址的参数中。
数据交互过程:用户输入数据
->
后端执行
php->
返回数据给前端并执行(回
显)。
2
.存储型
XSS
储存型
(Stored Cross-site Scripting)
,通常产生于后端;漏洞特征:持久性的、
前端执行、储存在后端数据库。此类
XSS
不需要用户单击特定
URL
就能执行跨
站脚本。攻击者事先将恶意
JavaScript
代码上传或存储到漏洞服务器中。当受害
者浏览包含此恶意
JavaScript
代码的页面就会执行恶意代码。
数据交互过程:用户输入数据
->
后端执行
php
代码
->
存入数据库某张表
->
返
回数据给
php
页面
->
回显前端。
3.DOM
型
XSS
DOM
型通常产生于前端、特殊的反射型
XSS
。漏洞特征:一次性的、前端
执行、不会储存在后端数据库。
DOM
型
XSS
原理:客户端的脚本程序可以通过
DOM
动态地检查和修改页
面内容。程序执行不依赖于服务器端的数据,从客户端获得
DOM
中的数据并在
本地执行。浏览器用户可以操纵
DOM
中的一些对象,例如
URL
、
location
等。
用户在客户端输入的数据如果包含了恶意
JavaScript
脚本,而这些脚本没有经
过适当的过滤和消毒,应用程序就可能受到基于
DOM
的
XSS
攻击。
二,DVWA
靶场
DOM
型
XSS
low
级别
1
) 漏洞分析
low
级别,我们只看到两个交互按键,一个前端选择,一个提交。点击一下“
select
”,
参数在
url
中。

2
) 查看页面源码
啥也不干

3
) 漏洞攻击
url
中
default
参数改为:
<script>alert(document.cookie)</script>
,尝试拿到
cookie
。
4
) 结果验证

攻击成功
Medium
1
) 漏洞分析——与
low
一样
2
) 查看网页源码

查看
GET
的参数是否为
default
,使用
stripo
过滤
default
中的“
<script>
”。发现
即重定向。
3
) 漏洞攻击
尝试了下
<ScRipt> alert(document.cookie)</script>
,失败,重定向了。那不能用
script
,换成
img
试试
<img src=1 οnerrοr=alert(document.cookie);>
。失败,
value
上
传了。经查询资料,
select
标签中只允许内嵌
option
标签,不能内嵌
img
标签。
所以前面要先将
select
和
option
闭合:
</select></option><img src=1 οnerrοr=alert(document.cookie);>
4)
结果验证

攻击成功,拿到
cookie
,但原页面改动明显。
high
1
) 漏洞分析——与
low
一样
2
) 查看网页源码

使用
switch case
保证了上传的
default
值。那大概,我们只能在前端
3
) 漏洞攻击
这里有白名单过滤,加
#
不上传,前端自己玩。
default=#<script>alert(document.cookie)</script>
4
)结果验证

攻击成功
impossible
impossible级别的php代码没有任何东西和low级别一样,保护的代码写在客户端的里面。
大多数浏览器默认将从URL中获取的内容进行编码,而客户端的源代码中直接将编码后的输入插入到了动态页面中(可以与low级别的客户端代码进行比较),从而阻止了执行任何注入的JavaScript。所以,就不存在XSS漏洞。
三、
DVWA
靶场
reflected
型XSS
low
1
) 漏洞分析
low
级别,我们只看到两个交互按键,一个文本输入框,一个提交按键。输入内容会在
url
中。

2
) 查看页面源码

啥也不干
3
) 漏洞攻击
文本框输入
<script>alert(document.cookie)</script>
,点击提交,尝试拿到
cookie
。
4
) 结果验证

攻击成功
medium
1
) 漏洞分析——与
low
相似
2
) 查看页面源码

与
DOM
类似,替换了
<script>
,但不是发现即重定向。那这里可以试一下复写。
3
) 漏洞攻击
<scr<script>ipt>alert(document.cookie)</script>
。
<SCript>alert(document.cookie)</script>
也是可以的,大小写不敏感了。
4
) 攻击验证

攻击成功
high
1
) 漏洞分析——于
low
相似
2
) 查看页面源码

使用正则替换了
<script>
。且对大小写不敏感
3
) 漏洞攻击
换成
img
来攻击:
<img src=1 οnerrοr=alert(document.cookie);>
4
) 攻击验证

攻击成功
四、
DVWA
靶场
stored
型
XSS
low
1
) 漏洞分析
留言板功能,
name
,信息,留言三个功能比较重要。留言内容会在下面保存显示。
clear guestbook
会清除历史留言信息

2
)查看页面源码

除了
mysql
功能,别的几乎啥也没做。有个
trim()
函数,从字符串的两端删除空
白字符和其他预定义字符。
stripslashes()
函数删除反斜杠。
3
) 漏洞攻击
直接
<script>alert(document.cookie)</script>
。
4
) 攻击验证

攻击成功。另外攻击是长期的,在此打开页面,还会进行攻击
medium
1
) 漏洞分析——与
low
类似
2
) 源码查看

与
low
相比,
message
里过滤了
xss
,
name
里过滤了
script
,长度不够
js
凑。有
没有大小写过滤要尝试一下
3
) 先修改前端文本框长度上限。然后
name
里攻击

<SCript>alert(document.cookie)</SCript>
4
) 攻击验证

攻击成功
high
1
) 漏洞分析——与
low
类似
2
) 源码查看

与
low
相比,
name
里严格过滤
script
,
message
过滤
xss
3
)
message
里无从下手,
name
里改用
img
。改长度。

<img src=1 οnerrοr=alert(document.cookie);>
4
) 攻击验证

攻击成功