DVWA-XSS(跨站脚本攻击)

DVWA-XSS
XSS概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
XSS类型:
反射型XSS:只是简单地把用户输入的数据反射给浏览器,简单来说,黑客往往需要去诱使用户点击一个恶意链接,才能攻击成功。
存储型XSS:将用户输入的数据存储在服务器端,每次用户访问都会被执行js脚本。
DOM型XSS:文本对象模式xss,通过修改页面的DOM节点形成的XSS,可存储型、可反射型,只取决于输出地点。

XSS的应用场景:
1.利用xss获得cookie 2.重定向 3.钓鱼网站 4.DDOS

-----------------实验讲解-----------------

反射型XSS:

(一)将DVWA的级别设置为low
1.1查看源代码,可以看到没有对参数做任何防御处理措施,直接输出
DVWA-XSS(跨站脚本攻击)_第1张图片

1.2尝试一般的XSS攻击


DVWA-XSS(跨站脚本攻击)_第2张图片


DVWA-XSS(跨站脚本攻击)_第3张图片

click1 #点击click1时弹出xss3
DVWA-XSS(跨站脚本攻击)_第4张图片

#src地址错误,然后执行onerror的内容
DVWA-XSS(跨站脚本攻击)_第5张图片

DVWA-XSS(跨站脚本攻击)_第6张图片

(二)将DVWA的级别设置为medium
1.分析源码,可以看到使用str_replace函数只对参数进行了简单的替换,过滤

2.绕过DVWA medium防御
2.1大小写绕过

DVWA-XSS(跨站脚本攻击)_第7张图片

2.2组合过滤条件绕过
ipt>alert('sss')
DVWA-XSS(跨站脚本攻击)_第8张图片

2.3尝试使用别的标签来绕过

DVWA-XSS(跨站脚本攻击)_第9张图片

click
DVWA-XSS(跨站脚本攻击)_第10张图片

click
DVWA-XSS(跨站脚本攻击)_第11张图片

(三)将DVWA的级别设置为High
1.分析源码,可以看到,使用了preg_replace正则表达式 函数,对参数进行过滤,查看源码可以看到对


DVWA-XSS(跨站脚本攻击)_第12张图片

click
DVWA-XSS(跨站脚本攻击)_第13张图片

click
DVWA-XSS(跨站脚本攻击)_第14张图片

(四)将DVWA的级别设置为Impossible
1.分析源码,可以看到使用htmlspecialchars函数对参数进行html实体转义,此时就无法利用XSS漏洞了

存储型XSS:
(一)将DVWA的级别设置为low
1.分析源码,可以看到首先对两个参数使用trim函数过滤掉两边的空格,然后KaTeX parse error: Undefined control sequence: \” at position 70: …ipslashes函数过滤掉”\̲”̲,对name参数中使用mysql_real_escape_string函数转义SQL语句中的特殊字符
了解即可
2.从上面的代码可以看到,没有防御XSS漏洞,只防御了SQL注入漏洞

尝试一般的XSS攻击(攻击语句与反射性一致)

DVWA-XSS(跨站脚本攻击)_第15张图片

(二) medium
在name
DVWA-XSS(跨站脚本攻击)_第16张图片

(三) high
在name
需要将传输数据进行URL编码
DVWA-XSS(跨站脚本攻击)_第17张图片
DVWA-XSS(跨站脚本攻击)_第18张图片

DOM—XSS:
DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。
1 查看服务端代码,什么也没有
查看页面源代码
解释script代码
if (document.location.href.indexOf(“default=”) >= 0) #判断 “default=” 是否存在
var lang = document.location.href.substring(document.location.href.indexOf(“default=”)+8) # 取出 default 的值 并 赋值给变量lang document.write("" + decodeURI(lang) + “”); 写入"decodeURL(lang)
所以我们插入的 javascript 代码可以在 decodeURL(lang) 被执行 (了解即可)

构造攻击语句
http://127.0.0.1/dvwa-master/vulnerabilities/xss_d/?default=English
写入页面的效果是这样的

DVWA-XSS(跨站脚本攻击)_第19张图片

Medium
查看服务端源代码
array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
由服务端代码 可知 Medium 级别过滤了

构造攻击语句
http://127.0.0.1/dvwa-master/vulnerabilities/xss_d/?default=English
写入页面的效果是这样的

DVWA-XSS(跨站脚本攻击)_第20张图片
DVWA-XSS(跨站脚本攻击)_第21张图片

首先闭合了标签 和 标签
利用 img标签的onerror事件
javascript,img标签支持onerror 事件,在加载图像的过程中如果发生了错误,就会触发onerror事件,从而执行 JavaScript

high
查看服务端源代码

白名单 只允许 传的 default值 为 French English German Spanish 其中一个
构造攻击语句
http://www.dvwa.com/vulnerabilities/xss_d/?default=English #
写入页面的效果是这样的

由于 form表单提交的数据想经过JS过滤,所以注释部分的javascript代码不会被传到服务器端(也就符合了白名单的要求)
DVWA-XSS(跨站脚本攻击)_第22张图片

我们写一个html 验证一下English #是否可行

你可能感兴趣的:(DVWA-XSS(跨站脚本攻击))