一、Reflected Cross Site Scripting
Low等级
输入<h1>a</h1>a
,查看返回的两个a的样子是否有一个a的样子是h1标签的a,如果是h1标签的a,说明<h1>
标签被执行了,也就是说插入的东西被执行了,即存在XSS漏洞。运行如图1.1所示,发现两个a的样子不一致,说明存在XSS注入漏洞。
图1.1
构造攻击页面,如图1.2所示
图1.2
构造XSS攻击的语句,如图1.3所示的XSS攻击语句,访问的运行结果如图1.4所示,注意,需要进行url编码之后才能够进行执行。发现成功获取到了用户的cookie值。
图1.3
图1.4
修改cookie值如图1.5所示,然后直接访问dvwa里面任意一个模块的页面,发现不需要输入账号密码就能够进入,如图1.6所示。
图1.5
图1.6
查看源码如图1.7所示,可以发现没有对用户的输入进行任何的处理就直接插入到页面中。
图1.7
Medium等级
查看是否存在xss漏洞,如图2.1所示,说明存在XSS注入漏洞。
图2.1
查看能否使用script标签,如图2.2所示,可以发现能够直接显示出来而没有弹窗,说明对用户的输入进行了过滤。根据输出,猜测是对<script>
标签进行了过滤。
图2.2
将script的字符换成任意大小写的字符进行尝试,发现绕过成功如图2.3所示,说明确实是对script进行过滤,但是没有对任意大小写的script进行过滤,只是过滤的小写的script。
图2.3
因为和Low等级相比只是过滤了全部小写的script,因此获取cookie的方式和Low一致,只是需要将script进行任意大小写的转化。这里不再一一列举。
除了script标签外,还有body onload标签能够实现该功能,如图2.4所示
图2.4
在进行获取cookie的时候,需要进行如图2.5所示的红框进行url编码处理才能够执行成功。
图2.5
也可以使用href标签来进行绕过
查看源码,如图2.6所示。发现确实对用户输入的<script>
进行了过滤。
图2.6
High等级
查看是否存在xss漏洞,如图3.1所示,说明存在XSS注入漏洞。
图3.1
查看script更换大小写之后是否被处理掉,如图3.2所示,发现确实被处理掉了。
图3.2
查看body onload能否使用,如图3.3所示,发现能够执行。
图3.3
impossible等级
查看源码,如图4.1所示。发现对用户输入的数据使用htmlspecialchars函数进行处理。就我所学习到的,我觉得攻击不了该等级,因为调用了htmlspecialchars,把进行XSS攻击的字符进行了过滤。
图4.1
二、Stored Cross Site Scripting
Low等级
查看是否存在XSS漏洞,如图5.1所示,发现存在XSS漏洞,因为a是h1标签的a。
图5.1
插入弹窗,如图5.2所示。
图5.2
发现弹窗正常如图5.3所示,说明代码执行正常。
图5.3
注入获取cookie的前端代码,并且还需要更改长度,如图5.4所示。
图5.4
查看cookie值,发现确实被获取到了,如图5.5所示
图5.5
Medium等级
经过尝试,发现name框存在XSS注入,而Message不存在。因为在name输入判断是否存在XSS注入的时候,发现字体变成h1的了;而在Message里面输入时,发现字体不是h1的字体。如图6.1所示
图6.1
插入script标签查看是否能够弹窗,如图6.2所示,发现被当成普通的字符串插入在页面内,并没有被当成标签插入,如图6.3所示。
图6.2
图6.3
猜测是对向反射型XSS一样,对小写的stript进行了处理,没有对大小写的sript进行处理,经过验证发现确实如此,如图6.4所示,确实弹窗了。
图6.4
查看源码,如图6.5所示,发现对message框调用了strip_tags(去除HTML、XML、PHP标签)、mysql_real_escape_string(对sql语句的特殊字符进行转义)、htmlspecialchars(把预定义的字符串转换为HTML实体)来对用户输入在message框进行严格的过滤,基本上杜绝了XSS攻击;而name框只是进行了对全部为小写的script进行了过滤,很显然在name框存在XSS漏洞。
图6.5
High等级
插入判断是否存在XSS漏洞的语句,如图7.1所示。发现结果的a是h1格式的a,如图7.2所示,说明确实是存在XSS漏洞。并且是Name框的。
图7.2
插入任意的大小写script之后,发现并没有弹窗,应该是对script进行了过滤。如图7.3所示。
图7.3
插入body标签,如图7.4所示,发现也不能够成功跳转。
图7.4
插入img标签,如图7.5所示,发现弹窗成功,如图7.6所示。
图7.5
图7.6
查看源码如图7.7所示,发现message框进行了和存储型XSSMedium等级一致的防范,但是name框只是采取了正则过滤和调用mysql_real_escape_string函数进行过滤。
图7.7
impossible等级
查看否存在XSS漏洞,如图7.8所示,发现执行的结果是将“<”符号当成小于号来处理的。a并不是是h1标签的a,说明不存在XSS漏洞或者说对XSS攻击防范很到位。
图7.8
查看源码如图7.9所示,检测了token,name框和message使用一致的过滤,就我目前所学习到的,不能对该难度进行攻击。
图7.9