Hacking chat en partie 2
Variations sur un thème
Dans le chapitre précédent nous avons considéré le cas où la couleur des pages insérées dans le texte sans limiter les guillemets. Et que faire si les guillemets sont toujours là? Par exemple, le texte en discussion comme suit:Alpha - Tous les salutations! !!
Comme vous pouvez le voir, la couleur est inséré dans le cadre des citations. Ce problème est facilement résolu si le chat ne filtre pas le caractère '. Si oui, alors nous pouvons tout simplement fermer le guillemet ouvert, puis écrire le script. Par exemple, en définissant des couleurs comme le rouge "size = 20 '<FONT color = # 00ff00> nouveau nous obtenons l'effet d'une grande police. Faites attention à l'écart et l'apostrophe à la fin. Ils sont nécessaires pour ce qui serait le guillemet fermant, qui insère lui-même chat, pas détruit nos attributs. En conséquence, notre message sera:
Si le chat ne manque pas une marque de citation qui entoure le réglage, puis casser le chat à travers cette option ne sera pas possible . (Bien qu'il puisse y avoir certaines choses: voir la fin de ce chapitre ..
Cette méthode est très souvent (presque toujours) travaille pour l'attribution des adresses e-mail (dans les paramètres de chatlanina ou l'adresse de retour dans les forums, livres d'or et sur le terrain). Habituellement, une référence au savon va dans les forums comme suit:
Certaines salles de chat a permis d'insérer vos propres images, adresses de spécification des images. Comme nous le savons déjà, où il est l'URL, il est possible d'insérer le script. Je vais même pas mâcher. Tout est si clair.
Dans le premier chapitre, on a montré comment changer la forme d'entrée de chat. En particulier, il était nécessaire de modifier l'action relative du champ sur une adresse absolue. Cependant, la structure de la discussion peut être si compliqué que de tels changements peuvent nécessiter beaucoup. Changement dans tous les cas répondre mal à l'aise (et peut être confondu). Au lieu de cela, nous pouvons vous recommander la balise <base href = 'http: //typachat.ru/'^gt ; Ce qui est inséré dans un document lieu de HTML. Dans le même temps, toutes les adresses relatives seront traitées par rapport à l'adresse indiquée dans la base de tag (dans ce cas par rapport à typachat.ru), quel que soit le nom réel de base de DNS.
Vous savez sans doute ce que renifleurs? Sinon, je vais vous dire Sniffer - une chose très utile, qui permet de surveiller le trafic. Dans le cas d'un chat en direct renifleur pour déterminer les adresses IP bavardent, ainsi que leurs noms et les codes de temps (pour un chat avec un nom temporaire). Parfois, il vous permet même d'obtenir les droits d'admin ).
Il arrive souvent que le surnom dans le texte de chat apparaît comme un lien, lorsque vous cliquez dessus, vous pouvez envoyer un message privé chatovtsu. Voici à quoi il ressemble en HTML:
Alpha - Bonjour!
Modérateur - Bonjour!
En plus de l'effet décrit dans le chapitre "Les merveilles du symbole =" ici est possible l' insertion de script fonctionne sur l'événement click sur le lien (si le chat ne filtre pas restreindre les guillemets - dans ce cas , "- et le symbole +) A cet effet, comme un surnom, demandez. les significations suivantes :. "alerte + ( '! Bonjour') +" Vous pouvez insérer que réalités et plus grave ( en utilisant uniquement la fonction toString ()), par exemple un surnom "+ toString (open ( '// yahoo.com', '_ top. ')) + "désigne l'utilisateur, tyknuvshego votre pseudonyme, une pause de vYahoo le chat ).
Hacking le chat M
Comme mentionné dans le premier chapitre, il existe deux méthodes de piratage dans le chat. Tous les exemples ci-dessus se rapportent à la première méthode - la méthode de pénétration dans les paramètres des variables. Ici, je veux montrer la deuxième méthode de la technologie - une méthode HTML violations de structure.
des messages de chat de couleur M demandé sous forme numérique (et donc a une limite sur la longueur de la couleur - 7 caractères), a eu des filtres bizarres, mais il a manqué un seul caractère. Voici un fragment de messages dans le chat:
<font class="а1">22:41:24 </font> <a href="javascript:parent.parent.sewho('РТУТЬ')" onMouseOver="window.status='';return true;" target=kbd><font color=#0066ff class="ку">РТУТЬ:</font></a><font color=#FF0000 class="уц">ПЛУГиПРЕЙ:КОРОШО!</font><br><br><SCRIPT>top.do_scrolldown();</SCRIPT><br><font class="а1">22:41:25 </font> <a href="javascript:parent.parent.sewho('Весь_в_сертах')" onMouseOver="window.status='';return true;" target=kbd><font color=#0000FF class="ку">Весь_в_сертах:</font></a><font color=#0000FF class="уц">Денис_Семенов: ПРАВИЛЬНЕЙ БУДЕТ ВСЕ</font><br><br><SCRIPT>top.do_scrolldown();</SCRIPT>
Comme vous pouvez voir la couleur indique sans guillemets d'encadrement. La technologie Hacking est simple: Se connecter à un surnom arbitraire, et la couleur ». Puis, entrant dans le chat, un message tel que "style = background-image: url (javascript: alert ( 'Hello_people !!')). Notez l'espace à la fin - il est obligatoire. Notre message est le suivant:
<font class="а1">22:41:24 </font> <a href=javascript:parent.parent.sewho('Algol') onMouseOver="window.status='';return true;" target=kbd><font color=#0066ff class="ку">Algol:</font></a><font color=' class="уц">' style="background-image:url(javascript:alert('Hello_people!!'))</font"><br><br><SCRIPT>top.do_scrolldown();</SCRIPT>
Il se trouve qu'une partie du code HTML - class = "Ku"> - était entre guillemets simples, et est vu par le navigateur comme une couleur chaîne de valeur. Dans cette ligne et obtient l'équerre balise de fermeture, de sorte que notre message est dans la balise! Une partie du code en cours d'exécution immédiatement après notre rapport pas compris par le navigateur et est ignoré (et cette partie doit être séparée par un espace de notre option de style, sinon le réglage dans son ensemble sera considéré comme une erreur), mais après la marche d' un support d'angle de fermeture est considéré pour marquer la police. Il est très simple.
Un peu d'une barre oblique inverse
Dans les lignes une constante JavaScript a un caractère spécial de contrôle. Ceci est une barre oblique inverse \. L'une de ses missions comprennent aller après lui guillemet est considéré comme un symbole, pas une ligne d'arrêt. Par exemple:
Comme il caractère \ est un contrôle (et donc ne figure pas directement dans la ligne), l'écran lui - même, il \\ combinaison. Que cette combinaison apparaît comme un symbole \.
Qu'est-ce que tout cela a à voir avec le piratage dans le chat? Mais que: certains chats ne mettent pas un filtre sur les guillemets "(ou ') dans la zone de surnom, et les remplacer sur une combinaison du type \" (ou \'), estimant que dans ce cas, les citations seront affichés mais ne peuvent pas agir en tant que guides, et donc ne peut pas détruire la structure du HTML. Cette développeurs à courte vue perdre de vue le fait que l'utilisateur peut utiliser le caractère \ pour bloquer leur caractère \. Par exemple, un fragment de la discussion pour les messages de l' utilisateur avec le surnom de Sh ram "comme suit:
<a href=javascript:msgto("Al\"gol")>Sh"ram<a>
Dans ce cas, citation dans leurs noms ne viole pas la structure d'étiquette. Mais si nous changeons le surnom d'Al \ "gol, puis en insérant une barre oblique avant le chat va citer le code HTML suivant:
<a href=javascript:msgto("Al\\"gol")>Sh\"ram</a>
Cet effet peut être utilisé pour briser les chats en brisant la structure HTML. Nous notons que, dans certains cas, la même méthode peut être utilisée pour bloquer les citations limitant en insérant l'extrémité de la barre oblique inverse nick.
Récemment, je remarquai un autre trou associé à l'utilisation abusive du symbole \ programmeurs chats. Supposons, par exemple, le surnom de l'utilisateur est inséré dans le corps sous la forme d'un chat
<a href=javascript:msgto("Algol")>Algol</a>
Dans le même temps l'explorateur affiche un message d'erreur lorsque vous essayez de tyknut surnom. La raison est la suivante: le signe \ n'a de sens que dans les constantes de chaîne dzhavaskripte, mais pas HTML! Lui - même HTML caractère \ ne comprend pas, et par conséquent ledit premier trouvé une extrémité d'apostrophe de l'attribut href, malgré le fait que est un \ avant. Ainsi, par exemple, = un surnom Algol "détruire la structure de l' étiquette, en dépit du fait que , avant l'apostrophe inséré backslash
Hacking à l'adresse http
Comme déjà mentionné, le serveur de chat peut suivre champ de requête HTTP Referer, et de ne pas commencer le chat, si ce champ est différent de la droite. Afin de contourner ce besoin pripyatstvy d'attraper un en-tête d'une requête HTTP, le serveur envoie une conversation (avec l'aide de programmes spéciaux, tels que Naviscope) et écrire un programku spécial, qui envoie des requêtes au serveur. En même temps, le contenu du (des champs de valeur de couleur naprmer) de demande peut être réglé de façon arbitraire.
Je ne reviendrai pas sur cette question en détail. Cela va au-delà du HTML de rupture.
Permettez-moi de noter qu'il est possible de faire plus délicate que les moyens habituels HTML ou JavaScript au niveau de HTTP. Dans tous les cas, je vous recommande de voir les têtes de requête HTTP en utilisant le chat. Ils vous aideront à comprendre plus en détail dans le chat.
Miracles avec le symbole =
Pensez-vous que sera affiché dans le navigateur pour une ligne de HTML:
Curieusement, dans ce cas, tout ira bien, mais il y avait une erreur de syntaxe. Si l' on clique sur le texte affichera un = alerte. Essayez de déplacer l'apostrophe pour la troisième chevron, ou le texte:
Malheureusement, je n'ai pas le code source ou la documentation détaillée pour MSIE, mais je pense que dans ce cas il y a une erreur évidente dans MSIE. Probablement navigateur analyse le code en deux étapes. Au premier stade , il alloue des balises, attributs, et le texte qui se trouve entre eux, et sur la seconde , il analyse les balises JavaScript, le contenu des paramètres (il est seulement sur les attributs qui permettent la valeur de l' écriture, comme href ou onclick). Dans l'analyse primaire du navigateur pour une raison quelconque pense combinaison = 'début de la ligne, en dépit du fait que le symbole = déjà en ligne nahodtsya! Puis, en prenant = 'pour le début de la ligne, les recherches de programme pour la fin (tout en oubliant complètement le fait que une ligne de plus est ouvert et non fermé). Ainsi, tout ce qui suit = '(a = ") et jusqu'à le caractère suivant' est ignoré et considéré comme une ligne Par conséquent, dans le premier exemple, le navigateur n'a pas accepté le tag:!. Il ne pouvait pas trouver un support d'angle de fermeture, car il était ( pour ainsi dire) dans une chaîne Mais encore plus surprenant est que , dans la deuxième étape de l' analyse des paramètres de tag, le navigateur prend tout correctement (ce qui peut être satisfaite en cliquant sur les mots de texte dans le deuxième exemple), et prend la ligne où il est nécessaire, et trouve un support d'angle de fermeture est également le cas échéant. cela conduit à ce fragment d'un troisième exemple du texte ne figure pas dans le texte brut (parce qu'il est pas étiqueter le corps), mais pas une étiquette de paramatrom (comme au stade de l' analyse des paramètres au compilateur qu'il ne vient tout simplement pas)! Flame salut Bill!
En utilisant cette erreur de navigateur , je suis en mesure de commenter une partie du code IM, tout simplement sont enregistrés sous le nom = ). Voici un extrait de code qui affiche une liste des personnes présentes dans le chat:
<a href=javascript:parent.window.messageFor("=")>=</a><br><br><a href="javascript:parent.window.messageFor("Модератор")">Модератор</a><br>
Dans le même temps mon surnom dans la liste est tout simplement pas affiché parce que le fragment entre les guillemets
Grande (ou triste - la recherche de quelqu'un) que ce bug va presque partout où vous pouvez entrer au moins le fil Th (au moins pour MSIE 5.50.4134.0600), et on n'a même pas besoin de changer quoi que ce soit de la manière. Et la mauvaise chose est que par ce qui est difficile à obtenir des avantages substantiels (tels que l'exécution d'un script).
En conclusion, nous notons qu'un effet similaire et a le symbole>, qui est perçu comme la fin de l'étiquette, en dépit du fait qu'il est à l' intérieur de la ligne. fragment
Deux chats de piratage T
Chatter T a raté les caractères suivants dans le champ de couleur:
' | ` | = | ; |
Lorsque vous insérez une couleur dans la salle de chat, encadrant les citations ne sont pas. messages Fragment de chat (par la façon dont l'auteur le chat n'a apparemment pas jugé nécessaire pour couvrir les tags)), même si nous espérons que cela se fait pour des raisons de performance):
<FONT COLOR=008000><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a>- <a href=javascript:parent.window.mfor('BalamUY')>BalamUY</a> : вошел в комнату <FONT COLOR=green><a href=javascript:parent.window.Mtm('22:18:03')>22:18:03</a> - <a href=javascript:parent.window.mfor('Fialka')>Fialka</a> : Sponsor> Если интересная, то ниче.
Confus par ce que l'écart ne soit pas passé par le filtre. Cependant, après réflexion, je trouve la solution suivante - la couleur elle - même, je pris entre guillemets simples, puis la couleur pas d' espace inséré paramètre style: 'red'style = background-image : url (javascript: while ( 1 == 1) ouvert ( )). Comme mentionné dans le deuxième espace chapitre de séparation dans ce cas ne sont pas nécessaires ).
Par ailleurs, dans ce chat était plein d'images, y compris cachés et étaient vides - probablement pensé pour toute expansion future. Mais tandis que les admins pensaient sur les extensions, je les ai trouvés application plus utile. Je traînais dans le chat pendant longtemps - quelques mois. Et pas seulement la pendaison: dans l'un des cadres cachés, je poussai mon saytik. Et saytik étaient des bannières réseau de bannière. Alors Makar, je me suis cadencé sur une banneropokazov cent mille et mon site a sauté à 5-6 places dans le classement des 100 hits Rambler Top (dans le groupe). Malheureusement, le réseau de la bannière a comparé le ratio de hits / hosts et se rendit compte qu'elle a triché. Il est avéré que le même visiteur vient sur mon site 50 fois par jour. Mon compte est bloqué. Donc probablement encore accroché là, agité ).
Mais revenons à nos moutons. Après un certain temps, l'administration a remplacé le chat cgi-shku. Je ne sais pas ce que les «améliorations» ont été faites dans la deuxième édition, mais je ne remarqué un changement: désormais la ligne de couleur à long valeur a été limitée, et était à environ 10 caractères (d'ailleurs cette limitation est dans de nombreuses salles de chat, même si je ne comprends pas quel est le sens ? est-il pas plus facile de mettre des filtres sur les caractères d'entrée? Bien qu'il soit possible de cette manière qu'ils sont protégés contre les dépassements de tampon?). Dans une telle situation, bien sûr l'ancienne méthode ne fonctionnait plus. Cram en 10 caractères ne peut pas être un script décent (il n'y a pas lui-même le style est pas placé). Je me suis aperçu que vous ne pouvez briser une entaille ou la deuxième méthode - détruire strkturu HTML. Quelques heures plus tard, je l'ai essayé de cette façon et que. En plus de pas cher nick effet d'extinction (chapitre "Les merveilles du symbole =") rien ne se produisit. Briser la structure personnelle ne permettait pas pour la raison suivante: insérer au lieu du symbole de couleur 'J'ai ouvert la ligne, mais il a été fermé par une apostrophe qui était en référence au temps (ici le chat juste eu de la chance - il n'a pas été conçu comme une mesure de protection, bien que de nombreux chats insérés spécifiquement pour le mannequin type de balise) < ' "'!>:
<FONT COLOR="><a href=javascript:parent.window.Mtm(" 22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('Algol')>Algol</a> Привет!
C'est seulement komentirovat fragment <a href = javascript :. Parent.window.Mtm ( Et tout ce que je suis est la suppression des références de balises à l'heure s'il était possible d'insérer à la place odnarnyh citations, doubles, le problème ne serait pas, parce que dans le chat. guillemets ne sont pas utilisés. Mais le caractère "ne passe pas les filtres. Coucher de soleil sous le nom de Type Algol = n'a pas non plus donner parce que les caractères après 'Algol =')> ignorés et non considérés comme des paramètres de variables. travaillé bien sûr une autre option est décrite plus loin dans ce chapitre," Variations sur un thème ", mais ces scripts fonctionnent uniquement lorsque vous cliquez sur mon lien de pseudo (. J'étais prêt à admettre que l'ensemble le chat ne peut pas se fissurer. Et puis, au dernier moment, de creuser et d'expérimenter dans les entrailles de HTML, je découvris que le symbole de l'apostrophe inverse est également une limitation de lignes dans le code HTML !!! Et ce filtre passe de caractère! Sans penser que je connecté avec le surnom Algol et la couleur `puis comme des messages de discussion envoyés à la ligne suivante: .` style = background-image : url (javascript: alert ( '! Pobeda_budet_za_nami')) Mon message dans le corps de la discussion était la suivante.:
<FONT COLOR="`"><a href=javascript:parent.window.Mtm('22:18:18')>22:18:18</a> - <a href=javascript:parent.window.mfor('Algol')>Algol</a>`style=background-image:url(javascript:alert('Победа_будет_за_нами!'))
Ce fragment <a href=javascript:parent.window.Mtm('22:18:18')> 22:18:18 </a> - <a href = javascript: parent.window.mfor ( 'Algol') > Algol </a> komentirovat complètement et a été considéré comme la couleur, le style et le paramètre est dans la balise! Le script a travaillé ).
Alors que les programmeurs T IM doivent développer une nouvelle version de leur progéniture. Il reste à l'interprétation surpris de voir combien échappatoires ils partent, et comment leur correction lente. Ils disent que la chose entière en psychologie: les développeurs de systèmes de protection ne peuvent pas se mettre dans le cambrioleur, et sont jugés sur le système, pour sa part, au lieu de ce qui aurait à regarder de l'extérieur.
"Interception", "fraude" et les droits d'obtention.
Envisager des méthodes de saisie de communications étrangères (privates) et envoyer des messages au nom d'autres chatovtsev. Il existe différentes méthodes d'interception, destinés à différents types de salles de chat. Si le chat est complètement compromise l'opération «fraude» (c.-à insérer des remarques au nom d'autres chatovtsev) est pas difficile: il suffit d'envoyer la victime dans le script privé qui va écrire un texte dans une réplique d'une chaîne, puis appuyez sur le bouton "envoyer". Containers similaires peuvent être tirés et l'utilisateur privat. Cependant, ces méthodes sont trop grossiers, primitive et difficile à utiliser. Des techniques plus avancées telles d'interception, dans laquelle il prend vous causez à un autre utilisateur.
Lors de la création HTML-chat, le principal problème est que le protocole HTTP, en principe, ne supporte pas les connexions persistantes. Cela signifie que chaque fois que vous voulez envoyer un message ou une réplique, un programme de chat doit «savoir» vous réalisez que vous êtes vous. Si elle ne reconnaissait pas les utilisateurs, il ne serait pas en mesure de vous envoyer vos soldats, et ne serait pas capable d'écrire votre message en votre nom. Pour identifier les participants, discuter avec des méthodes différentes. La méthode la plus couramment utilisée d'adresses IP et les noms de méthodes dynamiques. La première méthode est basée sur le fait qu'un seul et même utilisateur de la même adresse IP au cours d'une session de communication. Je ne reviendrai pas sur cette méthode, sauf pour dire que cette méthode présente des inconvénients. En particulier, il peut ne pas fonctionner si l'utilisateur utilise un serveur proxy d'entreprise, ou si elle a ouvert plusieurs fenêtres avec le chat. dynamiques noms de méthode - Récemment, une autre méthode est fréquemment utilisé. La méthode consiste dans le fait que, à chaque entrée de l'utilisateur dans le chat, il est automatiquement attribué un identifiant unique, temporaire. Cette page de connexion avtomatticheski registres dans lesquels la passerelle envoie l'utilisateur. Chaque fois que l'utilisateur envoie une forme de réplique ou demande des messages de la page de chat, il envoie au serveur un nom de connexion temporaire sous lequel le serveur lui-même et identifie l'utilisateur. système de connexion temporaire génère aléatoire et deux autre utilisateur ne peut pas avoir le même nom d'utilisateur. Connexion peut consister en plusieurs parties. Le plus souvent il est le numéro de série de l'utilisateur dans la session, et sgenererirovanny passvord au hasard. Depuis l'ID de connexion "cousu" dans la page Kourtchatov pour chaque utilisateur, le système sait exactement comment elle communique par l'utilisateur, quelle que soit leur adresse IP, les serveurs proxy, le nombre de fenêtres ouvertes avec le chat, etc.
Il est clair que si nous connaissons la connexion de l'utilisateur, nous ne serions pas difficile, "lécher" pour l'utilisateur, tout simplement corriger sa page dans la connexion au nom de connexion. Ensuite, nous avons le système adopté pour elle ... se révèle, il peut se faire facilement si le chat piraté, et nous sommes en mesure d'insérer votre image dans le chat. Ensuite, si l'image à utiliser renifleur (voir «Variations sur un thème"), nous pouvons obtenir un logins temporaires tous les participants dans le chat! Et si nous sommes intéressés à la connexion spécifique de quelqu'un, vous devez lui envoyer un sniffer en privé. Je note ce qui suit: la connexion interceptée est uniquement valable aussi longtemps que l'utilisateur est dans un chat si déconnexion (et redescendre), alors il sera une nouvelle connexion temporaire.
De toute évidence, si l'interception administrateur provisoire connexion, vous serez transféré à nous automatiquement et ses droits - tels que la capacité de diriger l'insertion de balises dans le message (pas de filtre sur le <et>), ou la possibilité de retrait de la discussion, ou obtenir des informations sur l'utilisateur etc.
le chat Troisième piratage T
Revenons donc sur le chat souffre depuis longtemps T. Il n'y a pas si longtemps pour chatter T complètement commuté vers le nouveau noyau. Maintenant, le jeu a changé. Tout d' abord, le champ de couleur avait disparu presque tous (jusqu'à les signes <et>), et je ne peux pas le pirater sotavilo travail. Mais ce trou patché bientôt (non sans ma participation). La nouvelle version de la couleur du chat a disparu uniquement des chiffres et des lettres. Briser la couleur est devenue impossible. Cela a forcé à chercher des méthodes de izoscherennye. En fait, la seule chose - ce surnom. De ma propre expérience, je sais que dans un hack chat surnom est assez difficile parce que les développeurs plutôt soigneusement sélectionnés filtres à nick. Cependant t'chat exagérée "puce" que "le jeu de caractères pour le nickname considérablement élargi." Il est venu comme une sorte de publicité. Un peu bricoler avec des filtres à l'entaille, je découvre ce qui se passait les caractères suivants:
' | ` | = | ; | \ |
Symbole "a été adoptée, cependant, avant la draguer automatiquement inséré caractère \. Les mécanismes associés à la combinaison décrite dans le chapitre" Un peu d'une barre oblique inverse \ ". Cependant, les effets décrits dans ce chapitre ne donne pas le résultat souhaité, et étaient difficiles à utiliser. Je cherchais une autre décision. Et je l'ai trouvé!
Regardons un fragment de messages dans le chat:
<a href='javascript:top.msgto("Algol")'>Algol</a><font> Всем приветик </font><a href='javascript:top.msgto("Стелла")'>Стелла</a><font> Привет </font>
Comme vous pouvez le voir, le surnom a été donné comme un lien, en cliquant sur ce qui provoque une certaine fonction. Handler link href est enfermé dans des guillemets simples, et le surnom était entre guillemets. Depuis la double citation effectivement ne manquez pas le chat en direct, au sens du surnom, qui vont au-delà de l'argument de la fonction car il était impossible. type = Nick 'ne fonctionne pas, parce que le gestionnaire a été enfermé dans des guillemets simples, et ont été montrés dans les «Miracles du symbole =" effet avec le signe = ne fonctionne pas. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Ie например при компиляции следующего тега:
<ahref='javascript:top.msgto("`='A'=`")'>`='A'=`</a><font>` style=background-image:url(javascript:alert()) </font><a href='javascript:top.msgto("Стелла")'>Стелла</a></em>
Фрагмент
Еще несколько взломов многострадального чата T
Как видно из предыдущей главы, в чате Т свободно можно было втиснуть скрипты, и естественно, что я творил там что хотел (вплоть до того, что назначал себя админом 255 уровня . Это конечно сильно не нравилось разработчику чата (с которым я кстати активно общался), и он как бы "пофиксил" баг следующим способом: в сообщениях чатлан он заменял слово script на script , где латинские буквы с и p были заменены на такие же, но из русской раскладки, и естественно, HTML не понимал их. В результате комбинация типаКомпиляция HTML > Раскодировка символов > Компиляция обработчиков
А посему, содержимое обработчиков можно не стеняясь посылать в закодированном виде, при этом фильтры чата его пропускают, а HTML уже на этапе трансляции превращает их в нормальный вид и исполняет! Проверте сами на таком примере (обработчик alert() заменен кодовой комбинацией):
<font onclick=alert()>Click me</font>
Таким образом послав комбинацию
Замечу две особенности : 1. Содержимое тега
Описанная особенность HTML значительно расширяет множество "крякаемых" чатов. Ведь достаточно что бы чат пропускал в поле ника символы & и ; , а в теле чата ник фигурировал в каком нибудь обработчике (типа href="javascript:msg('ник')" ), и в результате, залогинившись под ником '+alert()+' (который после компиляции будет выглядеть как '+alert()+' ), мы получаем скрипт срабатывающий при нажатии на ник.
Но и это еще не все. Оказывается джаваскриптовский обработчик в параметре href можно писать и в юникоде! Вместо ника '+alert()+' можно логинится под '%2Balert()%2B' , результат будет тот же . Однако раскодировка юникода проходит только в обработчиках href (или в других, где должен присутствовать адрес). В других обработчиках (например onclick ) раскодировка юникода не происходит.
Спустя некоторое время, админ запретил символ обратного апострофа в именах юзеров, и ник `='A'=` больше не проходил. Немного подумав, я нашел другой ник, который фактически делал то же самое: Don't= . Принцип его работы я думаю вы поймете сами (если вы читали предыдущие главы).
Взлом UBB / YABB / IB форумов
1. Через UBB тег [IMG] . В UBB/YABB форумах можно вставлять картинки, указав URL адрес в UBB теге [IMG]. Например: [IMG]http://myserver.ru/logo.gif[/IMG] такой тег вставляет в сообщение картинку с адресом http://myserver.ru/logo.gif . При этом ничего не мешает вставить например такой тег [IMG]javascript:alert()[/IMG]. Как вы догадываетесь, такой адрес будет выдавать каждому кто посмотрит на ваше сообщение алерт вместо картинки. Правда некоторые версии UBB требуют что бы указанный адрес указывал на файл с расширениями gif или jpg , но эта проблема легко решаема. Просто ставим в конце точку с запятой и имя файла картинки : [IMG]javascript:alert();a.jpg[/IMG] . Конечно это повлечет ошибку джава скрипта, но нам уже все равно, поскольку первая часть скрипта сработает . Есть еще одна дыра в теге IMG: в некоторых версиях этот тег пропускает кавычку, как результат работает следующий пример:
Приведенный глюк работает как в UBB так и в YABB форумах. Учитывая еще тот факт, что UBB форум хранит пароль и логин пользователя в кукисах, которые читаются страничкой форума, и хранятся в переменных, то запустив в тело чата сниффер, мы можем легко выковырять пароли и логины всякого пользователя, который посмотрит на наш мессаг ).
2. Как уже отмечалось, UBB форум хранит логин, ник и пароль пользователя в кукисах. Оказывается, что в некоторых случаях UBB форум берет ник пользователя не из своей БД, а из кукиса пользователя, при этом проверки ника на теги и любые символы не происходит! Таким образом, если в отсылаемом на сервер мессаге подделать кукис, и вставить вместо ника тег скрипта, то форум спокойно вставит этот тег в тело форума! Правда разработчики перемудрили, и в некоторых частях форума вставляются ники из БД, а в некоторых - из кукисов. Мне известны три случая, когда ник берется из кукиса: 1. На главной странице форума (там где пишется кто автор последнего сообщения в такой-то теме) 2. При ответе на реплику "с цитированием" - во фразе цитирования. 3. При редактировании сообщения (во фразе "отредактированно тем-то"). Отмечу, что 3.06.2002 фирма UBB выпустила патч на дырку в кукисах (не без моего скромного участия). Однако, несмотря на это, большинство форумов по прежнему используют старые версии ).
3. А вот еще одна дырка в форумах http://www.ikonboard.com: помимо того, что там срабатывает дырка связанная с тегом [IMG] , там есть еще и дырка в теге [COLOR] . Например посылая в форум такое сообщение
Всякая всячина
Система безопасности аля микрософт подразумевает невозможность доступа с загруженной HTML странички к любой информации на машине, в том числе и к другим страничкам, открытым в данный момент. Однако эта система имеет некоторые странности в работе. Так, например, метод window.open("http://ya.ru", "privat") джаваскрипта должен открывать новое окно с именем "privat" и загружать в него сайт ya.ru. Это так и происходит если... окно с таким именем еще не открыто. Если же одноименное окно или фрейм уже открыт, то сайт загружается в уже открытое окно (или фрейм). А прикол заключатеся в том, что это окно может не иметь никакого отношения к нашему скрипту, и вообще принадлежать другому сайту )). Убедитесь сами: Откройте в новом окне ссылку: http://chat.bigmir.net и зайдите в чат. А потом кликнете здесь: тыц , после чего посмотрите на свой приват в чате ). Красиво ?В некоторых чатах существет автоматическая вставка ссылок. А ведь можно послать и ссылку на сниффер . Типа вы посылаете сообщение Друг Билли (Вилли/Джони/Джимми)! Посмотри какой классный порносайт я откопал http://fig.vam.com/cgi-bin/girl.cgi , а в общак вставляется
А вот еще один фокус на грани фантастики. Этот фокус я услышал от одного из админов чата. Правда сам его не проверял, но полагаю что это вполне может работать. Как вы наверное видели, во многих чатах есть счетчики посетителей. Всякие там Spy или top100 . А ведь счетчик автоматически фиксирует множество параметров посетителей, в том числе IP адреса, парамтеры среды окружения, поле referer и т.д., то есть фактически является сниффером. А статистика счетчика может быть открыта для всех... Улавливаете
Хочу еще раз остановится на взломе чатов через цвет. Некоторые чаты пропускают любые символы в поле цвета, однако при вставке в тело чата, перед введенным значением цвета, вставляют символ # . Например если пользователь задал цвет aaff00 , то в тело чата этот цвет вставится в виде <font color=#aaff00> . В силу особенностей атрибута color, выяснилось следующее: если впереди цвета автоматом встявляется символ # , то чат ломается только если поле цвета пропускает пробел. Если же цвет пропускает любые символы, но не пробел, то взломать чат нельзя (можно только вызвать глюки например тегом <xml> задаваемым вместо цвета). Не буду объяснять почему это происходит, просто примите это на веру .
В предыдущих главах уже упоминалось про метод вставки скриптов черезsymbole | Десятичная кодировка | 16-ая кодировка* | Символьная кодировка | Unicode |
" | " | " | " | " |
' | ' | ' | ' | |
` | ` | ` | ` | |
<пробел> | + | |||
= | = | = | %3D | |
< | < | < | < | %3C |
> | > | > | > | %3E |
\ | \ | \ | %5C | |
% | % | % | % | |
+ | + | + | %2B | |
<короткий дефис> | | | | %AD |
& | & | & | & | & |
*-в некоторых случаях (если символ стоит в конце строки) точку с запятой можно опустить.
Vous pouvez également soutenir shram.kiev.ua, cliquez sur:
Ne soyez pas mal à vos amis et trouver cette information, partager avec eux l'article!
Commentaires
Commentant, gardez à l' esprit que le contenu et le ton de vos messages peuvent blesser les sentiments des gens réels, montrer du respect et de la tolérance à ses interlocuteurs, même si vous ne partagez pas leur avis, votre comportement en termes de liberté d'expression et de l' anonymat offert par Internet, est en train de changer non seulement virtuel, mais dans le monde réel. Tous les commentaires sont cachés à l'index, le contrôle anti - spam.