漏洞概要 关注数(28) 关注此漏洞
缺陷编号: WooYun-2014-63222
漏洞标题: phpdisk任意文件上传getshell(官网已shell)
相关厂商: phpdisk.com
漏洞作者: phith0n
提交时间: 2014-06-03 12:20
公开时间: 2014-09-01 12:22
漏洞类型: 文件上传导致任意代码执行
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 任意文件上传 php源码审计 任意文件上传
漏洞详情
披露状态:
2014-06-03: 细节已通知厂商并且等待厂商处理中
2014-06-03: 厂商已经确认,细节仅向厂商公开
2014-06-06: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-07-28: 细节向核心白帽子及相关领域专家公开
2014-08-07: 细节向普通白帽子公开
2014-08-17: 细节向实习白帽子公开
2014-09-01: 细节向公众公开
简要描述:
M老师指哪个cms,我就打哪个cms~真是幸福~~
无需登录,无需权限,直接getshell。
详细说明:
上传位置在plugins/phpdisk_client/client_sub.php
首先验证user-agent,然后从解密字符串里拿到了一个用户名和密码:
拿到用户名和密码以后,进入数据库查询,但查询出错后echo出来“网盘登录出错:用户名或密码不正确,请重新输入”并没退出。这个就没有用了,不需要知道加密字符串,也不用登陆。
所以继续往下看,
进入case以后调用upload_file上传,文件名就直接用的$file[name]。
跟一下upload_file看看:
没有验证。直接拷贝进去了。
虽然case那块后面有个unlink对上传的文件进行删除,不过因为之后有一处数据库查询失败,导致这个unlink没有执行。(应该是,我没细看,反正没执行,我的shell没被删)
利用详见漏洞证明。
漏洞证明:
本地构造一个上传单页:
选择shell上传,中途抓包。
改user-agent为“phpdisk-client”,不改不能上传。
发送。
返回包是这样的:
这个时候查看/system/cache/即可看到shell:
官网demo站shell已拿下:
http://**.**.**.**/v/system/cache/info.php
ps.我看到有前辈的phpinfo了,呵呵。。。前辈们果然都手握0day
修复方案:
你猜~
版权声明:转载请注明来源 phith0n@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2014-06-03 19:59
厂商回复:
感谢反馈
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值