昨晚在某群讨论 phpStudy 时,某大牛直说, phpstudy 的 fastcgi 安全性问题,并说了是解析漏洞 a.jpg/1.php
本人也是一方良辰,对于此漏洞也分析过,这个漏洞是 nginx 和 fastCGI 下触发的,由于 phpFPM 默认只解析 php 文件,如果用解析漏洞访问会返回 Access denied ,所以我是没测试过这个漏洞的。
本着以理服人的原则,本人还是对 phpstudy 进行了一下测试,结果自己的脸肿的都不敢摸了。。
phpstudy 刚刚更新, nginx 更新到了 1.9.9 ,增加了 php7 的支持,由于 win10 兼容问题,我这里只能启用 php5.5
当我用 /.php 访问时
我他么尿了。。
解析了,先不惊慌,能跨目录吗?
不惊慌,跨目录怕啥,权限在这不是?
嗯?权限呢??
没错,是当前用户,所有目录畅行无阻
你可能会说,这有啥?别人能访问吗?
能,因为默认监听了所有 IP
触发漏洞的条件也是默认开启的。
你可能疑问,这有啥?
我们设想一下,当你在咖啡厅,愉快的写着 PHP ,然后第二天,你的源码满天飞
这并不可怕,最可怕的是,什么都没发生。
就如同 linux 某编译器后门,多年后才被发现
为什么会发生?
1.默认监听了所有 IP ,内网都可以访问
2.触发漏洞的条件具备
3.fastCGI 权限过高,导致硬盘访问无阻
你必须承认,在你写代码的时候不会过多考虑权限问题,甚至你会用一个 update.php 上传文件,这本身已经足够严重了。
SO ?便捷的危险,复杂的安全,是时候选一个了!
最后可能有人会说,我不是 windows 啊?
那我只能说,我尽力了,但我救不了你
1
62900015 2016-02-24 19:58:30 +08:00
3.fastCGI 权限过高,导致硬盘访问无阻 //你 administrators 组的,干啥都可以。
|
2
shyling 2016-02-24 20:00:59 +08:00
看不懂,太深奥。有上传权限么,本地开发再也不会弄个 php 文件管理器吧
|
5
VmuTargh 2016-02-24 20:05:26 +08:00
汪汪姐我就想问这玩意 apache 有没有问题
|
6
k9982874 2016-02-24 20:05:35 +08:00
这个有点 NB 啊
|
11
Andy1999 2016-02-24 20:07:51 +08:00 via iPhone
你在用 administrator 组跑 Nginx PHP 默认获得到的权限就是最高级的
|
12
shiny 2016-02-24 20:08:55 +08:00
老漏洞了,当前就靠这个漏洞蹭了某网站一顿饭
|
13
shiny 2016-02-24 20:09:46 +08:00
而且这个问题在不当配置的 nginx + fpm 中都会出现
|
15
Strikeactor 2016-02-24 20:15:07 +08:00
我不是 Windows 啊
救不了是啥意思? |
16
tntsec OP @Strikeactor 因为通篇叙述都没有提到 windows ,这是个跟系统无关的问题
|
19
Strikeactor 2016-02-24 20:21:29 +08:00
|
20
virusdefender 2016-02-24 20:24:49 +08:00
第一眼看到了 webshell ,还以为 phpstudy 自带了 shell 呢。
不过你说的问题也确实不该出现。 |
21
Citrus 2016-02-24 20:26:40 +08:00 via iPhone
没懂,如果我正在开发的代码完全没有上传接口呢?
|
22
niaoren 2016-02-24 20:33:20 +08:00
我记得这个是老问题了, php 官方也提过。
是 nginx 的 fastcgi_split_path_info 和 php 的 fix_pathinfo 不兼容 |
23
geeglo 2016-02-24 20:33:40 +08:00
怎么说呢,确实是漏洞,但是应该没人用这个当服务器环境吧。
至于代码泄露,要求这个条件太苛刻了吧。 |
25
orFish 2016-02-24 20:41:28 +08:00
linux 下你也可以配置的很不完全的。。。
|
26
raincious 2016-02-24 20:44:18 +08:00
@geeglo
我也是这样想的,“学习”环境嘛,谁敢用来开真服务器。但是有一天我看到了某朋友开了个网站,顺手敲了下 /phpmyadmin ,然后 root/root 进去之后发现还可以 SELECT INTO OUTFILE 。当时我就乐了。 |
28
tntsec OP @Citrus 这不是漏洞,这是配置错误
就跟 apache2.2 默认列目录 而 apache2.4 默认不列目录 他只是一个特性,跟 php 特性在一起就触发成漏洞了,解决办法也很简单 但本文仅仅指出开发环境而不是服务器环境 |
29
tntsec OP |
30
kn007 2016-02-24 21:00:49 +08:00
不要在公共场所,或 DMZ 主机上用,一般没什么问题。。。
|
31
kn007 2016-02-24 21:02:28 +08:00
很多软件都是检测全局:端口(比如 0.0.0.0:80 ),这没办法。本身软件在用户授权和配置上不可能做到那么细,太细有些东西不利于新手调试。要知道,一般工具面向对象是小白。
|
33
kn007 2016-02-24 21:09:23 +08:00
@tntsec 或许吧,只是我从不在非信任区上网,即便带笔记本,我一般也不联网。。。所以。。。呵呵。。。
你要明白,我并不是否认你说的。 如果这篇帖子能举几个例或新闻,或许更有说服力。 但是工具,你要明白,好用才是硬道理,如果因为安全,关闭某些功能,而小白尝试使用这种功能未果。 你知道的,小白不会承认自己笨自己傻,只会认为你这个工具不好用而已。 所以既然你本身有安全知识,我觉得在用这种第三方工具时,也尽量还是自己配置下为好。 大部分工具还是定义为小白使用,配置其实也是公开可改的,拥有能力和条件的,也可以自行修改,并不矛盾。 |
35
maskerTUI 2016-02-24 21:14:00 +08:00 via Android
配合上传点来干活的话,确实是个有重大安全隐患的漏洞。
|
36
kn007 2016-02-24 21:17:05 +08:00
@tntsec 对,没错,总有比自己低水平的,不是么?
你是就此满足,还是继续探究呢? 我还是强调一下,没有否定你这张帖子。上面这句也只是说继续努力的意思。 个人觉得这些有点老生常谈了,但是不知道有没有倒绷孩的(笑 |
37
jacy 2016-02-24 21:30:46 +08:00
正准备说还是不懂的时候突然懂了
楼主你就说 1.jpg 其实是 php 代码扩展名为 jpg ,这下别人就都懂了 |
38
xuhaoyangx 2016-02-24 22:07:40 +08:00
老问题了。这个参数默认都是改成 0 ,一般也不用一键,除非快速演示搭建。 Win 一般喜欢用 apache 的一键环境,偶尔会用 nginx 反代下
要有被黑了,才有注意这方面的觉悟,不然一般跟他讲安全,一大批人只会和你呵呵 |
40
lecher 2016-02-24 23:43:29 +08:00 via Android 1
http://www.v2ex.com/t/228961
论站内搜索的重要性。漏洞的原理 2012 年就被发出来了,上面这个链接之前就讨论过原理和解决方案。 楼主用这个标题颇有闭关多年重新发明轮子的感觉。 令人震惊的是,竟然还有那么多的自动配置工具不考虑在配置加上检测脚本类型才执行的处理。反正 Nginx 和 PHP 都不打算就这个交互环境的 bug 做修复了。 |
41
Citrus 2016-02-25 01:36:22 +08:00 via iPhone
@tntsec 我明白你说的,我的问题是,你说的这个漏洞或者问题也好,触发的前提起码正在开发的网站要有上传接口。如果没有一样不能触发,不是么?
|
42
yeyeye 2016-02-25 10:41:45 +08:00
upupw 不知道有没有这问题。反正对 WIN 平台的这类工具表示很无语(主要是运行权限过高),以前 IIS 设置权限都要搞一大堆设置,最重要的是低权限账号……
|
43
wslsq 2016-02-25 12:05:50 +08:00
这个老漏洞我就不多说了。。。我只想说我的 win10 可以启动 phpstudy 里的任何 php 版本啊
|
44
Ruiming 2016-02-25 15:21:56 +08:00 via Android
以前在 win 本地就是用 phpstudy 的,自从写 laravel 后就用 vagrant 了。没注意到这些东西。
|
45
ershisi 2016-02-25 17:27:55 +08:00
ng 解析 iis 解析 都是老洞了。问题就在后缀解析上。
|
46
tntsec OP @lecher 论站内搜索的重要性
但是,这跟那个完全是两个漏洞,那是 dedecms 的漏洞,用的是 php 文件包含,那本来就是 PHP 这个是 nginx 解析漏洞,任意文件都能解析为 php ,属于配置错误 “竟然还有那么多的自动配置工具不考虑在配置加上检测脚本类型” 不管是你链接里的漏洞还是我这个漏洞,都跟检测脚本类型没半点关系 不懂不可怕,不懂装懂最可怕 |
50
jhdxr 2016-02-25 19:53:26 +08:00
集成包自己学习还行,用于生产环境就是自己找死
|
52
Citrus 2016-02-28 01:23:53 +08:00 via iPhone
@tntsec 我的意思是,在没有解析漏洞的情况下,另外两个问题虽然也比较严重,但是就没有你说的这么严重啦
|
53
wulasite 2017-03-15 11:45:01 +08:00
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
如果数据库提示这种是不是就不可以了。 |