Auteur : BIBI
Chaque fois que nous pensons aux hackers, un hacker est souvent comme ceci : une personne solitaire qui pénètre discrètement dans les serveurs d'autrui pour détruire ou voler les informations secrètes d'autrui. Peut-être qu'il modifie notre page d'accueil, ou même vole les numéros de carte de crédit et les mots de passe des clients. De plus, les pirates peuvent attaquer les clients qui visitent notre site Web. Dans le même temps, notre serveur est également devenu son complice. Microsoft appelle cette attaque une attaque de type « cross-site scripting ». La plupart de ces attaques se produisent lorsque le site Web génère dynamiquement des pages Web, mais la cible du pirate informatique n'est pas votre site Web, mais les clients qui naviguent sur le site Web.
Description des attaques de script intersite
Dans un magazine intitulé <<ADVISORY CA--2000-02>>, le CERT prévient tout le monde : Si le serveur ne vérifie pas efficacement les entrées du client, le pirate informatique entrera du code HTML malveillant, lorsque ces attaques HTML La saisie de code est utilisée dans les programmes SCRIPT, ils peuvent l'utiliser pour causer des dommages, comme l'insertion d'images ou de sons dégoûtants, etc., et en même temps, cela peut également interférer avec la navigation correcte des clients sur la page Web.
Nous savons que certains amis ont été incités à visiter des sites Web gratuits suspects et n'ont obtenu que 10 à 20 petites fenêtres. Ces fenêtres sont souvent accompagnées de boutons invalides générés par JAVA ou JAVASCRIPT. Fermer ces fenêtres est en vain. Chaque fois que nous fermons une fenêtre, 10 fenêtres supplémentaires apparaîtront. Cette situation se produit souvent lorsque l'administrateur n'est pas disponible. Les incidents de souris sont un exemple typique de pirates informatiques utilisant des méthodes SCRIPT intersites pour attaquer les clients.
Les balises et scripts malveillants ne sont pas que des farces, ils peuvent même voler des données et corrompre les systèmes. Un pirate informatique intelligent ou même pas si intelligent peut utiliser SCRIPT pour interférer avec ou modifier les données saisies sur le serveur. Les codes SCRIPT peuvent également être utilisés pour attaquer les systèmes des clients et endommager complètement votre disque dur. Et sachez que pendant que vous utilisez le serveur, le SCRIPT du hacker s'exécute également dans un endroit sûr sur votre serveur ! Si les clients font confiance à votre serveur, ils feront également confiance au code SCRIPT malveillant. Même ce code provient du serveur du pirate informatique sous la forme de <SCRIPT> ou <OBJECT>.
Même l'utilisation d'un pare-feu (SSL) ne peut pas empêcher les attaques SCRIPT intersites. En effet, si l'appareil qui a généré le code SCRIPT malveillant utilise également SSL, le SSL de notre serveur ne pourra pas identifier le code. Allons-nous simplement confier aux pirates informatiques le site Web auquel nos clients faisaient autrefois tant confiance ? Et l’existence de ce genre de destruction nuira complètement à la réputation de votre site internet.
1. Exemple d'attaque SCRIPT cross-site :
Selon les informations du CERT, la saisie dynamique prend généralement les formes suivantes : paramètres d'URL, éléments de tableau, COOKISE et demandes de données. Analysons ce site Web avec seulement deux pages, le nom du site Web est : MYNICESITE.COM. La première page utilise un formulaire ou COOKIE pour obtenir le nom d'utilisateur :
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Page d'accueil</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORM method="post" action="page2.asp">
Entrez votre nom d'utilisateur MyNiceSite.com :
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
La deuxième page renvoie le nom d'utilisateur pour accueillir :
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Puis
strUserName = Request.QueryString("userName")
Sinon
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
Fin Si %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Bonjour : <%= strUserName %> </H3>
</BODY>
</HTML>
Quand vous êtes normalement Quand en tapant du texte, tout fonctionne bien. Si vous saisissez le code du script : <SCRIPT>alert('Hello.';</script>, l'étiquette d'avertissement JavaScript apparaîtra :
lors de votre prochaine visite, cette étiquette d'avertissement apparaîtra également ; en effet, le code du script est C'est déjà dans le cookie lors de votre première visite. Il s'agit d'un exemple simple d'attaque intersite.
Si vous pensez qu'il s'agit d'un cas particulier, vous pouvez aussi bien chercher ailleurs sur Internet et l'essayer vous-même. les grands sites Web gouvernementaux, les sites Web éducatifs et les sites Web commerciaux, et certains d'entre eux ont la situation ci-dessus. J'ai même découvert que le site Web sur lequel j'utilise souvent les cartes de crédit ne filtre pas les entrées, c'est vraiment effrayant d'y penser
. Parmi les pirates informatiques, un pirate informatique est souvent comme ceci : une personne solitaire qui pénètre discrètement dans les serveurs d'autres personnes pour détruire ou voler les informations secrètes d'autres personnes. Peut-être qu'il modifiera notre page d'accueil, ou même volera les numéros de carte de crédit et les mots de passe des clients. les pirates attaquent également les clients qui visitent notre site Web. Microsoft appelle cette attaque une attaque de type "cross-site script". La plupart de ces attaques se produisent lorsque le site Web génère dynamiquement des pages Web, mais que la cible du pirate n'est pas votre site Web, mais les clients. qui parcourent le site Web.
La description des attaques par script intersite
se trouve dans un livre intitulé <<ADVISORY CA --2000-02>>Dans le magazine, le CERT a mis en garde tout le monde : si le serveur ne vérifie pas efficacement les entrées du client, les pirates informatiques. entrera des codes HTML malveillants. Lorsque ces entrées de code HTML sont utilisées dans les programmes SCRIPT, elles peuvent les utiliser pour causer des dommages, comme l'insertion d'images ou de sons dégoûtants, etc., et en même temps, cela peut également interférer avec les clients. ' navigation correcte sur le Web.
Nous savons que certains amis ont été incités à visiter des sites Web gratuits suspects et qu'ils n'en ont obtenu que 10. À 20 petites fenêtres, ces fenêtres sont souvent accompagnées de boutons invalides générés par JAVA ou JAVASCRIPT. Cela s'appelle un piège à souris. La fermeture de ces fenêtres est inutile. Chaque fois que nous fermons une fenêtre, il y aura 10 fenêtres contextuelles supplémentaires. Cette situation se produit souvent lorsque l'administrateur n'est pas présent. Les méthodes SCRIPT intersites pour attaquer les clients.
Les balises malveillantes et SCRIPT ne sont pas de simples farces, elles peuvent même voler des données et détruire le système. Un pirate informatique intelligent ou même non intelligent peut utiliser SCRIPT pour interférer avec ou modifier la saisie des données du serveur. L'utilisation du code SCRIPT peut également attaquer le système client, et vous devez savoir que pendant que vous utilisez le serveur, le SCRIPT du pirate informatique s'exécute également dans un endroit sûr sur votre serveur. Si les clients font vraiment confiance à votre serveur, ils le feront également ! faites confiance à ces codes SCRIPT malveillants, même si le code commence par <SCRIPT> ou <OBJECT>. Le formulaire provient du serveur du pirate informatique.
Même l'utilisation d'un pare-feu (SSL) n'empêche pas les attaques SCRIPT intersites. En effet, si l'appareil qui a généré le code SCRIPT malveillant utilise également SSL, le SSL de notre serveur ne pourra pas identifier le code. Allons-nous simplement confier aux pirates informatiques le site Web auquel nos clients faisaient autrefois tant confiance ? Et l’existence de ce genre de destruction nuira complètement à la réputation de votre site internet.
1. Exemple d'attaque SCRIPT cross-site :
Selon les informations du CERT, la saisie dynamique prend généralement les formes suivantes : paramètres d'URL, éléments de tableau, COOKISE et demandes de données. Analysons ce site Web avec seulement deux pages, le nom du site Web est : MYNICESITE.COM. La première page utilise un formulaire ou COOKIE pour obtenir le nom d'utilisateur :
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Page d'accueil</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORM method="post" action="page2.asp">
Entrez votre nom d'utilisateur MyNiceSite.com :
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
La deuxième page renvoie le nom d'utilisateur pour accueillir :
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Puis
strUserName = Request.QueryString("userName")
Sinon
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
Fin Si %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Bonjour : <%= strUserName %> </H3>
</BODY>
</HTML>
Quand vous êtes normalement Quand en tapant du texte, tout fonctionne bien. Si vous saisissez le code du script : <SCRIPT>alert('Hello.';</script>, l'étiquette d'avertissement JavaScript apparaîtra :
lors de votre prochaine visite, cette étiquette d'avertissement apparaîtra également ; en effet, le code du script est C'est déjà dans le cookie lors de votre première visite. Il s'agit d'un exemple simple d'attaque intersite.
Si vous pensez qu'il s'agit d'un cas particulier, vous pouvez aussi bien chercher ailleurs sur Internet et l'essayer vous-même. les grands sites Web gouvernementaux, les sites Web éducatifs et les sites Web commerciaux, et certains d'entre eux ont la situation ci-dessus. J'ai même découvert que le site Web sur lequel j'utilise souvent les cartes de crédit ne filtre pas les entrées, c'est vraiment effrayant d'y penser
. : Prévention des attaques par script intersite.
1. Comment empêcher les serveurs d'être attaqués par des scripts intersites
Heureusement, la technologie permettant d'empêcher les attaques par scripts intersites devient de plus en plus perfectionnée. Actuellement, plusieurs méthodes peuvent être adoptées pour empêcher les attaques de script intersite :
1. Encoder les caractères de la page générée dynamiquement.
La première chose à faire est d'encoder les caractères de la page générée dynamiquement. Sinon, vous devez le faire. les pirates seront très vulnérables. Il est possible de modifier les paramètres de votre personnage pour contourner facilement vos défenses. Si notre site Web est un site Web anglais, il nous suffit alors de définir le codage des caractères sur le caractère latin ISO-8859-1. La situation spécifique est la suivante :
<META http-equiv="Content-Type" content="text/html. ;charset= ISO-8859-1">
2. Filtrez et limitez toutes les données d'entrée.
Il s'agit de la deuxième méthode pour empêcher les attaques de script intersite. Lors de la connexion, n'autorisez pas la saisie de ces caractères spéciaux. Par conséquent, nous pouvons ajouter le programme JAVASCRIPT à la méthode ONSUBMIT pour compléter cette fonction. Dans cet exemple, nous limitons la saisie à 15 caractères. Cela empêche la saisie de scripts plus longs.
Dans le livre <<Article de la base de connaissances QA252985>>Microsoft fournit un court programme Javascript pour compléter le filtrage des données d'entrée. Nous avons également introduit ce code pour notre exemple en fonction de la situation spécifique, par exemple :
function checkForm() {
document.forms
[0].userName.value = _
RemoveBad(document.forms[0].userName.value);
;
}
// Fonction CODE DE MICROSOFT
RemoveBad(strTemp) {
strTemp = strTemp.replace(/</>/"/'/%/;/(/)/&/+/- /g ,"");
return strTemp;
}
En utilisant cette méthode, vous pouvez filtrer ces caractères contenus dans l'entrée :
% < > [ ] { } ; & + - " '()
3. Utilisez le codage HTML et URL
malgré l'utilisation de ce qui précède. La méthode de filtrage et de restriction des entrées mentionnée ci-dessus est une méthode défensive très importante, mais elle reste impuissante contre mon attaque par courrier électronique. Parce que j'ai mis les paramètres URL directement dans l'email. Face à cette situation, nous devons prendre une mesure de sécurité plus puissante. Si nous utilisons ASP, ce sera relativement plus facile à résoudre. Seuls le HTML et l'URL encodent les pages Web générées dynamiquement. Pour la situation de notre exemple, nous avons apporté les modifications suivantes à l'URL de redirection dans la première page de saisie :
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
Dans la page d'exécution, nous avons ajouté :
strUserName = server .HTMLEncode(Request.QueryString("userName"))
et
strUserName =server.HTMLEncode(Request.Form("userName"))
Microsoft recommande que toutes les entrées et sorties des pages dynamiques soient codées. Cela devrait être vrai même lors du stockage et de la récupération des données de la base de données. De cette façon, vous pouvez éviter dans une large mesure les attaques de scripts intersites.
Pour ce faire, ajoutez Page1.asp :
<%@ Langage=VBScript %>
<% Si Request.Cookies("userName") <> "" Alors
'redirect si détecter le cookie
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Sinon %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE>MyNiceSite.com Page d'accueil</TITLE>
</ HEAD>
<script LANGUAGE="javascript">
<!--
function checkForm() {
document.forms[0].userName.value =
RemoveBad
(document.forms[0].userName.value)
;
//************************************************ ******
//Programmeur : CODE NON ORIGINAL - PROVENANT DE MICROSOFT
//Source du code : Article Q25z985 de la base de connaissances Microsoft
//Description : Supprime les mauvais caractères
//***************
.***** *******************************************
function RemoveBad(strTemp) {
strTemp =strTemp.replace(/</>/"/'/%/;/(/)/&/+/-/g, "");
return strTemp;
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM méthode="post"action="page2.asp" onsubmit="return checkForm ();">
Entrez votre nom d'utilisateur MyNiceSite.com :
<INPUT type="text"name="userName" width="10" maxwidth="10">
<INPUT type="submit"name="submit" value=" submit">
</FORM>
</BODY>
</HTML>
<% end if %>
Ajoutez ce qui suit à Page2.asp :
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<>"" Then
strUserName =server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/ html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">Bonjour : <%= strUserName %></H3>
</BODY>
</HTML>
Maintenant, à cause de cela L'attaque a été efficacement empêchée. Une fois ces balises et scripts malveillants codés, ils sont affichés sous forme de texte, comme indiqué ci-dessous :
Nous pouvons également ajouter un composant IIS pour filtrer tous les caractères spéciaux de la saisie dynamique. Pour les sites Web déjà développés, il est très simple d’utiliser cette méthode pour empêcher les attaques de script intersites. Notre contrôle peut intercepter la cible REQUEST de la page ASP et détecter le contenu des tables, des cookies, des chaînes de requête et des programmes :
Nous pouvons également ajouter des données statistiques à ce composant en écrivant des fichiers journaux. Chaque fois qu'un client saisit un caractère illégal, ce composant enregistre son adresse IP et l'heure. Pour plus de détails, veuillez consulter l'article <<Lancer votre propre application IIS sur ASPToday>> de Doug Dean.
Il suffit de prendre quelques mesures simples pour prévenir efficacement les attaques de scripts intersites. En plus des trois méthodes mentionnées ci-dessus, Microsoft et le CERT recommandent également fortement l'utilisation d'une méthode qu'ils appellent « contrôle d'intégrité ». Par exemple, s'il existe une fenêtre de saisie qui autorise uniquement la saisie de nombres, nous la limiterons pour autoriser uniquement la saisie de nombres 0 à 9. La méthode utilisée par Microsoft et CERT pour limiter les caractères saisis est bien meilleure que le seul filtrage des caractères spéciaux. En prenant ces mesures, vous pouvez protéger les clients qui visitent votre site Web pendant qu'ils y sont.
2. Comment protéger votre navigateur contre les attaques de pirates :
Comment éviter d'être attaqué lorsque vous êtes en itinérance sur Internet ? Microsoft et CERT déconseillent de déconner en ligne. En réponse à cette situation, l'auteur d'une chronique dans PC Magazine nommé John Dvorack a donné une réponse intéressante. Il pense qu'il s'agit d'un acte prémédité de la part de Microsoft : inciter les internautes à naviguer sur des sites sûrs tels qu'America Online et MSN.com.
Dans notre exemple, même si vous ne vous promenez pas sur Internet, vous ne pouvez pas éviter d'être attaqué par des pirates en ligne. Ironiquement, la plupart des dangers proviennent des sites Web auxquels nous faisons le plus confiance. Si vous souhaitez que votre site Web fonctionne sans problème, vous ne devez télécharger aucun contenu dynamique ni aucun cookie. Pour plus de détails, veuillez vous référer aux informations pertinentes de votre navigateur.
Microsoft vous avertit également de définir Active Script de votre navigateur sur un état sévèrement restreint et votre courrier électronique sur un mode de réception sévèrement restreint. Soyez prudent lorsque vous cliquez sur des liens dans des e-mails. Pour plus d'informations, veuillez vous référer à un livre intitulé <<Article de la base de connaissances Microsoft Q253117>>. Au cas où, vous feriez mieux d’avoir plus d’expérience en ligne et d’être prudent à tout moment.
Conclusion
Si vous êtes un ancien programmeur UNIX, vous ne savez peut-être pas ce que signifie le cross-site scripting. Vous savez que le nom d'utilisateur et le mot de passe permettant aux administrateurs de nombreux sites de se connecter sont respectivement root et root. De même, le nom et le mot de passe de nombreux administrateurs de bases de données sont respectivement sa et password. Vous connaissez également les Webzine (comme Phrack et Alt2600). Les méthodes qu'ils proposent peuvent vous faire connaître étape par étape les faiblesses d'un certain serveur. Sur ce genre de matériel, vous savez également que de nombreux serveurs de bases de données de sites Web et serveurs web ne se protègent pas. Dès qu’elle rencontre un pirate informatique, la machine sera paralysée.
Bien qu'il soit facile de prendre des mesures pour protéger nos systèmes contre les pirates informatiques, nos systèmes sont toujours exposés aux pirates. Il y a tout lieu de croire que de nouvelles vulnérabilités en matière de sécurité apparaîtront au cours de la prochaine année. Un article rédigé sous la direction de M. John Howard de la société CERT mentionnait : "Selon les recherches actuelles, chaque site Web doté d'un nom de domaine sur Internet est attaqué par des pirates informatiques au moins une fois par an en moyenne,
même pour un seul de ces serveurs
."l'attaque est insupportable. Les attaques de type cross-site scripting sont une autre méthode que les pirates peuvent utiliser. Mais nous pouvons empêcher cette forme d’attaque de se produire à condition d’effectuer le traitement simple mentionné ci-dessus.