漏洞概要
关注数(31)
关注此漏洞
漏洞标题: phpok前台任意文件上传getshell(官网已shell)
提交时间: 2014-06-02 13:54
公开时间: 2014-07-17 15:29
漏洞类型: 文件上传导致任意代码执行
危害等级: 高
自评Rank: 20
漏洞状态:
厂商已经确认
漏洞详情
披露状态:
2014-06-02: 细节已通知厂商并且等待厂商处理中
2014-06-03: 厂商已经确认,细节仅向厂商公开
2014-06-06: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-07-28: 细节向核心白帽子及相关领域专家公开
2014-08-07: 细节向普通白帽子公开
2014-08-17: 细节向实习白帽子公开
2014-07-17: 细节向公众公开
简要描述:
另一个更好用的0day已经没了,把这个也放出来,官网已shell。
详细说明:
/framework/www/upload_control.php第45行:
调用了upload_base,跟进去看看:
调用了$this->upload来上传文件。继续跟进去看看:
仔细观察最后两个if语句,第一个是copy,第二个才是判断后缀名。也就是说它先把我上传的任意文件copy到web目录下,再判断了这个文件后缀是否合法。而且判断完毕后并没有删除不合法的文件。
所以我们可以利用这一点来上传任意文件,虽然最后我不知道上传后的文件名,但这个文件名是可以爆破出来的。
文件名命名规则:substr(md5(time().rand(0,9999)),9,16)
取当前时间 和 0-9999之前的随机数的md5值。这个好说,当前时间基本就在发包以后的1~3秒,4位随机数。也就说我只用爆破大概1W到3W次就能找到我上传的文件了。
漏洞证明:
本地构造一个上传单页:
拉一个shell点击上传。中途抓包,查看返回包:
可以看到返回包的时间,这个时间基本上就是生成文件名的时候取的time()。
通过返回包里的Date计算出此时的时间戳,也就是重命名时候取的time()值(就算不是,相差也不会太大,一两秒内)
我计算出的时间戳值为1401619111
然后我简单写一个单线程脚本(py需要安装requests库),来跑一下数据包。上传的文件默认放在/res目录下,我们就来爆破一下这个文件名:
因为是本地,所以很快就跑出了shell的地址:
访问可见phpinfo:
危害性证明:
官网shell地址,也是我跑出来的,运气比较好,随机数比较小,跑了一分钟就出来了
http://**.**.**.**/res/49d39bf998b3e28e.php
修复方案:
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-06-03 10:14
厂商回复:
感谢您的意见,我真心没有想到有这么严重问题。我们正在努力处理
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
漏洞评价(共0人评价):
评价
-
2014-06-02 14:00 |
′ 雨。
( 普通白帽子 |
Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
0
-
2014-06-02 14:13 |
roker
( 普通白帽子 |
Rank:372 漏洞数:109 )
0
-
2014-06-02 14:15 |
′ 雨。
( 普通白帽子 |
Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
0
-
2014-06-02 14:31 |
Sunshie
( 实习白帽子 |
Rank:77 漏洞数:23 | http://phpinfo.meฏ๎๎๎๎๎๎๎๎๎๎...)
0
-
2014-06-02 14:31 |
mramydnei
( 普通白帽子 |
Rank:400 漏洞数:87 )
0
-
2014-06-02 14:44 |
phith0n
( 普通白帽子 |
Rank:804 漏洞数:125 | 一个想当文人的黑客~)
0
-
2014-06-02 14:49 |
Xser
( 普通白帽子 |
Rank:386 漏洞数:87 | JDSec)
0
-
2014-06-02 14:53 |
roker
( 普通白帽子 |
Rank:372 漏洞数:109 )
0
-
2014-06-02 16:23 |
索马里的海贼
( 普通白帽子 |
Rank:264 漏洞数:25 | http://tieba.baidu.com/f?kw=WOW)
0
你啥时候提交的啊。。。
我昨天提交了没审核。。。。
http://wooyun.org/bugs/wooyun-2014-063106/trace/cdf1cb4597ad11280adbdc024f4ef7fd
-
2014-06-02 16:38 |
saviour
( 普通白帽子 |
Rank:188 漏洞数:29 | Saviour.Com.Cn 网站正在备案中)
0
前台上传头像处,可以传shell,但是获取不了文件名,他的文件是随机生成的,还是有规律生成的?
-
-
2014-06-03 12:05 |
索马里的海贼
( 普通白帽子 |
Rank:264 漏洞数:25 | http://tieba.baidu.com/f?kw=WOW)
0
@phpok企业站 “另一个更好用的0day”来了 http://www.wooyun.org/bugs/wooyun-2014-063106/ 一起处理吧:)
-
2014-06-03 13:36 |
phith0n
( 普通白帽子 |
Rank:804 漏洞数:125 | 一个想当文人的黑客~)
0
@phpok企业站
礼物就不用了,你们处理的很及时很负责,感谢!
-
-
@phith0n 不及时不行啊,开发这个东东这么多年了,有感情了。公司的全部生活费全靠这个东东
-
2014-07-17 15:37 |
铁蛋火车侠
( 普通白帽子 |
Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)
0
-
2014-07-17 15:46 |
′ 雨。
( 普通白帽子 |
Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
0
4,30天后向实习白帽子公开;
5,45天后向公众公开;
师傅 我目测你这个没选择通用型。
-
2014-07-17 15:57 |
phith0n
( 普通白帽子 |
Rank:804 漏洞数:125 | 一个想当文人的黑客~)
0
-
2014-07-17 16:58 |
pandas
( 普通白帽子 |
Rank:701 漏洞数:79 | 国家一级保护动物)
0
-
2014-07-17 17:00 |
′ 雨。
( 普通白帽子 |
Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
0
@phith0n 看你这公开时间就知道啦 让狗哥帮你改改吧 要不没奖金的
-
2014-07-17 17:18 |
′ 雨。
( 普通白帽子 |
Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
0
普通漏洞:
1,5天厂商确认周期(5天内未确认视为忽略,直接公开);
2,10天后向核心及相关领域专家公开;
3,20天后向普通白帽子公开;
4,30天后向实习白帽子公开;
5,45天后向公众公开;
6,期间厂商可自行提前公开,向普通白帽公开的时候可以使用乌云币购买提前查看漏洞细节。
通用型漏洞:
1,5天厂商确认周期(5天内未确认视为忽略,但不公开,直接进入2);
2,确认3天后对安全合作伙伴公开
3,10天后向核心及相关领域专家公开;
4,20天后向普通白帽子公开;
5,40天后向实习白帽子公开;
6,90天后向公众公开;
7,不支持付乌云币提前查看漏洞。
再对比一下你这公开的时间 就知道没选通用咯。
-
2014-07-17 19:53 |
phith0n
( 普通白帽子 |
Rank:804 漏洞数:125 | 一个想当文人的黑客~)
0
@′ 雨。
似乎我给@疯狗 发信息他都没甩过我 >.<哭瞎了
-
2014-07-17 20:00 |
疯狗
( 实习白帽子 |
Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
0