漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-068670
漏洞标题:Phpyun注入一枚绕过360注射附exp
相关厂商:php云人才系统
漏洞作者: ′雨。
提交时间:2014-07-16 10:23
修复时间:2014-10-14 10:24
公开时间:2014-10-14 10:24
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-07-16: 细节已通知厂商并且等待厂商处理中
2014-07-16: 厂商已经确认,细节仅向厂商公开
2014-07-19: 细节向第三方安全合作伙伴开放
2014-09-09: 细节向核心白帽子及相关领域专家公开
2014-09-19: 细节向普通白帽子公开
2014-09-29: 细节向实习白帽子公开
2014-10-14: 细节向公众公开
简要描述:
可以引入单引号, 但是在这里也不需要引入单引号。
虽然有360 但是还是能注入出密码。
写了个小脚本来跑。(代码很渣 速度很慢 但是还是能跑完整) - - 特么的完全不会写, 太渣了。
详细说明:
在model/register.class.php中。
首先在这里 $post = array_keys($_POST);
获取了POST来的key 。$key_name = $post[0]; 然后$key_name从数组里面取了第一个。
都知道phpyun的全局过滤会把单引号过滤的, 但是那是针对value 在这里是key 所以完全可以引入单引号。 但是在这里并不需要引入单引号。。
继续看。
可以 如果$key_name != username就进入else 继续看。
$this->obj->DB_select_once("member","`".$key_name."`='".$_POST[$key_name]."'");
然后就直接带入到了查询当中,而且是做的key。
这里执行的语句为
SELECT * FROM phpyun_member WHERE `xx`='asd'
这里xx 和 asd都是可控的 这里asd那里肯定是不能利用的 因为在value 单引号会被转义的。
这里来控制key 这里构造一下。
因为key中不能含有空格 所以空格就用+号来替换一下。
这里来构造一下key
username`or%2Bif(ascii(substr(password,$yu,1))=$i,1,0)#=asd
有360webscan 但是这语句可以通过360webscan的。
可是在这里 key中也不能含有=号 会被替换`=
这简单 把=号换成<>
username`or%2Bif(ascii(substr(password,$yu,1))<>$i,1,0)#=asd
在这里如何查询出来的和$i想等 那么就会输出0 其他情况就会输出1.
这里写个小脚本。
P.S. 没学过语言。。 完全都是瞎写的, 刚好之前写的74cms那个和现在这个差不多。 直接用那个改一下就可以了
漏洞证明:
修复方案:
限制一下key。
版权声明:转载请注明来源 ′雨。@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:7
确认时间:2014-07-16 10:28
厂商回复:
感谢您的提供,我们会尽快修复!
最新状态:
暂无