漏洞概要 关注数(4) 关注此漏洞
缺陷编号: WooYun-2014-68362
漏洞标题: 74cms (20140709) 二枚二次注入
相关厂商: 74cms.com
漏洞作者: ′雨。
提交时间: 2014-07-13 14:16
公开时间: 2014-10-11 14:18
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-07-13: 细节已通知厂商并且等待厂商处理中
2014-07-16: 厂商已经确认,细节仅向厂商公开
2014-07-19: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-09-09: 细节向核心白帽子及相关领域专家公开
2014-09-19: 细节向普通白帽子公开
2014-09-29: 细节向实习白帽子公开
2014-10-11: 细节向公众公开
简要描述:
不好好的通过修改造成漏洞的代码 而是通过修改过滤函数。
现在的过滤函数, 虽然我是绕不过去了。
但是还是能找到几处能出数据的。
之前未通过,这次两个打个包来。
P.S:这很不好意思 之前测试demo的时候 因为有个是个update的点 忘记加where限制条件了 导致给某处全部都出数据了。。。。。
不只应该修改过滤函数,而且也应该在造成漏洞的代码好好的修复一下。
详细说明:
第一枚。 第一枚就不分析代码了。
首先注册一个企业会员 然后创建企业
单引号会被转义 然后转义入库。
找找出库的地方。
然后创建好企业后 发布招聘 如下。
点击发布后 可以看到报错了。 这里刚才的企业名出库了 而且带入到了查询当中。
这里稍微构造下还是能出数据。 这个咋出数据就不多说了, 第二处再来说说出数据。
_____________________________________________________________________________
第二处
与上个不同的是 这个是注册一个个人会员
然后发布简历。
来看代码
在user/personal/personal_resume.php中
inserttable(table('resume_education')
这里把post来的数据带入到了insert当中 入库。
这里我们提交一个单引号 然后带入insert的时候虽然是转义
但是入库后会消除转义符。
然后继续看 check_resume
$resume_education=get_resume_education($uid,$pid);
这里把刚才入库的查询了出来 所以单引号就出来了。 继续看。
然后把出库来的给一数组 然后带入到了update中。
造成了注入。 而且这个update 可以控制的点是在set位置的
所以可以是我们想update这table里面的什么就update什么。
报错了 稍微构造一下。
这里我们把address updata成要出的数据
成功了对关键字的过滤出数据。
测试了一下demo 也成功
http://**.**.**.**/resume/resume-show-6271.htm
漏洞证明:
见上面。
修复方案:
真的应该好好的修改代码 而不是光修改过滤函数。
对于这种二次注入 由于入库的时候只会调用一次stripcslashes
74cms做了全局转义的 如果再转义一次 那么就算入库也会含有转义符了。 自然出库也有了。
或者就是在出库之后再addslashes一次 都行。
版权声明:转载请注明来源 ′雨。@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-07-16 15:41
厂商回复:
感谢反馈!
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值