修复 URL(/canyou/default.html?url=)存在基于DOM的跨站脚本漏洞;修复 URL(/canyou/default.html?url=)存在跳转漏洞。

请求方式 GET

http://www.qqqao.com/canyou/default.html?url=http://www.qqqao.com/index2.html

问题参数 url
参考(验证)

http://www.qqqao.com/canyou/default.html?url=javascript:alert('<1>')

wzatool-xss.png

详细描述
基于DOM的跨站脚本漏洞属于跨站漏洞的一种分类。造成跨站的原因是客户端脚本(一般是javascript)处理用户输入时,没有做充分的过滤,并且将用户的输入赋给DOM树中某些对象的属性,比如通过document.write,window.location等。这些操作支持执行javascript,造成用户的输入被执行。 比如:

<HTML> 
<TITLE>Welcome!</TITLE> 
Hello,  
<SCRIPT> 
var pos=document.URL.indexOf("name=")+5; 
document.write(document.URL.substring(pos,document.URL.length)); 
</SCRIPT> 
<BR> 
Welcome!!! 
</HTML> 

这个HTML页面显示欢迎信息。 当请求http://[SERVER]]/welcome.html?name=<script>alert(document.cookie)</script>,服务器的响应内容并没有包含<script>alert(document.cookie)</script>,但是通过document.write修改DOM树,导致用户的输入被执行,造成跨站脚本漏洞。

解决办法
请分析并加强客户端 (JavaScript) 代码。 处理攻击者所能影响的输入源,通常是url,例如:document.URL,document.URLUnencoded,document.location(及其许多属性),document.referrer ,window.location(及其许多属性)

检查页面中是否使用了以下代码作为输出:

  • document.write(...)
  • document.writeln(...)
  • document.body.innerHtml=...
  • 直接修改 DOM(包括 DHTML 事件),例如:
  • document.forms[0].action=...(以及各种其他集合) * document.attachEvent(...)
  • document.create...(...)
  • document.execCommand(...)
  • document.body. ...(通过主体对象访问 DOM)
  • window.attachEvent(...)
  • 替换页面URL,例如:
  • document.location=...(以及指派给位置的 href、主机和主机名)
  • document.location.hostname=...
  • document.location.replace(...)
  • document.location.assign(...)
  • document.URL=...
  • window.navigate(...)
  • 打开/修改窗口,例如:
  • document.open(...)
  • window.open(...)
  • window.location.href=... (以及指派给位置的 href、主机和主机名)
  • 直接执行脚本,例如: * eval(...)
  • window.execScript(...)
  • window.setInterval(...)
  • window.setTimeout(...)

2019-09-20 信息无障碍工具条V1.6版本升级说明

  • 修复 URL(/canyou/default.html?url=)存在基于DOM的跨站脚本漏洞

  • 修复 URL(/canyou/default.html?url=)存在跳转漏洞

请大家下载最新版本,替换掉canyou文件夹即可解决此问题

https://gitee.com/tywAmblyopia/ToolsUI
https://github.com/gemgin/AmblyopiaTool


标签:wzatool canyou 跨站脚本