漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-088000
漏洞标题:tipask问答系统某处存储型xss(绕过限制)
相关厂商:Tipask
漏洞作者: Th1nk
提交时间:2014-12-24 11:53
修复时间:2015-03-24 11:54
公开时间:2015-03-24 11:54
漏洞类型:xss跨站脚本攻击
危害等级:中
自评Rank:10
漏洞状态:未联系到厂商或者厂商积极忽略
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-12-24: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-03-24: 厂商已经主动忽略漏洞,细节向公众公开
简要描述:
tipask问答系统某处存储型xss(绕过限制)
详细说明:
编辑个人资料时,QQ处没有过滤。
http://127.0.0.1/tipask/tipask/?user/profile.html
输入
"><h1>xx</h1>
提交后自己查看
别人查看
但是QQ处长度有限制,导致我们不能形成xss。
只能长15个字符,不够构造xss
但是我发现用户可以编辑签名,长度在200字符以内,但是该处有限制。
我们先看看输出。
可以看到
尖括号被过滤了。
但是结合前面那个QQ处的bug,我们可以做出很多猥琐的事情~
QQ处输入
这样就能构造后面所有的字符串都被包含在单引号里面了。
然后构造签名处输入为
截图看效果。
查看用户的个人资料,访问http://127.0.0.1/tipask/tipask/?u-5.html
看一下源代码,经过浏览器渲染后的效果。
光是弹出对话框还不够,我们还得能够打到用户的cookie什么的,包含外部js。
一开始签名处使用的payload如下
onerror后面自动加上了双引号,并且我输入的双引号都被实体化成了"
,导致整个payload的引号混乱,根本不能完整闭合。所以说payload中不能出现双引号。
于是想到js代码中允许用8字符串的进制编码
于是
"-->\42
空格-->\40
最终构造出payload
'
不使用onerror='alert(1)'这种格式的原因是还存在着小尾巴</span></i
如果不放在js里面并且用//注释,也会导致整个payload不能运行。
下面放测试截图,修改用户test的个人资料。
QQ处输入
签名处输入
然后使用admin账户登录查看test的个人资料。
成功拿到cookie,使用该cookie可以登陆管理员后台。
剩下的都懂。
漏洞证明:
编辑个人资料时,QQ处没有过滤。
http://127.0.0.1/tipask/tipask/?user/profile.html
输入
"><h1>xx</h1>
提交后自己查看
别人查看
但是QQ处长度有限制,导致我们不能形成xss。
只能长15个字符,不够构造xss
但是我发现用户可以编辑签名,长度在200字符以内,但是该处有限制。
我们先看看输出。
可以看到
尖括号被过滤了。
但是结合前面那个QQ处的bug,我们可以做出很多猥琐的事情~
QQ处输入
这样就能构造后面所有的字符串都被包含在单引号里面了。
然后构造签名处输入为
截图看效果。
查看用户的个人资料,访问http://127.0.0.1/tipask/tipask/?u-5.html
看一下源代码,经过浏览器渲染后的效果。
光是弹出对话框还不够,我们还得能够打到用户的cookie什么的,包含外部js。
一开始签名处使用的payload如下
onerror后面自动加上了双引号,并且我输入的双引号都被实体化成了"
,导致整个payload的引号混乱,根本不能完整闭合。所以说payload中不能出现双引号。
于是想到js代码中允许用8字符串的进制编码
于是
"-->\42
空格-->\40
最终构造出payload
'
不使用onerror='alert(1)'这种格式的原因是还存在着小尾巴</span></i
如果不放在js里面并且用//注释,也会导致整个payload不能运行。
下面放测试截图,修改用户test的个人资料。
QQ处输入
签名处输入
然后使用admin账户登录查看test的个人资料。
成功拿到cookie,使用该cookie可以登陆管理员后台。
剩下的都懂。
修复方案:
qq既然是数字,为何不判断一下。
版权声明:转载请注明来源 Th1nk@乌云
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝