漏洞概述
存储型XSS是指应用程序直接将攻击者提交的具有恶意代码存储到后台,在显示数据页面被访问时恶意脚本在浏览器因html注入导致页面执行恶意代码从而被攻击者控制浏览器
测试工具
firefox浏览器
测试方法
LOW级别
-
设置DVWA安全级别为LOW
-
使用浏览器进行XSS攻击
在浏览器中输入payload:
<script>alert(/xss/)</script>
<script>alert(document.cookie)</script>
<img src="" onerror="alert(/xss/)"/>
<iframe src="" onload="alert(document.cookie)"></iframe>
-
分析结果
10.02.png -
代码分析
10.03.png说明:
应用程序直接将提交数据进行SQL特殊字符进行转义后存储到数据库,后续显示数据时未对数据做转义操作,可直接使用提交数据包含xss payload进行攻击
MEDIUM级别
-
设置DVWA安全级别为Medium
-
使用浏览器进行XSS攻击
在浏览器中输入payload:
<sc<script>ript>alert(/xss/)</script>
<sCrIpt>alert(document.cookie)</scRipT>
<img src="" onerror="alert(/xss/)"/>
<iframe src="" onload="alert(document.cookie)"></iframe>
-
分析结果
10.05.png -
代码分析
10.06.png说明:
应用程序将提交数据txtName只进行
<script>
标签过滤和SQL特殊字符进行转义后存储到数据库,后续显示数据时未对数据做转义操作,可直接txtName字段使用提交数据包含xss payload进行攻击(script大小写变换后的标签、二次变化的<scr<script>ipt>
、iframe、img等标签进行绕过对txtName的过滤)
HIGH级别
-
设置DVWA安全级别为High
-
使用浏览器进行XSS攻击
在浏览器中输入payload:
<img src="" onerror="alert(/xss/)"/>
<iframe src="" onload="alert(document.cookie)"></iframe>
-
分析结果
10.08.png -
代码分析
10.09.png说明:
应用程序将提交数据txtName只进行
<script
字符串过滤和SQL特殊字符进行转义后存储到数据库,后续显示数据时未对数据做转义操作,可直接txtName字段使用提交数据包含xss payload进行攻击(通过iframe、img等标签进行绕过对txtName的过滤)
修复建议
-
禁用js读取cookie(设置cookie为httponly)
-
在页面输出数据时对<、>、&、 '、"、/等字符进行html实体转义
-
对输入数据中<、>、&、 '、"进行严格检查
网友评论