首页 > 技术点滴 > 80后爆nginx 0day漏洞,上传图片可入侵100万服务器

80后爆nginx 0day漏洞,上传图片可入侵100万服务器

2010年5月21日 baoz 阅读评论

国内顶级安全团队80sec于5.20日下午6点发布了一个关于nginx的漏洞通告,由于该漏洞的存在,使用nginx+php组建的网站只要允许上传图片就可能被黑客入侵,直到5.21日凌晨,nginx尚未发布修复该漏洞的补丁;已经有一些网站被黑了,管理员速修复!

根据Netcraft的统计,直到2010年4月,全球一共有1300万台服务器运行着nginx程序;非常保守的估计,其中至少有600万台服务器运行着nginx并启用了php支持;继续保守的估计,其中有1/6,也就是100万台服务器允许用户上传图片。有图有真相。

没错,重申一次,由于nginx有漏洞,这100万台服务器可能通过上传图片的方法被黑客轻易的植入木马。植入木马的过程也非常简单,就是把木马改成图片上传就是了,由于危害非常大,就不说细节了。有兴趣的请访问 http://www.80sec.com/nginx-securit.html

说了那么多,我想大家对80sec这个顶级安全团队比较好奇吧,素包子简单介绍一下。

80sec团队由一群年轻、充满活力、充满体力、充满激情、富有创造力的未婚dota男组成,他们均在各大互联网公司从事信息安全工作,他们的口号是know it then hack it,素包子非常认同这个观点:“我们只要非常熟悉一个事物,就有可能客观的发现它的不足之处,同时我们也能的发现该事物的优点”。

80sec的意思是“80端口的安全”,也就是“web安全”;同时由于该团队成员都是80后的年轻人,我们也可以理解为“80后安全”;另外由于sec的发音是se ke,我们还可以理解为“80后色客”、“80后摄客”或“80后S客”,我们对80sec的理解仅受限于想象力。

下面介绍一下他们的丰功伟绩,他们曾发现IIS、IE、FireFox、Maxthon、世界之窗、PHPWind、DeDeCMS、QQ mail、QuarkMail、EXTMail等软件的漏洞,可见硕果累累。

既然介绍了80sec,就不得不介绍另外一个非常专注WEB安全的顶级安全团队80vul,该团队同样也是由80后的男童鞋组成(90后表示压力很大:p),他们也发现了大量WEB APP的安全漏洞,例如IE、Gmail、wordpress、PHPWind、DISCUZ、MYBB等。

看到这里,想必大家心里都有那么点遗憾,那就是为何没有80后女黑客(我不歧视伪娘,但我必须说明不是伪娘),我也有相同的遗憾。

最后发一个小道消息,据说黑客已经在行动了;安全人员、系统管理人员、行动起来吧,赶紧修复该漏洞;最好不要有侥幸心理,否则下一个被黑客入侵的可能就是你的网站。根据80sec安全公告的描述,临时修复方法如下,可3选其一。

1、设置php.ini的cgi.fix_pathinfo为0,重启php。最方便,但修改设置的影响需要自己评估。

2、给nginx的vhost配置添加如下内容,重启nginx。vhost较少的情况下也很方便。

if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}

3、禁止上传目录解释PHP程序。不需要动webserver,如果vhost和服务器较多,短期内难度急剧上升;建议在vhost和服务器较少的情况下采用。

估计今天黑客和管理员的交互会达到一个小高潮,如果希望进一步的了解相关内幕,请关注素包子的网站 http://baoz.net/nginx-0day-by-80sec/

小道消息发布台:

5.20

若干大型企业网站已经沦陷,包括SNS 游戏 电子商务。

5.21 10:20

听说某黑客团队已经写好了扫描器,已经开发出半自动批量工具了
优先从排名大,流量多,pr大的站开始扫描

5.31

金山词霸网站被黑客通过该漏洞入侵并修改首页

包子猜您可能还喜欢下列文章:

  1. xss简单渗透测试 zz from jx
  2. nginx 7稳定版发布
  3. zz 使用logrotate管理nginx日志文件
  4. Flash应用安全规范 by jianxin
  5. ghs.google.com替代方法 ZZ

  1. 菊部地区有血
    2010年5月21日09:37 | #1

    给你,5毛拿去

  2. 2010年5月21日09:58 | #2

    修复了,谢谢

  3. 2010年5月21日09:58 | #3

    ^__^

  4. 丹木秋风
    2010年5月21日10:07 | #4

    前段时间用的国外一个空间放点不可解析shell上去时候莫名出现类似问题,已应用,哈哈!

  5. xysky
    2010年5月21日10:08 | #5

    强大,当当网论坛都被干了。
    按描述写描述器就是判断前后Content-Type是否一致:)

  6. 2010年5月21日10:10 | #6

    菊部地区有血 :
    给你,5毛拿去

    i 服了 u 笑死偶了

  7. 我去
    2010年5月21日10:22 | #7

    有劲么?扯呢?

  8. dennis
    2010年5月21日10:32 | #8

    这个0day 是否应该算在nginx头上呢 呵呵

  9. 匿名
    2010年5月21日10:32 | #9

    现在我也修复了,谢谢

    不过我站点排名比较高,如果有人按排名扫描,我肯定已经中了,现在不知道怎么检测异常

  10. 2010年5月21日10:41 | #10

    “直到5.21日凌晨,nginx尚未发布修复该漏洞的补丁”

    明明知道nginx的开发人员还没有回复,就这么大张旗鼓地发布漏洞,到处宣传。
    技术往往都不是个问题,只是时间而已,人难在一种精神。

    黑客也有精神么?唉,同为80后,说什么好呢。

  11. 2010年5月21日11:04 | #11

    大哥.弱弱的问下.上传图片,apache可以判断图片是不是有木马?什么系统都可以传图片,如果在图片中挂马,上传应用程序是无法知道这个图片是不是有问题,怎么会和nginx有关系?上传的图片,会有执行权限?可以写的明白吗?

  12. 2010年5月21日11:10 | #12

    牛哥牛叉。。。唉。。。我要六毛!

  13. Bingo
    2010年5月21日11:42 | #13

    根据RFC 2396,path里面包含‘.’是合法的,为什么php要解析为前面文件名?

    URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]

    absoluteURI = scheme “:” ( hier_part | opaque_part )

    hier_part = ( net_path | abs_path ) [ "?" query ]

    abs_path = “/” path_segments

    path_segments = segment *( “/” segment )

    segment = *pchar *( “;” param )

    pchar = unreserved | escaped | “:” | “@” | “&” | “=” | “+” | “$” | “,”

    unreserved = alphanum | mark
    mark = “-” | “_” | “.” | “!” | “~” | “*” | “‘” | “(” | “)”

  14. 杯具
    2010年5月21日11:54 | #14

    astro :“直到5.21日凌晨,nginx尚未发布修复该漏洞的补丁”
    明明知道nginx的开发人员还没有回复,就这么大张旗鼓地发布漏洞,到处宣传。技术往往都不是个问题,只是时间而已,人难在一种精神。
    黑客也有精神么?唉,同为80后,说什么好呢。

    应该是已经过了默认期(缓冲期)了。。。一般来说他们发现0DAY后给开发人员写信,之后7-15天的缓冲期过后,这个0DAY就会被发布了。通常情况下是如此的,没什么好说的。

  15. qiaosou
    2010年5月21日12:18 | #15

    严格意义讲,这玩意应该不能算是nginx的漏洞,是系统管理员安全设置的问题!

  16. Bingo
    2010年5月21日12:33 | #16

    根据rfc3875(cgi的标准),

    PATH_INFO是可以包含除了CTL的任意字符的,我觉得很奇怪PHP的CGI实现为什么认为’.'是不属于PATH_INFO的,这个我会尝试询问PHP的作者。总之我觉得这个问题可能是PHP的问题,因为Nginx并没有违反协议。

    PATH_INFO = “” | ( “/” path )
    path = lsegment *( “/” lsegment )
    lsegment = *lchar
    lchar = any TEXT or CTL except “/”

    SCRIPT_NAME是除了‘/’的任意可见字符
    SCRIPT_NAME = “” | ( “/” path )

  17. 2010年5月21日12:42 | #17

    0day时时有,要升级就赶紧了。。

  18. 2010年5月21日12:55 | #18

    已改正,狂奔跑过

  19. thankwsx
    2010年5月21日14:05 | #19

    不管怎么说吧,我觉得nginx还是有点问题的。

  20. 2010年5月21日15:05 | #20

    见识了

  21. 匿名
    2010年5月21日16:23 | #21

    php不是可以判断图片头信息么?怎么可以上传。PHP文件呢?如果用了rewrite还有漏洞吗?

  22. php
    2010年5月21日16:25 | #22

    php不是可以判断图片头信息么?怎么可以上传。PHP文件呢?如果用了rewrite还有漏洞吗?

  23. 2010年5月21日17:04 | #23

    确实是php问题

  24. 2010年5月21日17:20 | #24

    多亏我还没开始用nginx。打算学习一下,听说速度相当的快。

  25. Bingo
    2010年5月21日17:37 | #25

    nginx里面的fastcgi_split_path_info应该就可以改掉这个问题,这个称为bug实在有点牵强:
    图片上传的路径加上这个配置可能就可以了
    location ~ ^(.+\.jpe?g)(.*)$ {

    fastcgi_split_path_info ^(.+\.jpe?g)(.*)$;
    fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

    }

  26. 2010年5月21日21:57 | #26

    借nginx之名炒作吧!!!

  27. 2010年5月22日09:21 | #27

    学习了,赶紧修复它.

  28. ssszone
    2010年5月22日10:55 | #28

    漏洞看起来很严重,要利用还得有上传点。

  29. badbaby
    2010年5月22日15:50 | #29

    有意思不?你们这群黑客儿,小心被警察树树抓到,做捞捞

  30. 2010年5月23日16:25 | #30

    厉害~

  31. lions
    2010年6月3日11:40 | #31

    全是牛淫啊!膜拜了~~~

  32. 2010年8月21日11:25 | #32

    嗯,确实很厉害。

  33. 匿名
    2011年1月25日16:21 | #33

    膜拜之

What is 4 + 4 ?
Please leave these two fields as-is:
请回答一个简单的问题避免垃圾评论