漏洞概要
关注数(24)
关注此漏洞
漏洞标题:phpok前台任意文件上传getshell(官网已shell)
提交时间:2014-06-02 13:54
修复时间:2014-07-17 15:29
公开时间:2014-07-17 15:29
漏洞类型:文件上传导致任意代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
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://www.phpok.com/res/49d39bf998b3e28e.php
修复方案:
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-06-03 10:14
厂商回复:
感谢您的意见,我真心没有想到有这么严重问题。我们正在努力处理
最新状态:
暂无
漏洞评价:
评论
-
2014-06-02 14:00 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
-
2014-06-02 14:13 |
roker ( 普通白帽子 | Rank:357 漏洞数:108 )
-
2014-06-02 14:15 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
-
2014-06-02 14:31 |
Sunshie ( 实习白帽子 | Rank:58 漏洞数:10 | http://phpinfo.me)
-
2014-06-02 14:31 |
mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )
-
2014-06-02 14:44 |
phith0n ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)
-
2014-06-02 14:49 |
Xser ( 普通白帽子 | Rank:194 漏洞数:61 | JDSec)
-
2014-06-02 14:53 |
roker ( 普通白帽子 | Rank:357 漏洞数:108 )
-
2014-06-02 16:23 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
你啥时候提交的啊。。。我昨天提交了没审核。。。。http://wooyun.org/bugs/wooyun-2014-063106/trace/cdf1cb4597ad11280adbdc024f4ef7fd
-
2014-06-02 16:38 |
saviour ( 普通白帽子 | Rank:188 漏洞数:29 | Saviour.Com.Cn 网站正在备案中)
前台上传头像处,可以传shell,但是获取不了文件名,他的文件是随机生成的,还是有规律生成的?
-
-
2014-06-03 12:05 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
@phpok企业站 “另一个更好用的0day”来了 http://www.wooyun.org/bugs/wooyun-2014-063106/ 一起处理吧:)
-
2014-06-03 13:36 |
phith0n ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)
@phpok企业站 礼物就不用了,你们处理的很及时很负责,感谢!
-
-
@phith0n 不及时不行啊,开发这个东东这么多年了,有感情了。公司的全部生活费全靠这个东东
-
2014-07-17 15:37 |
铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)
-
2014-07-17 15:46 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
4,30天后向实习白帽子公开;5,45天后向公众公开; 师傅 我目测你这个没选择通用型。
-
2014-07-17 15:57 |
phith0n ( 核心白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)
-
2014-07-17 16:58 |
pandas ( 普通白帽子 | Rank:585 漏洞数:58 | 国家一级保护动物)
-
2014-07-17 17:00 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
@phith0n 看你这公开时间就知道啦 让狗哥帮你改改吧 要不没奖金的
-
2014-07-17 17:18 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
普通漏洞: 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:656 漏洞数:107 | 一个想当文人的黑客~)
@′ 雨。 似乎我给@疯狗 发信息他都没甩过我 >.<哭瞎了
-
2014-07-17 20:00 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)