Injection de code (PHP)

De Wiki levelKro
Révision datée du 25 janvier 2019 à 06:17 par LevelKro (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Il s'agit d'inclure un code dans un document pour forcer l'affichage d'une publicité, pratique pour de l'hébergement gratuit sponsorisé. Inclure les fichiers .htaccess et user.php dans le dossier web de Apache, idéalement à la base d'une domaine. Les utilisateurs pourront utiliser leur espace Web comme d'habitude avec les mêmes fichiers. Cacher le fichier (avec un nom moins possible) sécurise mieux. Ceci est une injection de base pour un hébergement simple sous Apache.

Le .htaccess

Options +FollowSymLinks
RewriteEngine On
# Capture les demandes de fichier /, *.html, *.htm et *.php
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$  [NC]
# Si trouvé, ont redirige la demande sur user.php, le reste passe en normal (document non incrustable)
RewriteRule (/|\.htm|\.php|\.html|/[^.]*) user.php

Le user.php

/* Ce script est pour ajouter un code a un fichier index sous forme html ou php
   Il ignore les autres pages que le index pour ne pas dédoubler le code dans des frames
   Pour forcer la pub, remplacer le index par le bon url */

// Récupère le fichier demandé et vérifie qui est traitable pour un ajout de code
$verif="$REDIRECT_URL@@@";
$verif=str_replace("/","!",$verif);

// Vérification avec appel de fichier
$v_htm=str_replace(".htm","GOOD",$verif);
$v_htm=str_replace(".html","GOOD",$v_htm);
$v_htm=str_replace(".shtml","GOOD",$v_htm);
$v_htm=str_replace(".php","GOOD",$v_htm);
$v_htm=str_replace(".php3","GOOD",$v_htm);
$v_htm=str_replace(".php4","GOOD",$v_htm);
$v_htm=str_replace("!@@@","GOOD",$v_htm);

// Vérification sans fichier à la fin
$v_html=str_replace("!@@@","GOOD",$verif);
  
// Charge le document index du site aucune présence de fichier à la fin
if($v_html!=$verif){ 
  if(file_exists(".".$REDIRECT_URL."index.php")){ require(".".$REDIRECT_URL."index.php"); }
  elseif(file_exists(".".$REDIRECT_URL."index.htm")){ require(".".$REDIRECT_URL."index.htm"); }
  elseif(file_exists(".".$REDIRECT_URL."index.html")){ require(".".$REDIRECT_URL."index.html"); }
  else{ echo "Page not found."; exit; }
  // Ajoute le code ici
}
elseif($v_htm!=$verif){
  // Charge le fichier demandé, fichier dans l'url
  require(".".$REDIRECT_URL);
}
else { 
  // Appel direct on ignore le résultat
  exit;
}