漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-020955
漏洞标题:百度BAE系列2:系统命令执行,/etc/passwd及读写其它用户文件等
相关厂商:百度
漏洞作者: blue
提交时间:2013-03-30 11:51
修复时间:2013-05-14 11:52
公开时间:2013-05-14 11:52
漏洞类型:命令执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-03-30: 细节已通知厂商并且等待厂商处理中
2013-03-31: 厂商已经确认,细节仅向厂商公开
2013-04-10: 细节向核心白帽子及相关领域专家公开
2013-04-20: 细节向普通白帽子公开
2013-04-30: 细节向实习白帽子公开
2013-05-14: 细节向公众公开
简要描述:
百度BAE环境对重要函数的限制方法不当,可突破执行系统命令,能读写服务器上存在的众多其它用户的程序文件。
详细说明:
问题存在于BAE的python环境中,对模块和函数的限制不当,比如上传ctypes模块(环境默认不存在此模块)可加载so扩展执行系统命令。先上shell(当然要有一个BAE的python应用,index.py):
当然,这是最后的分析结果,历程如下:
1.dir查看os,subprocess等模块,能执行命令的方法都被阉割了,import commands模块直接就是No module named commands。
2.上传自己本地的commands.py,能够import,不过执行系统命令不成功,是基于os模块的。虽然不成功,但打开了思路,只要上传相应的文件就能使用缺失的模块了。
3.执行so扩展会怎么样呐?ctypes模块不存在,果断上传自己本地的ctypes文件夹,成功import并能cdll。编译了一个so扩展上传,执行无结果并中断了程序,目测可能是编译环境和BAE的不一样。
4.BAE服务器上的so扩展怎么样呐?加载/lib64/libc.so.6,执行system成功,于是便有了上面的shell。
5.ls /home/bae/instanceall/instance1/codefs可看到其它用户的应用列表。尝试读取文件内容无压力,修改也无压力(测试修改了自己另外一php应用的文件,成功)。
漏洞证明:
修复方案:
禁用加载so扩展,不知是否可以采用更底层的限制方式?python的很多模块都是用python语言自身写的,从python层面限制module或函数等很容易通过上传相关文件的方式突破,望分享解决方案。
版权声明:转载请注明来源 blue@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2013-03-31 16:08
厂商回复:
感谢提交,已安排处理,后续修复方案相关将会及时同步至乌云!
最新状态:
暂无