网站被传了后门,php 代码写在一个 gif 后缀的文件里面, nginx 怎么写 deny 规则

2015-10-18 14:42:29 +08:00
 ab
程序是个 DEDE, 我只是禁止了一些比较敏感的目录.

想对文件类型对做一下限制,求个规则
10283 次点击
所在节点    NGINX
54 条回复
kn007
2015-10-18 17:23:34 +08:00
@ab 能去 include/require 的,肯定具有 php 执行权限了,他把本来没有权限的文件读到其附属内存里,继续读,不就可以执行了。。所以问题不是出在,你那没有权限的文件。而是你为何当前 php 文件要去包含该文件,如果确信这是必须包含的(我反正没听说会在 php 里 include/require 一个图片文件),那么就要处理图片所在目录的实际权限了。
loveminds
2015-10-18 17:46:58 +08:00
@kn007 比较怪,从没见过图片要这样
kn007
2015-10-18 17:50:35 +08:00
@loveminds 我倒是觉得一开始就被留后门,哈哈。毕竟有权限修改 php ,还去上传什么图片。。
lostsnow
2015-10-18 17:51:51 +08:00
include/require 里只要有<?php ?> 都会被执行的
lshero
2015-10-18 17:58:13 +08:00
上传的目录别给执行权限呗
lecher
2015-10-18 18:14:43 +08:00
location ~ \.php {
fastcgi_index index.php;
#安全检查
if ($request_filename ~* (.*)\.php) {
set $phpFile $1;
}
if (!-e $phpFile.php) {
return 403;
}

fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi_params;
}

我们项目的坑里是这么解决这个漏洞的。
在 php 的执行检查里面加上类型检查。
#安全检查
if ($request_filename ~* (.*)\.php) {
set $phpFile $1;
}
if (!-e $phpFile.php) {
return 403;
}
这样可以保证非 php 文件不会被执行。
stanhou
2015-10-18 18:46:03 +08:00
@ab 你这段代码是哪里的?
```
<?php require_once (dirname(__FILE__) . "/../../templets/3vpk/images/mood/ico-mood-16.gif"); ?>
```
及时 gif 就是图片, php 为什么要去 require 一个图片文件?
如果是为了输出文件同时保护文件路径,那就改成读取内容然后输出。直接 reqire 简直开玩笑啊。
kongkongyzt
2015-10-18 19:25:39 +08:00
@ab 我的疑惑和大家是一样的....既然能上传一个 require 了 gif 的 php 文件,那何必再上传 gif 呢,直接利用上传的 PHP 不就可以了.....除非这个是预先就留下的后门
iyaozhen
2015-10-18 19:31:56 +08:00
看来那个能 require xxx.gif 的是后门吧。然后通过正规渠道上传 gif 来入侵。
lecher
2015-10-18 19:42:01 +08:00
还是有人没有仔细看 lostsnow 给的链接啊。
那个链接把原理说得挺清楚了,在默认配置下,可以让 PHP 解释器执行后缀为图片类型或者其它任意类型的文件。
所以攻击原理就是把 PHP 攻击代码以图片文件的形式传到服务器上面再构造执行请求,就可以执行任意 PHP 代码。能执行代码的情况下,再生成什么文件都很正常。

所以只要有上传图片的接口可以用,很可能是通过图片执行漏洞去创建的 PHP 文件。
free9fw
2015-10-18 20:37:03 +08:00
在图片那个目录禁止执行 php 即可
jarlyyn
2015-10-18 21:02:50 +08:00
当年 所谓 lnmp 的安全漏洞么?
POP
2015-10-18 21:15:25 +08:00
文件包含吧
Felldeadbird
2015-10-18 22:12:09 +08:00
纯图片的话,应该是图片木马。
可看到楼主说又 require ,这个就不是单纯的图片木马了。应该是从其他方面入侵的。 require 函数不一定加载 PHP 后缀文件的。楼上已经有人说了
ksupertu
2015-10-19 02:54:51 +08:00
上安全狗 nginx 版
ksupertu
2015-10-19 02:58:36 +08:00
常规入侵的时候由于代码限制只能上传图片的话,就可以用 php 代码以 gif 等 jpg 类型上传,稍微高级点可以使用 burpsuite 截断攻击,上传的时候是图片文件,截断后改为 jsp php 等等可执行脚本,这个是很老的一个技术了;所以你还是上一个网马防护软件吧
M4ster
2015-10-19 08:26:33 +08:00
单纯的 deny 是治标不治本。找到程序的漏洞出在哪里,才能真正解决此问题。
qunxyz
2015-10-19 08:47:03 +08:00
查 log ,找出漏洞利用的地方,想办法修复。其他方法扯淡
ab
2015-10-19 08:57:46 +08:00
谢谢大家
hack
2015-10-19 09:00:38 +08:00
好典型的 LFI

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/228961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX