漏洞概要 关注数(8) 关注此漏洞
缺陷编号: WooYun-2014-53737
漏洞标题: 继续绕过cmseasy补丁继续注入
相关厂商: cmseasy
漏洞作者: ′雨。
提交时间: 2014-03-17 11:39
公开时间: 2014-06-15 11:40
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-03-17: 细节已通知厂商并且等待厂商处理中
2014-03-17: 厂商已经确认,细节仅向厂商公开
2014-03-20: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-05-11: 细节向核心白帽子及相关领域专家公开
2014-05-21: 细节向普通白帽子公开
2014-05-31: 细节向实习白帽子公开
2014-06-15: 细节向公众公开
简要描述:
过滤不严。
详细说明:
- -
又来绕过了。
官网上又更新了包。
看看是怎么来过滤的
lib\plugins\pay\alipay.php
可以看到 官方是在正则表达式那里做了修改。
添加了\' 因为全局转义 所以就不能用单引号了。 所以像上次那样绕过就不行了。
那就再来找找其他的突破口。
这里可以看到。
如果$where 不是数型的话 就没有单引号保护的。
这个有点不太符合我的常识啊。 不是一般数型的才不用单引号保护,字符串才用单引号保护的么?
不懂程序猿的世界。
但是这里$where 不太好利用 因为过滤掉了= < >
一般是利用where id=user() 之类的来注入 需要自己添加一个等号之类的
但是这里过滤掉了= < >。
再找找其他的突破口。
可以看到这里 遍历 然后赋值。
这个被单引号保护了 无法利用。 但是这里有一个
这里是没有单引号保护的。 只要满足这个匹配 然后就可以无单引号啦。
哟西 好激动。
满足这个表达式后 他所执行的语句。
UPDATE `cmseasy_p_orders` SET `id`= 123,`status`= '4' WHERE [123]
但是过滤了= <> 我也没有什么好的注入办法。
我利用的是-号,然后用substr 一位一位的查询 然后对查询出来的结果 ascii 一次
然后再-掉一个数字。
例如 账户为admin substr 查询出来的第一位为a 然后ascii 后就为97.
然后这里就需要写一个脚本来跑了。
然后97-xx 只有当xx为97的时候 才不会延时 当为其他的数字的时候都会延时的。
Come on baby
漏洞证明:
我直接把语句输出来。
注释掉后面的 相当于就是说 执行的就是
UPDATE `cmseasy_p_orders` SET `id`= if(ascii(substr((select username from cmseasy_user),1,1))-96,sleep(1),null)
我这substr查询出来的是a 然后ascii 后就为97
可以看到的是 当剪掉的是正确数字的时候 是不会延时的。
但是减去其他任意数字的时候 都会延时的。
然后 把ascii转回来 就可以得到数据了。
这里需要写个脚本跑, 要不很慢啊。
修复方案:
继续过滤。
继续求高分。
版权声明:转载请注明来源 ′雨。@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-03-17 14:14
厂商回复:
感谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值