您现在的位置是:探索 >>正文
ShopXOdownload任意文件读取漏洞
探索94119人已围观
简介ShopXO这个开源商城系统,最近被爆出一个挺扎心的漏洞——任意文件读取。攻击者不用登录,直接发个精心构造的HTTP请求,就能把服务器上任意文件的内容给扒走。不是只读个配置文件那么简单,连数据库备份、 ...
ShopXO这个开源商城系统,任意最近被爆出一个挺扎心的文件漏洞——任意文件读取。攻击者不用登录,漏洞直接发个精心构造的任意HTTP请求,就能把服务器上任意文件的文件内容给扒走。不是漏洞只读个配置文件那么简单,连数据库备份、任意源码、文件甚至/etc/shadow这种系统文件都有可能被拖出来。漏洞
漏洞出在public/index.php的任意某个路由参数上。具体来说,文件ShopXO在处理下载功能时,漏洞对文件名参数过滤得不够严。任意开发者的文件本意是让用户下载一些公开的附件,比如商品图片或者PDF说明书,漏洞代码里大概长这样:
$file = $_GET['file']; $path = '/var/www/uploads/' . $file; readfile($path); 问题就出在$file没做任何过滤。攻击者把file参数改成../../../../etc/passwd,路径就直接跳出了uploads目录。更狠一点的,可以配合php://filter流协议,把PHP源码用base64编码读出来。比如请求/index.php?file=php://filter/convert.base64-encode/resource=config/database.php,数据库账号密码就暴露了。
我实际测试了一下,在本地搭了个ShopXO环境。发送构造好的请求,响应里直接返回了/etc/passwd的内容,root用户的信息清清楚楚摆在眼前。整个过程不超过五秒,没有任何权限校验。这要是放在生产环境,服务器基本等于裸奔。
这个漏洞的影响面不小。ShopXO在GitHub上有不少star,很多中小商家用它在做独立站。这些站长往往没有专职安全人员,补丁更新也不及时。更麻烦的是,ShopXO的下载功能还支持多种协议,攻击者甚至可以尝试file://或者dict://去探测内网服务,把SSRF也串起来玩。
官方在2.3.1版本里修复了这个问题,核心改动就是加了realpath()校验和目录白名单。但现实情况是,很多站点还在跑老版本,或者用了二次开发的定制版,压根没法直接覆盖升级。有个做外贸的朋友跟我说,他的站点用的是别人改过的模板,一升级整个前端样式全乱,只能手动打补丁。
说实话,这种任意文件读取漏洞在PHP开源项目里太常见了。根子在于很多开发者习惯直接用用户输入拼路径,觉得只要前端控制一下就行。可实际上,HTTP请求是可以随意伪造的,前端限制就是个摆设。写代码的时候多写一行strpos(realpath($path), $baseDir) === 0的判断,就能堵住这个坑。
最后提个醒,如果你正在用ShopXO,赶紧去后台看版本号。低于2.3.1的,别管什么模板兼容问题了,先想办法把漏洞堵上。最简单的临时方案,在Nginx或Apache层加一条规则,拦截包含php://filter或者../的请求。等模板适配好了,再彻底升级也不迟。别等到服务器被脱了库才后悔,那会儿连哭都找不着调。
Tags:
上一篇:金融圈子到底有多混乱
下一篇:怎么读黑帽
相关文章
上传漏洞的防御方法包括
探索上传漏洞的防御,核心就一句话:把用户上传的文件当成不可信的外部输入,而不是信任的本地资源。很多开发者栽跟头,就是因为潜意识里觉得“文件传上来了就是我的了”,于是直接拼路径、直接给执行权限、直接暴露在w ...
【探索】
阅读更多安阳锅检所电话
探索安阳锅检所的电话,我拨过三次。第一次是帮朋友问锅炉年检的事,第二次是自家商铺的燃气锅炉要换证,第三次纯粹是打错了。但就这三次,让我对这串号码的印象深得很——它比114查号台给出的信息还准,比网上搜到的 ...
【探索】
阅读更多一级建造师查询黑科技
探索凌晨两点,我在电脑前盯着一级建造师成绩查询页面,F5按了快三十次。页面还是那个死样——"系统繁忙,请稍后再试"。 后来我发现了一个野路子。不是破解,不是走后门,纯粹是跟查询系统的服务器较劲。那天晚上我 ...
【探索】
阅读更多