Maison  >  Article  >  interface Web  >  qu'est-ce que l'injection HTML

qu'est-ce que l'injection HTML

青灯夜游
青灯夜游original
2021-06-21 11:27:216104parcourir

L'injection HTML est une vulnérabilité, un type d'attaque réseau qui se produit lorsqu'une page Web ne parvient pas à nettoyer les entrées fournies par l'utilisateur ou à valider la sortie, permettant à un attaquant de forger sa propre charge utile et de la transmettre via un champ vulnérable. Du code HTML malveillant est injecté dans l'application pour modifier le contenu de la page Web et même obtenir certaines données sensibles.

qu'est-ce que l'injection HTML

L'environnement d'exploitation de ce tutoriel : système Windows 7, version HTML5, ordinateur Dell G3.

Qu'est-ce que l'injection HTML ?

Injection HTML (Hypertext Markup Language Injection) Le chinois signifie « Hypertext Markup Language Injection ». Comme nous le savons tous, HTML contient diverses balises si l'application Web ne traite pas minutieusement les données saisies par l'utilisateur. , Si tel est le cas, certaines données soumises par des utilisateurs illégaux peuvent contenir d'autres balises HTML, et ces données sont affichées par le serveur comme des balises HTML normales, le résultat final est que les balises illégales sont analysées (peut être appliquée au phishing, ingénierie sociale, etc.), provoquant un grand impact sur les autres utilisateurs.

Un attaquant peut forger sa propre charge utile et injecter du code HTML malveillant dans l'application via des champs vulnérables, modifiant ainsi le contenu de la page Web et même obtenant certaines données sensibles.

La différence entre l'injection HTML et XSS

La traduction chinoise de XSS (Cross-site Scripting) est « attaque de script intersite » XSS est essentiellement un code HTML. attaque par injection, mais Différent de l'injection HTML, XSS utilise des balises de script pour exécuter JavaScript et d'autres programmes de script, et peut obtenir des données confidentielles et une série d'opérations dangereuses via JavaScript, tandis que l'injection HTML utilise uniquement des balises HTML pour modifier le contenu de la page.

Injection HTML - Réfléchie (GET)

Injection HTML réfléchie (méthode GET)

Prénom à remplirhtml, remplissez le test comme nom de famille et constatez que les lettres html deviennent rouges, indiquant que le code html que nous avons écrit a été exécuté avec succès et qu'il y a une injection html sur ce site Web.

quest-ce que linjection HTML

Injection HTML - Réfléchie (POST)

Injection HTML réfléchie (méthode POST)

Remarque : après avoir soumis les données via GET, la barre d'adresse du navigateur affichera les données soumises, mais POST ne les affichera pas.

Identique à la méthode GET ci-dessus
Remplissez le prénom

html2

, remplissez le nom de famille dans le test et constatez que les lettres html2 devient vert, indiquant que nous écrivons Le code html saisi a été exécuté avec succès. Il y a une injection html dans ce site Web.
quest-ce que linjection HTML

Injection HTML réfléchie (URL actuelle)

Injection HTML réfléchie (URL actuelle)

Tout d'abord, analysons le code source
code principal

 <div>

    <h1>HTML Injection - Reflected (URL)</h1>

    <?php  echo "<p align=\"left\">Your current URL: <i>" . $url . "</i>";?>

</div>

Il y a un morceau de code PHP dans ce code, qui exécute l'instruction html et génère un morceau de "Votre URL actuelle : » et appelez la variable $url pour suivre le contenu de sortie.

Code de protection

$url= "";

        
switch($_COOKIE["security_level"])
{

    case "0" :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];                  //$url= &#39;&#39;接受的参数来自请求头HOST和URL
break;

    case "1" :

        $url = "<script>document.write(document.URL)</script>";
        break;

    case "2" :

        $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
        break;

    default :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];               
        break;

}


<select name="security_level">
            
            <option value="0">low</option>
            <option value="1">medium</option>
            <option value="2">high</option> 
            
        </select>

En lisant le code de défense, vous pouvez comprendre que le code de défense appelé est différent selon la difficulté de la mise.

(1) LOW

Lorsque vous définissez le niveau sur Low, exécutez l'instruction suivante

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];

$_SERVER ici [ "HTTP_HOST"] signifie obtenir le nom de domaine actuel
Ici $_SERVER["REQUEST_URI"]" consiste à obtenir le chemin d'adresse complet derrière le nom de domaine

Modifier le paramètre d'hôte par paquet burp capture, vous pouvez trouver des changements survenus sur la page


quest-ce que linjection HTML
quest-ce que linjection HTML

(2) moyen

Lors de la configuration du niveau à moyen, exécutez l'instruction suivante

$url = "<script>document.write(document.URL)</script>";

L'objet document représente ici l'intégralité du document HTML et peut être utilisé pour accéder à tous les éléments de la page

document.write() est dynamique Écrire du contenu sur la page

document.URL consiste à définir l'attribut URL pour ouvrir une autre page dans la même fenêtre

(3) élevé

sera de niveau Lorsqu'il est défini sur élevé, exécutez l'instruction suivante

$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
La fonction xss_check_3 est appelée pour filtrer la partie derrière l'hôte, ce qui la rend. impossible d'injecter.>

Injection HTML - Stocké (Blog)

Stocker l'injection HTML

Remarque : la page réfléchissante n'existera plus après l'actualisation, tandis que le type de stockage est écrit dans la base de données du serveur et existera toujours après l'actualisation.

Par conséquent, le type stockage est beaucoup plus nocif que le type réflexion.

Entrez

HTML

dans le champ de texte pour analyser avec succès la balise p, indiquant qu'il y a une injection HTML.
quest-ce que linjection HTML

Tutoriel recommandé : "Tutoriel vidéo HTML"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Que signifie js ?Article suivant:Que signifie js ?