漏洞概要
关注数(24)
关注此漏洞
漏洞标题:Phpyun注入一枚绕过360注射附exp
提交时间:2014-07-16 10:23
修复时间:2014-10-14 10:24
公开时间:2014-10-14 10:24
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
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那个和现在这个差不多。 直接用那个改一下就可以了
漏洞证明:
脚本跑出来的 和数据库中的用户密码一样。
- - 就是脚本太渣了, 速度比较慢。
修复方案:
版权声明:转载请注明来源 ′雨。@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:7
确认时间:2014-07-16 10:28
厂商回复:
感谢您的提供,我们会尽快修复!
最新状态:
暂无
漏洞评价:
评论
-
2014-07-16 10:38 |
roker ( 普通白帽子 | Rank:357 漏洞数:108 )
-
2014-07-16 10:44 |
泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)
-
2014-07-16 11:05 |
Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)
-
2014-09-06 18:06 |
从容 ( 普通白帽子 | Rank:221 漏洞数:75 | Enjoy Hacking Just Because It's Fun :) ...)
-
2014-09-06 19:41 |
泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)
-
2015-01-01 22:51 |
flying ( 路人 | Rank:4 漏洞数:2 | 呵呵)