防止 POST //cgi-bin/php 攻击?

信息安全 php 阿帕奇
2021-08-30 08:31:00

我被这个 cgi 注入攻击:

POST //%63%67%69%2D%62%69%6E/%70%68%70?%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%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%6E HTTP/1.1

这解码为

//cgi-bin/php?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation=on -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -d cgi.force_redirect =0 -d cgi.redirect_status_env=0 -d auto_prepend_file=php://input -n

PHP 版本是 5.2.6-1+lenny13,是的,那是旧的。

我怎样才能防止这种攻击?

2个回答

需要系统升级,但这里有一个快速修复。

/etc/apache2/sites-enabled/000-default我注释掉:

   ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
   <Directory "/usr/lib/cgi-bin">
           AllowOverride None
           Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
           Order allow,deny
           Allow from all
   </Directory>

并做了一个apache2ctl restart. 现在/cgi-bin/php已经无法访问了。那应该解决它。

想知道为什么这是默认设置。您还应该检查 中的其他页面sites-enabled做一个grep "ExecCGI" /etc/apache2/sites-enabled

除了明显的更新一切建议外,最简单的解决方案是不要将 php 解释器放在 cgi-bin 目录中。事实上,不要在你的 cgi-bin 目录中放置任何解释器;不是 php,不是 perl,不是 bash,不是 sed,不是 awk,不是 vi,也不是任何执行传递给它的任意命令的程序。

如果您的托管配置要求将您的解释器放在 cgi-bin 中,那么请更改您的托管配置。有很多合理的替代方案不会诉诸这种愚蠢的想法。