web-dev-qa-db-fra.com

Protéger contre POST // attaques cgi-bin / php?

Je suis attaqué avec cette injection de 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

Cela décode comme

// 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

La version Php est 5.2.6-1 + lenny13, oui c'est vieux.

Comment puis-je empêcher cette attaque?

14
PiTheNumber

A ne mise à niveau du système est requise mais voici une solution rapide.

Dans /etc/Apache2/sites-enabled/000-default Je commente:

   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>

Et a fait un Apache2ctl restart. Maintenant /cgi-bin/php n'est plus accessible. Cela devrait le réparer.

Je me demande pourquoi c'est de toute façon en défaut. Vous devriez également consulter d'autres pages dans sites-enabled. Fait une grep "ExecCGI" /etc/Apache2/sites-enabled.

13
PiTheNumber

Outre les conseils évidents tout mettre à jour , la solution la plus simple est ne mettez pas votre interpréteur php dans votre répertoire cgi-bin. En fait, ne placez aucun interprète dans votre répertoire cgi-bin; pas php, pas Perl, pas bash, pas sed, pas awk, pas vi, ni aucun programme qui exécute des commandes arbitraires qui lui sont passées.

Si votre configuration d'hébergement nécessite que votre interprète soit placé dans cgi-bin, changez votre configuration d'hébergement. Il existe de nombreuses alternatives raisonnables qui ne recourent pas à cette idée idiote.

5
tylerl