V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tntsec
V2EX  ›  互联网

[安全警告] 一键 php 开发环境暗藏杀机, phpstudy 一键包

  •  1
     
  •   tntsec · 2016-02-24 19:53:30 +08:00 · 12594 次点击
    这是一个创建于 2955 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨晚在某群讨论 phpStudy 时,某大牛直说, phpstudy 的 fastcgi 安全性问题,并说了是解析漏洞 a.jpg/1.php

    本人也是一方良辰,对于此漏洞也分析过,这个漏洞是 nginx 和 fastCGI 下触发的,由于 phpFPM 默认只解析 php 文件,如果用解析漏洞访问会返回 Access denied ,所以我是没测试过这个漏洞的。

    本着以理服人的原则,本人还是对 phpstudy 进行了一下测试,结果自己的脸肿的都不敢摸了。。

    phpstudy 刚刚更新, nginx 更新到了 1.9.9 ,增加了 php7 的支持,由于 win10 兼容问题,我这里只能启用 php5.5
    当我用 /.php 访问时
    我他么尿了。。

    QQ 截图 20160224184800.png

    解析了,先不惊慌,能跨目录吗?

    QQ 截图 20160224185412.png

    不惊慌,跨目录怕啥,权限在这不是?
    嗯?权限呢??
    没错,是当前用户,所有目录畅行无阻
    QQ 截图 20160224185518.png

    QQ 截图 20160224185455.png

    你可能会说,这有啥?别人能访问吗?
    能,因为默认监听了所有 IP

    QQ 截图 20160224190150.png
    触发漏洞的条件也是默认开启的。

    QQ 截图 20160224184934.png

    你可能疑问,这有啥?
    我们设想一下,当你在咖啡厅,愉快的写着 PHP ,然后第二天,你的源码满天飞
    这并不可怕,最可怕的是,什么都没发生。
    就如同 linux 某编译器后门,多年后才被发现

    为什么会发生?
    1.默认监听了所有 IP ,内网都可以访问
    2.触发漏洞的条件具备
    3.fastCGI 权限过高,导致硬盘访问无阻

    你必须承认,在你写代码的时候不会过多考虑权限问题,甚至你会用一个 update.php 上传文件,这本身已经足够严重了。

    SO ?便捷的危险,复杂的安全,是时候选一个了!

    最后可能有人会说,我不是 windows 啊?
    那我只能说,我尽力了,但我救不了你

    第 1 条附言  ·  2016-02-24 21:17:08 +08:00
    好像很多人不知道我发的啥?

    这个解析漏洞的危险在于

    并不是权限大

    而是,他可以把任意文件解析成 php

    例如用户头像 1.jpg

    解析漏洞直接在地址后加 /.php 既可以把 1.jpg 解析为 php
    53 条回复    2017-03-15 11:45:01 +08:00
    62900015
        1
    62900015  
       2016-02-24 19:58:30 +08:00
    3.fastCGI 权限过高,导致硬盘访问无阻 //你 administrators 组的,干啥都可以。
    shyling
        2
    shyling  
       2016-02-24 20:00:59 +08:00
    看不懂,太深奥。有上传权限么,本地开发再也不会弄个 php 文件管理器吧
    tntsec
        3
    tntsec  
    OP
       2016-02-24 20:01:48 +08:00
    @shyling nginx 解析漏洞仅需要上传图片 然后 jpg/.php 就能解析
    tntsec
        4
    tntsec  
    OP
       2016-02-24 20:02:11 +08:00
    @shyling 这不是 PHP 文件管理器,这是 webshell
    VmuTargh
        5
    VmuTargh  
       2016-02-24 20:05:26 +08:00
    汪汪姐我就想问这玩意 apache 有没有问题
    k9982874
        6
    k9982874  
       2016-02-24 20:05:35 +08:00
    这个有点 NB 啊
    VmuTargh
        7
    VmuTargh  
       2016-02-24 20:05:43 +08:00
    @VmuTargh 在使用 FastCGI 的情况下
    tntsec
        8
    tntsec  
    OP
       2016-02-24 20:06:08 +08:00
    @VmuTargh apache 没有这个解析漏洞,仅仅是没有这个而已
    tntsec
        9
    tntsec  
    OP
       2016-02-24 20:06:37 +08:00
    @VmuTargh 你可以自己试试
    VmuTargh
        10
    VmuTargh  
       2016-02-24 20:07:49 +08:00
    @tntsec 待我把 git 部署一下
    Andy1999
        11
    Andy1999  
       2016-02-24 20:07:51 +08:00 via iPhone
    你在用 administrator 组跑 Nginx PHP 默认获得到的权限就是最高级的
    shiny
        12
    shiny  
       2016-02-24 20:08:55 +08:00
    老漏洞了,当前就靠这个漏洞蹭了某网站一顿饭
    shiny
        13
    shiny  
       2016-02-24 20:09:46 +08:00
    而且这个问题在不当配置的 nginx + fpm 中都会出现
    VmuTargh
        14
    VmuTargh  
       2016-02-24 20:13:26 +08:00
    @shiny 之前汪汪姐在看到我 openshift 跑的 nginx+php 配置就给我指出了这个漏洞
    Strikeactor
        15
    Strikeactor  
       2016-02-24 20:15:07 +08:00
    我不是 Windows 啊
    救不了是啥意思?
    tntsec
        16
    tntsec  
    OP
       2016-02-24 20:16:28 +08:00
    @Strikeactor 因为通篇叙述都没有提到 windows ,这是个跟系统无关的问题
    shyling
        17
    shyling  
       2016-02-24 20:20:22 +08:00
    @tntsec 然而不让上传 php 呢-=-
    shyling
        18
    shyling  
       2016-02-24 20:20:43 +08:00
    @tntsec 说错。。。指文件
    Strikeactor
        19
    Strikeactor  
       2016-02-24 20:21:29 +08:00
    @tntsec 配置是跟 Windows 无关,但你这一键包是 Windows 的啊。。莫名其妙写一句吓 Linux 用户干啥

    虽然 LNMP 那个一键包之前看到也有配置不当造成的漏洞就是了
    virusdefender
        20
    virusdefender  
       2016-02-24 20:24:49 +08:00
    第一眼看到了 webshell ,还以为 phpstudy 自带了 shell 呢。

    不过你说的问题也确实不该出现。
    Citrus
        21
    Citrus  
       2016-02-24 20:26:40 +08:00 via iPhone
    没懂,如果我正在开发的代码完全没有上传接口呢?
    niaoren
        22
    niaoren  
       2016-02-24 20:33:20 +08:00
    我记得这个是老问题了, php 官方也提过。

    是 nginx 的 fastcgi_split_path_info 和 php 的 fix_pathinfo 不兼容
    geeglo
        23
    geeglo  
       2016-02-24 20:33:40 +08:00
    怎么说呢,确实是漏洞,但是应该没人用这个当服务器环境吧。

    至于代码泄露,要求这个条件太苛刻了吧。
    VmuTargh
        24
    VmuTargh  
       2016-02-24 20:37:17 +08:00
    @tntsec apache 没挂, lighttpd 也没挂……
    orFish
        25
    orFish  
       2016-02-24 20:41:28 +08:00
    linux 下你也可以配置的很不完全的。。。
    raincious
        26
    raincious  
       2016-02-24 20:44:18 +08:00
    @geeglo

    我也是这样想的,“学习”环境嘛,谁敢用来开真服务器。但是有一天我看到了某朋友开了个网站,顺手敲了下 /phpmyadmin ,然后 root/root 进去之后发现还可以 SELECT INTO OUTFILE 。当时我就乐了。
    tntsec
        27
    tntsec  
    OP
       2016-02-24 20:48:26 +08:00
    @shyling 我救不了你
    tntsec
        28
    tntsec  
    OP
       2016-02-24 20:52:38 +08:00
    @Citrus 这不是漏洞,这是配置错误
    就跟 apache2.2 默认列目录
    而 apache2.4 默认不列目录

    他只是一个特性,跟 php 特性在一起就触发成漏洞了,解决办法也很简单
    但本文仅仅指出开发环境而不是服务器环境
    tntsec
        29
    tntsec  
    OP
       2016-02-24 20:56:32 +08:00
    特指开发环境
    真是因为开发环境才会有人用这种用东西
    真是如此才更危险
    https://www.baidu.com/s?wd=site%3Awww.wooyun.org+%E5%86%85%E7%BD%91
    kn007
        30
    kn007  
       2016-02-24 21:00:49 +08:00
    不要在公共场所,或 DMZ 主机上用,一般没什么问题。。。
    kn007
        31
    kn007  
       2016-02-24 21:02:28 +08:00
    很多软件都是检测全局:端口(比如 0.0.0.0:80 ),这没办法。本身软件在用户授权和配置上不可能做到那么细,太细有些东西不利于新手调试。要知道,一般工具面向对象是小白。
    tntsec
        32
    tntsec  
    OP
       2016-02-24 21:03:19 +08:00
    @kn007 如果你这么想,下次你就会想
    在公共场所,或 DMZ 主机上用,一般也没什么问题
    再下次
    被黑一次,也没什么问题
    kn007
        33
    kn007  
       2016-02-24 21:09:23 +08:00
    @tntsec 或许吧,只是我从不在非信任区上网,即便带笔记本,我一般也不联网。。。所以。。。呵呵。。。
    你要明白,我并不是否认你说的。

    如果这篇帖子能举几个例或新闻,或许更有说服力。

    但是工具,你要明白,好用才是硬道理,如果因为安全,关闭某些功能,而小白尝试使用这种功能未果。
    你知道的,小白不会承认自己笨自己傻,只会认为你这个工具不好用而已。
    所以既然你本身有安全知识,我觉得在用这种第三方工具时,也尽量还是自己配置下为好。

    大部分工具还是定义为小白使用,配置其实也是公开可改的,拥有能力和条件的,也可以自行修改,并不矛盾。
    tntsec
        34
    tntsec  
    OP
       2016-02-24 21:12:40 +08:00
    @kn007 然而,即使我贴出来,上面还有几个看不明白的
    maskerTUI
        35
    maskerTUI  
       2016-02-24 21:14:00 +08:00 via Android
    配合上传点来干活的话,确实是个有重大安全隐患的漏洞。
    kn007
        36
    kn007  
       2016-02-24 21:17:05 +08:00
    @tntsec 对,没错,总有比自己低水平的,不是么?
    你是就此满足,还是继续探究呢?
    我还是强调一下,没有否定你这张帖子。上面这句也只是说继续努力的意思。
    个人觉得这些有点老生常谈了,但是不知道有没有倒绷孩的(笑
    jacy
        37
    jacy  
       2016-02-24 21:30:46 +08:00
    正准备说还是不懂的时候突然懂了
    楼主你就说 1.jpg 其实是 php 代码扩展名为 jpg ,这下别人就都懂了
    xuhaoyangx
        38
    xuhaoyangx  
       2016-02-24 22:07:40 +08:00
    老问题了。这个参数默认都是改成 0 ,一般也不用一键,除非快速演示搭建。 Win 一般喜欢用 apache 的一键环境,偶尔会用 nginx 反代下
    要有被黑了,才有注意这方面的觉悟,不然一般跟他讲安全,一大批人只会和你呵呵
    shyling
        39
    shyling  
       2016-02-24 22:32:37 +08:00
    @tntsec
    lecher
        40
    lecher  
       2016-02-24 23:43:29 +08:00 via Android   ❤️ 1
    http://www.v2ex.com/t/228961
    论站内搜索的重要性。漏洞的原理 2012 年就被发出来了,上面这个链接之前就讨论过原理和解决方案。
    楼主用这个标题颇有闭关多年重新发明轮子的感觉。

    令人震惊的是,竟然还有那么多的自动配置工具不考虑在配置加上检测脚本类型才执行的处理。反正 Nginx 和 PHP 都不打算就这个交互环境的 bug 做修复了。
    Citrus
        41
    Citrus  
       2016-02-25 01:36:22 +08:00 via iPhone
    @tntsec 我明白你说的,我的问题是,你说的这个漏洞或者问题也好,触发的前提起码正在开发的网站要有上传接口。如果没有一样不能触发,不是么?
    yeyeye
        42
    yeyeye  
       2016-02-25 10:41:45 +08:00
    upupw 不知道有没有这问题。反正对 WIN 平台的这类工具表示很无语(主要是运行权限过高),以前 IIS 设置权限都要搞一大堆设置,最重要的是低权限账号……
    wslsq
        43
    wslsq  
       2016-02-25 12:05:50 +08:00
    这个老漏洞我就不多说了。。。我只想说我的 win10 可以启动 phpstudy 里的任何 php 版本啊
    Ruiming
        44
    Ruiming  
       2016-02-25 15:21:56 +08:00 via Android
    以前在 win 本地就是用 phpstudy 的,自从写 laravel 后就用 vagrant 了。没注意到这些东西。
    ershisi
        45
    ershisi  
       2016-02-25 17:27:55 +08:00
    ng 解析 iis 解析 都是老洞了。问题就在后缀解析上。
    tntsec
        46
    tntsec  
    OP
       2016-02-25 17:37:07 +08:00
    @lecher 论站内搜索的重要性

    但是,这跟那个完全是两个漏洞,那是 dedecms 的漏洞,用的是 php 文件包含,那本来就是 PHP
    这个是 nginx 解析漏洞,任意文件都能解析为 php ,属于配置错误

    “竟然还有那么多的自动配置工具不考虑在配置加上检测脚本类型”
    不管是你链接里的漏洞还是我这个漏洞,都跟检测脚本类型没半点关系

    不懂不可怕,不懂装懂最可怕
    tntsec
        47
    tntsec  
    OP
       2016-02-25 17:40:42 +08:00
    @Citrus 那也只是没有解析漏洞而已
    是三个问题中的一个
    tntsec
        48
    tntsec  
    OP
       2016-02-25 17:41:33 +08:00
    @wslsq 我的启动让我安装 VC11 和 VC14 ,但是我都装了的
    wslsq
        49
    wslsq  
       2016-02-25 19:29:29 +08:00
    @tntsec 是不是 x64 系统, x86 的 vc 也要装才可以
    jhdxr
        50
    jhdxr  
       2016-02-25 19:53:26 +08:00
    集成包自己学习还行,用于生产环境就是自己找死
    tntsec
        51
    tntsec  
    OP
       2016-02-25 21:11:16 +08:00
    @wslsq 双版本都装了
    Citrus
        52
    Citrus  
       2016-02-28 01:23:53 +08:00 via iPhone
    @tntsec 我的意思是,在没有解析漏洞的情况下,另外两个问题虽然也比较严重,但是就没有你说的这么严重啦
    wulasite
        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
    如果数据库提示这种是不是就不可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5317 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 07:11 · PVG 15:11 · LAX 00:11 · JFK 03:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.