综合

信呼oa图片上传漏洞

时间:2010-12-5 17:23:32  作者:百科   来源:娱乐  查看:  评论:0
内容摘要:```html 信呼OA图片上传漏洞 body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, H

```html 信呼OA图片上传漏洞

信呼OA图片上传漏洞

上周帮一个朋友看他们公司的内网OA,用的图片是信呼。本来只想查个登录日志,上传结果顺手点了一下头像上传,漏洞发现事情没那么简单。信呼

信呼OA的图片图片上传接口在 /index.php?m=upload&a=img 这个位置。正常流程是上传前端选图,后端校验后缀、漏洞MIME,信呼然后存到 /upload/ 目录下。图片但问题出在校验逻辑上——它只检查了文件扩展名,上传而且用的漏洞是黑名单。

黑名单里写了 php、信呼php5、图片phtml 这些常见后缀。上传可它漏了一个东西:.pht。Apache 在某些配置下会把 .pht 当成 PHP 解析。你传一个 shell.pht 上去,内容写 <?php @eval($_POST['x']); ?>,访问 /upload/shell.pht,直接就是 webshell。

更离谱的是,它连 MIME 类型都没认真验。你抓包把 Content-Type 改成 image/jpeg,文件名写 test.pht,后端照单全收。我试了一下,返回的 JSON 里 code 是 0,msg 是“上传成功”,路径直接拼在 data.url 里。没有任何二次渲染,没有重命名,连时间戳都不加。

实际测试: 用一个普通账号(非管理员),上传 1.pht,内容是一句话木马。成功。访问 http://oa.example.com/upload/1.pht,蚁剑直接连上。整个过程不到两分钟。

为什么这种漏洞还能在 2024 年出现?我翻了一下信呼的更新记录,图片上传这块最近一次改动是 2022 年,只是加了几个黑名单后缀。开发者的思路大概是“用户传图片,我拦掉危险的就行”。但黑名单永远有漏网之鱼,.pht、.phar、.inc,甚至 .php.(在某些 Nginx 配置下)都能绕过。

正确的做法应该是白名单:只允许 jpg、png、gif,并且用 getimagesize() 验证图像内容。文件名要重写,比如 md5(时间戳).jpg,存到非 Web 根目录或者至少禁止执行权限。信呼一样没做。

还有个细节:上传目录的权限是 755,属主是 www-data。这意味着上传的 .pht 文件可以被 Apache 执行。如果运维把 php_admin_flag engine off 加在 /upload/ 目录下,就算传上去也跑不起来。但大多数中小企业的运维根本不会配这个。

我后来搜了一下,信呼的官方论坛里有人 2023 年就提过 .pht 的问题,官方回复是“建议修改黑名单”。这态度挺敷衍的。黑名单改来改去,永远追不上解析漏洞的变种。与其打补丁,不如重写上传逻辑。

如果你正在用信呼OA,赶紧去 /upload/ 目录下看看有没有奇怪的文件。或者更直接点,把上传目录的 PHP 解析关掉。Nginx 加一行 location ~* /upload/.*\.(php|pht|phar)$ { deny all; },Apache 就在 .htaccess 里写 php_flag engine off。别等被人传了马再后悔。

这漏洞不复杂,但危害不小。一个普通员工账号就能拿到服务器权限,内网横向移动不要太方便。写出来就是提醒一句:别太信那些“成熟”的国产 OA,该审计还得审计。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap