So suchen Sie nach Schadcode ohne Antivirenprogramme und Scanner. So suchen Sie nach Schadcode ohne Antivirenprogramme und Scanner. So suchen Sie nach Schadcode in WordPress

1. Entpacken Sie es in den Site-Ordner.
2. Folgen Sie dem Link your_site/fscure/
3. alles

Was kann er tun?

1. Automatische Suche nach Viren anhand von Signaturen.
2. Suchen Sie in Dateien nach einer Zeichenfolge
3. Dateien löschen
4. Patchen Sie Schadcode mithilfe regulärer Ausdrücke

Das Skript nimmt Ihnen nicht die ganze Arbeit ab und erfordert nur minimale Kenntnisse. Es wird empfohlen, vor der Arbeit ein Backup der Site zu erstellen.

Wie funktioniert es?

Beim ersten Start wird ein Dateiindex erstellt. Die Datei fscure.lst befindet sich im Ordner. Zeigt eine Liste von Dateien an, die potenziell schädliche Signaturen enthalten. „Potenziell bösartig“ bedeutet, dass Sie entscheiden müssen, ob es sich um einen Virus handelt oder nicht. Die Liste der Signaturen wird in der Datei config.php, Konstante SCAN_SIGN, konfiguriert. Mit den Standardeinstellungen prüft das Skript keine JS-Dateien und enthält keine Signaturen für diese.

Die häufigsten Probleme

1. Der fscure.lst-Index wird nicht erstellt. Kann passieren, wenn nicht genügend Rechte vorhanden sind. Legen Sie 777 im fscure-Ordner ab

2. 5xx-Fehler. Am häufigsten „504 Gateway Timeout“. Das Skript hat keine Zeit zur Verarbeitung und stürzt aufgrund einer Zeitüberschreitung ab. In diesem Fall gibt es mehrere Möglichkeiten, die Arbeit zu beschleunigen. Die Geschwindigkeit hängt in erster Linie von der Größe des Index ab. Es befindet sich in der Datei fscure.lst. Typischerweise kann eine Datei bis zu 5 MB in 90 % der Fälle verarbeitet werden. Wenn es keine Zeit hat, können Sie die „Gier“ des Skripts reduzieren, indem Sie das Scannen von *.jpg;*.png;*.css in der Konfiguration verbieten.
In der Datei config.php.

// Trennzeichen; define("FILES_EXCLUDE","*.js;*.jpg;*.png;*.css");

3. Das Hosting gibt eine Warnung wie aus
(HEX)base64.inject.unclassed.6: u56565656: /var/www/u65656565/data/www/34535335353.ru/fscure/index.php

Es gibt keinen Virus im Skript und das war auch nie der Fall. Und (HEX)base64.inject.unclassed.6 ist eine Konstruktion wie „echo base64_decode(“ , die oft anzutreffen ist und an sich ziemlich harmlos ist. In der neuesten Version habe ich diesen Code jedoch ersetzt.

Was tun, wenn Sie den Virus selbst nicht finden konnten?

Sie können mich für Hilfe kontaktieren. Meine Preise sind moderat. Für meine Arbeit gebe ich eine Garantie von 6 Monaten. Die Kosten für die Arbeit betragen 800 Rubel. für 1 Standort. Wenn sich auf Ihrem Konto mehrere Websites befinden, wird der Preis individuell festgelegt.

Wenn Sie es schaffen, alles selbst zu machen, wäre ich für eine finanzielle Belohnung oder einen Link zu meiner Seite dankbar.

Meine Voraussetzungen:
Yandex
41001151597934

Internetgeld
Z959263622242
R356304765617
E172301357329

Muss gemeinsam erledigt werden. Wenn Sie die ursprüngliche Ursache des Hacks beseitigen (z. B. eine Schwachstelle in der CMS-Erweiterung), aber nicht alle entfernen schädliche Dateien, kann sich der Angreifer mithilfe eines seiner Skripte wieder Zugriff auf die Website verschaffen. Wenn Sie alle heruntergeladenen Dateien löschen bösartige Skripte, aber beseitigen Sie nicht die Ursache des Hacks, kann der Angreifer die Site erneut hacken und erneut Skripte darauf hochladen.

Ein Spezialist mit den entsprechenden Kenntnissen und Erfahrungen sollte Arbeiten zur Entfernung schädlicher Skripte durchführen und die Ursachen von Hacking analysieren:

  • Um bösartige Skripte zu entfernen, benötigen Sie Kenntnisse der Programmiersprache PHP sowie Kenntnisse über das „Innere“ beliebter CMS (Joomla, WordPress usw.) und deren Erweiterungen. Dieses Wissen ist erforderlich, um Skripte direkt aus dem CMS und seinen Erweiterungen von fremden Dateien zu unterscheiden und auch um eindeutig bestimmen zu können, welche Aktionen sie ausführen, wenn sie auf zweifelhafte Skripte stoßen.
  • Um die Ursachen von Hacking zu analysieren, sind Erfahrung in der Serveradministration erforderlich. Dies ist notwendig, um den Status der Dateien auf dem Konto und den Zeitpunkt ihrer Änderung zu analysieren und diese Daten auch mit Serverprotokollen zu vergleichen, um festzustellen, welche Aktionen des Angreifers zum Hacken von Websites geführt haben.

Wenn Ihre Website gehackt wurde, wird daher empfohlen, um wiederholte Hacks zu vermeiden, die Arbeit nicht selbst durchzuführen, sondern sich an einen Spezialisten zu wenden, der die erforderliche Diagnose durchführt und empfiehlt oder durchführt notwendige Maßnahmen das Problem lösen kann und die Qualität des erzielten Ergebnisses garantieren kann.

Es gibt jedoch eine Reihe von Maßnahmen, die in einigen Fällen dazu beitragen, den sicheren Betrieb der Website ohne besondere Kenntnisse wiederherzustellen. Die Einschränkung der folgenden Methode besteht darin, dass zur Wiederaufnahme des Betriebs der Website eine vor dem Hack erstellte Sicherungskopie erforderlich ist. Wenn das Datum des Verstoßes unbekannt ist, können Sie diese Methode mit dem ältesten verfügbaren Backup ausprobieren. Die zweite Einschränkung, die sich aus der ersten ergibt, besteht darin, dass nach der Wiederherstellung der Site Daten, die der Site nach der Erstellung der Wiederherstellungssicherung hinzugefügt wurden (z. B. neue Artikel, Bilder oder Dokumente), gelöscht werden. Wenn Sie die Site unter Beibehaltung neuer Daten wiederherstellen müssen, müssen Sie sich an einen Spezialisten wenden.

Diese Maßnahmen ermöglichen es uns nicht, die Ursache des Website-Hacks zu ermitteln, aber jede von ihnen zielt darauf ab, eine der möglichen Ursachen für das Eindringen zu beseitigen. Da der genaue Grund für den Hack unbekannt ist, ist es notwendig, alle durchzuführen. Die Aktionen sind in einer solchen Reihenfolge angeordnet, dass zunächst die Möglichkeit vollständig ausgeschlossen wird, dass der Angreifer seine Aktivitäten auf der Website oder dem Hosting-Konto fortsetzt momentan, und verhindern Sie dann, dass ein Angreifer in Zukunft die Website betritt.

Bei den folgenden Schritten wird davon ausgegangen, dass Sie nur eine Website auf Ihrem Hosting-Konto haben. Wenn sich auf dem Konto mehrere Websites befinden, können auch diese gehackt werden und die Website könnte über sie gehackt werden. Es ist notwendig, entweder die Site, mit der die Wiederherstellungsarbeiten durchgeführt werden, auf ein separates Konto zu übertragen oder die Wiederherstellung für alle auf dem Konto gehosteten Sites gleichzeitig durchzuführen.

Die Reihenfolge der Aktionen ist wichtig, daher ist es notwendig, sie in der genauen Reihenfolge auszuführen, in der sie unten aufgeführt sind.

  • Unmittelbar nach der Feststellung, dass eine Website gehackt wurde, ist es notwendig, den Besucherzugriff vollständig zu sperren. Dies verhindert erstens, dass der Angreifer böswillige Aktivitäten auf der Website ausführt, und ermöglicht ihm zweitens nicht, die Wiederherstellungsarbeiten zu beeinträchtigen. Dieser Schritt ist sehr wichtig, da das Entfernen schädlicher Skripte und die Beseitigung der Ursache des Hacks nicht über Nacht geschieht – in der Regel dauert es mehrere Stunden. Bleibt die Site weiterhin von außen zugänglich, kann der Angreifer Skripte erneut in den bereits freigegebenen Bereich der Site hochladen. In diesem Fall kann ein Angreifer unterschiedliche IP-Adressen für die Verbindung verwenden, sodass es nicht funktioniert, den Zugriff nur auf eine Liste von IP-Adressen zu verweigern. Um sicherzustellen, dass die Website von erkannten schädlichen Skripten befreit wird, ist es notwendig, den Zugriff des Angreifers auf die Website vollständig zu blockieren. Dies kann nur erreicht werden, indem die Website für alle Besucher vollständig blockiert wird. Wenden Sie sich an den technischen Support des Hosting-Anbieters, der Ihre Website hostet, um diese zu blockieren.
  • Nachdem Sie die Site blockiert haben, müssen Sie die Computer, von denen aus Sie mit der Site gearbeitet haben, mit einem modernen Antivirenprogramm mit aktualisierten Virendatenbanken überprüfen. Wenn die Site durch den Diebstahl von Kontopasswörtern mithilfe eines Virus gehackt wurde, müssen Sie sicherstellen, dass die weitere Arbeit mit der gehackten Site von einem Computer aus durchgeführt wird, auf dem sich keine Viren befinden. Andernfalls können diese nach einer Änderung der Zugangspasswörter erneut gestohlen werden.
  • Nachdem Sie die Site gesperrt und auf Viren überprüft haben, müssen Sie alle Zugangspasswörter zu Ihrem Konto ändern: Zugriff über FTP, über SSH sowie Zugriff auf das Hosting-Kontrollfeld. Wenn ein Angreifer mit einer dieser Methoden auf Kontodateien zugegriffen hat, ist dies nach der Änderung der Passwörter nicht mehr möglich.
  • Nach dem Ändern der Passwörter müssen Sie alle Serverprozesse zerstören, die unter dem Konto ausgeführt werden, auf dem die Site verwaltet wird. Prozesse, die von einem Angreifer im Hintergrund gestartet werden, ohne zerstört zu werden, können nach Abschluss der Wiederherstellungsarbeiten schädliche Skripte auf der Website ersetzen. Um dies zu verhindern, müssen alle Prozesse zerstört werden, die vor der Sperrung der Site ausgeführt wurden. Die Site sollte zu diesem Zeitpunkt bereits gesperrt sein, damit der Angreifer keine neuen Prozesse starten kann, indem er auf eines seiner Skripte auf der Site zugreift. Um auf Ihrem Konto laufende Prozesse zu zerstören, wenden Sie sich an den technischen Support des Hosting-Anbieters, der Ihre Website hostet.
  • Jetzt ist es nicht mehr möglich, von außen in die Baustelle einzudringen, und Sie können mit der Wiederherstellung beginnen.
  • Löschen Sie vor weiteren Aktionen alle vorhandenen Site-Dateien, um sicherzustellen, dass keine schädlichen Skripte oder CMS-Skripte vorhanden sind, in die der Angreifer schädlichen Code eingefügt hat. Dieser Schritt ist auch deshalb wichtig, weil beim Wiederherstellen einer Site aus einem Backup nicht immer Dateien gelöscht werden, die vor der Wiederherstellung vorhanden waren. Wenn nach der Wiederherstellung aus einem Backup alte Schadskripte auf der Site verbleiben, kann der Angreifer erneut auf die Site zugreifen. Sie können dies vermeiden, indem Sie alle Site-Dateien löschen, bevor Sie die Wiederherstellung durchführen.
  • Nachdem Sie alle Site-Dateien gelöscht haben, stellen Sie die Site aus einem Backup wieder her, das vor dem Hackerangriff erstellt wurde. Oft reicht es aus, nur die Site-Dateien wiederherzustellen. Wenn jedoch nach der Wiederherstellung Fehler im Betrieb der Site festgestellt werden, ist eine vollständige Wiederherstellung der Site erforderlich: sowohl die Dateien als auch die Datenbank.
  • Aktualisieren Sie nach der Wiederherstellung aus einem Backup Ihr ​​Content Management System (CMS) und Ihre Erweiterungen auf die neuesten Versionen. Dies ist notwendig, um das Vorhandensein bekannter Schwachstellen auf der Website auszuschließen, durch die sie gehackt werden könnte. Das Update kann in der Regel über den CMS-Administrationsbereich erfolgen. Zum Erhalten vollständige Anleitung Um das CMS zu aktualisieren, müssen Sie die Website des Systementwicklers aufrufen. Es ist wichtig, nicht nur das CMS selbst, sondern auch alle seine Erweiterungen zu aktualisieren, da Hackerangriffe häufig durch eine Schwachstelle in einer der CMS-Erweiterungen (z. B. Plugins, Themes, Widgets usw.) erfolgen. Derzeit ist es noch nicht möglich, die Website für Besucher freizugeben, da sie möglicherweise noch angreifbar ist. Um zum Aktualisieren auf Ihre Website zuzugreifen, wenden Sie sich an den technischen Support des Hosting-Anbieters, der Ihre Website hostet, und bitten Sie darum, den Zugriff auf die Website nur über die IP-Adresse Ihres Computers zuzulassen. Ihre IP-Adresse können Sie beispielsweise unter inet.yandex.ru herausfinden.
  • Gehen Sie nach der Aktualisierung des Site-Management-Systems und seiner Erweiterungen zum Bereich Site-Administration und ändern Sie dort das Administrator-Zugriffskennwort. Stellen Sie sicher, dass sich unter den Site-Benutzern keine anderen Benutzer mit Administratorrechten befinden (sie könnten von einem Angreifer hinzugefügt worden sein) und löschen Sie sie, falls welche gefunden werden.
  • Nachdem die Site nun aus einem Backup wiederhergestellt wurde und keine schädlichen Skripte enthält, wurden das CMS und seine Erweiterungen aktualisiert letzte Version, in dem es keine Schwachstellen gibt und die Zugangskennwörter zur Site und zum Hosting-Konto geändert wurden, können Sie die Site wieder für Besucher öffnen.
  • Alle oben genannten Aktionen müssen in der angegebenen Reihenfolge ohne Auslassungen oder Änderungen durchgeführt werden. Wenn die Aktionen ungenau ausgeführt werden, können schädliche Skripte oder Schwachstellen auf der Website verbleiben, wodurch diese nach kurzer Zeit erneut von einem Angreifer gehackt werden kann. Wenn es aus irgendeinem Grund nicht möglich ist, die oben genannten Schritte in der angegebenen Form auszuführen, wenden Sie sich an einen Spezialisten, um Arbeiten zur Wiederherstellung der Site nach einem Hack durchzuführen.

    Um Ihre Website in Zukunft vor wiederholten Hacks zu schützen, müssen Sie die folgenden Empfehlungen befolgen:
  • Verfolgen Sie Aktualisierungen des CMS und dessen Erweiterungen auf den Websites der Entwickler und aktualisieren Sie diese zeitnah auf die neuesten Versionen. Wenn in einem Update-Kommentar angegeben wird, dass eine Schwachstelle behoben wird, installieren Sie das Update so schnell wie möglich.
  • Arbeiten Sie mit der Website und dem Hosting-Konto nur von Computern aus, die durch moderne Antivirenprogramme mit ständig aktualisierten Virendatenbanken vor Viren geschützt sind.
  • Verwenden Sie komplexe Passwörter, damit diese nicht durch eine Wörterbuchsuche erraten werden können.
  • Speichern Sie keine FTP- und SSH-Passwörter in Programmen zum Herstellen einer Verbindung zur Site und speichern Sie nicht das Zugangspasswort zum Verwaltungsbereich der Site und zum Hosting-Kontrollfeld in Ihrem Browser.
  • Ändern Sie von Zeit zu Zeit (z. B. alle drei Monate) die Passwörter für den Zugriff auf die Website und das Hosting-Konto.
  • Wenn auf dem Computer, von dem aus Sie mit der Site gearbeitet haben, Viren entdeckt wurden, ändern Sie so schnell wie möglich die Passwörter für den Zugriff auf die Site und das Hosting-Konto. Sie müssen alle Passwörter ändern: Zugangspasswörter über FTP, SSH, das Passwort aus dem Administrationsbereich der Site sowie das Passwort aus dem Hosting-Kontrollpanel.
  • Gewähren Sie Dritten keinen Zugriff auf die Website, es sei denn, Sie sind sicher, dass diese diese Richtlinien ebenfalls befolgen.
  • Schädlicher Code gelangt durch Fahrlässigkeit oder böswillige Absicht auf die Website. Die Zwecke von bösartigem Code sind unterschiedlich, im Wesentlichen schadet er jedoch dem normalen Betrieb einer Website oder beeinträchtigt ihn. Um bösartigen Code in WordPress zu entfernen, müssen Sie ihn zunächst finden.

    Was ist Schadcode auf einer WordPress-Site?

    Von Aussehen In den meisten Fällen handelt es sich bei Schadcode um eine Reihe von Buchstaben und Symbolen des lateinischen Alphabets. Tatsächlich handelt es sich hierbei um einen verschlüsselten Code, mit dem diese oder jene Aktion ausgeführt wird. Die Aktionen können sehr unterschiedlich sein, zum Beispiel werden Ihre neuen Beiträge sofort auf einer Drittressource veröffentlicht. Dies bedeutet im Wesentlichen, dass Ihre Inhalte gestohlen werden. Codes haben auch andere „Aufgaben“, zum Beispiel das Platzieren ausgehender Links auf Seiten der Website. Die Aufgaben können sehr anspruchsvoll sein, aber eines ist klar: Schadcodes müssen gejagt und entfernt werden.

    Wie gelangen Schadcodes auf eine Website?

    Es gibt auch viele Schlupflöcher, durch die Codes in die Website gelangen können.

  • Am häufigsten handelt es sich dabei um Themes und Plugins, die von „linken“ Ressourcen heruntergeladen wurden. Allerdings ist eine solche Durchdringung typisch für sogenannte verschlüsselte Links. Expliziter Code landet nicht auf der Website.
  • Das Eindringen eines Virus beim Hacken einer Website ist am gefährlichsten. In der Regel können Sie beim Hacken einer Website nicht nur einen „Einmalcode“ platzieren, sondern auch Code mit Elementen von Malware (Schadprogramm) installieren. Sie finden beispielsweise einen Code und löschen ihn, er wird jedoch nach einiger Zeit wiederhergestellt. Es gibt wiederum viele Möglichkeiten.
  • Ich möchte gleich darauf hinweisen, dass die Bekämpfung solcher Viren schwierig ist und die manuelle Entfernung Kenntnisse erfordert. Es gibt drei Lösungen für das Problem: Die erste Lösung besteht darin, Antiviren-Plugins zu verwenden, beispielsweise ein Plugin namens BulletProof Security.

    Diese Lösung liefert gute Ergebnisse, braucht aber, wenn auch etwas, Zeit. Es gibt eine radikalere Lösung, um schädliche Codes, einschließlich komplexer Viren, zu entfernen. Dies besteht darin, die Website anhand vorgefertigter Codes wiederherzustellen Sicherungskopien Website.

    Da ein guter Webmaster dies regelmäßig tut, können Sie problemlos auf eine nicht infizierte Version zurückgreifen. Die dritte Lösung ist für die Reichen und Faulen, wenden Sie sich einfach an ein spezialisiertes „Büro“ oder einen einzelnen Spezialisten.

    So suchen Sie nach bösartigem Code in WordPress

    Es ist wichtig zu verstehen, dass sich bösartiger Code auf WordPress in jeder Datei auf der Website befinden kann und nicht unbedingt im Arbeitsthema. Er kann ein Plugin, ein Theme oder „selbstgemachten“ Code aus dem Internet entwickeln. Es gibt verschiedene Möglichkeiten, Schadcode zu finden.

    Methode 1: Manuell. Sie scrollen durch alle Site-Dateien und vergleichen sie mit den Dateien eines nicht infizierten Backups. Wenn Sie den Code einer anderen Person finden, löschen Sie ihn.

    Methode 2: Verwendung von WordPress-Sicherheits-Plugins. Zum Beispiel, . Dieses Plugin verfügt über eine großartige Funktion: Es scannt Site-Dateien auf das Vorhandensein von Code anderer Leute und das Plugin meistert diese Aufgabe perfekt.

    Methode 3. Wenn Sie über einen angemessenen Hosting-Support verfügen und den Eindruck haben, dass sich jemand anderes auf der Website befindet, bitten Sie ihn, Ihre Website mit seinem Antivirenprogramm zu scannen. Ihr Bericht listet alle infizierten Dateien auf. Als nächstes öffnen Sie diese Dateien in Texteditor und Schadcode entfernen.

    Methode 4. Wenn Sie mit SSH-Zugriff auf das Site-Verzeichnis arbeiten können, dann machen Sie weiter, es verfügt über eine eigene Küche.

    Wichtig! Unabhängig davon, wie Sie nach bösartigem Code suchen, schließen Sie den Zugriff auf die Site-Dateien (aktivieren Sie den Wartungsmodus), bevor Sie den Code durchsuchen und dann löschen. Denken Sie an Codes, die selbst wiederhergestellt werden, wenn sie gelöscht werden.

    Suchen Sie mit der Evaluierungsfunktion nach Schadcodes

    In PHP gibt es eine solche Funktion namens eval. Es ermöglicht Ihnen, jeden Code in seiner Zeile auszuführen. Darüber hinaus kann der Code verschlüsselt werden. Aufgrund der Verschlüsselung sieht der Schadcode wie eine Reihe von Buchstaben und Symbolen aus. Zwei beliebte Kodierungen sind:

  • Base64;
  • Rot13.
  • Dementsprechend sieht die Auswertungsfunktion in diesen Kodierungen so aus:

    • eval(base64_decode(...))
    • eval (str_rot13 (...)) //in internen Anführungszeichen, langen, unklaren Buchstaben- und Symbolsätzen.

    Der Algorithmus zur Suche nach Schadcode mithilfe der Eval-Funktion lautet wie folgt (wir arbeiten über das Verwaltungsfenster):

    • Gehen Sie zum Site-Editor (Darstellung→Editor).
    • Kopieren Sie die Datei „functions.php“.
    • Öffnen Sie es in einem Texteditor (z. B. Notepad++) und suchen Sie nach dem Wort: eval.
    • Wenn Sie es finden, löschen Sie nichts überstürzt. Sie müssen verstehen, was diese Funktion „verlangt“ auszuführen. Um dies zu verstehen, muss der Code entschlüsselt werden. Für die Dekodierung gibt es Online-Tools, sogenannte Decoder.
    Decoder/Encoder

    Decoder funktionieren einfach. Sie kopieren den Code, den Sie entschlüsseln möchten, fügen ihn in das Decoderfeld ein und dekodieren ihn.

    Zum Zeitpunkt des Schreibens habe ich keinen einzigen verschlüsselten Code in WordPress gefunden. Ich habe den Code von der Joomla-Website gefunden. Prinzipiell gibt es keinen Unterschied im Verständnis der Dekodierung. Schauen wir uns das Foto an.

    Wie Sie auf dem Foto sehen können, zeigte die Evaluierungsfunktion nach der Dekodierung keinen schrecklichen Code an, der die Sicherheit der Website gefährdet, sondern einen verschlüsselten Copyright-Link des Autors der Vorlage. Es kann auch entfernt werden, wird aber nach der Aktualisierung der Vorlage wieder angezeigt, wenn Sie nicht verwenden.

    Abschließend möchte ich anmerken, dass kein Virus auf die Website gelangt:

    • Schädlicher Code auf WordPress ist oft in Themes und Plugins enthalten. Installieren Sie daher keine Vorlagen und Plugins von „linken“, ungeprüften Ressourcen und überprüfen Sie diese in diesem Fall sorgfältig auf das Vorhandensein von Links und ausführenden Funktionen von PHP. Überprüfen Sie die Website nach der Installation von Plugins und Themes aus „illegalen“ Ressourcen mit einer Antivirensoftware.
    • Stellen Sie sicher, dass Sie regelmäßig Sicherungen durchführen und andere durchführen.
    Schädliches JavaScript

    Ich bin der Meinung, dass es einfacher und effektiver ist, sich mit Browser-Tools vor eingeschleusten bösartigen Browser-Skripten (gespeicherten XSS-Angriffen) zu schützen: . Der Browserschutz gegen JavaScript, der aus dem Hinzufügen von Filtercode zu den HTML-Seiten der Website besteht, ist vermutlich zuverlässig; das Vorhandensein eines solchen Schutzes schließt jedoch nicht die Notwendigkeit aus, auch einen Serverfilter zu verwenden. Für dieselben XSS-Angriffe können Sie eine zusätzliche Verteidigungslinie auf dem Server organisieren. Wir müssen uns auch an die Möglichkeit erinnern, dass ein Angreifer nicht browserbasierte, sondern serverseitige Skripte (PHP) in eine von einer Website gesendete HTML-Nachricht einfügt, die der Browser nicht erkennen kann.

    Ein angreifendes Skript, egal ob browserbasiert oder serverbasiert, ist ein Programm; man muss davon ausgehen, dass das Programm immer einige symbolische Unterschiede zu „reinem“ HTML aufweisen wird. Versuchen wir, solche Unterschiede zu finden und daraus einen HTML-Filter auf dem Server zu erstellen. Nachfolgend finden Sie Beispiele für bösartiges JavaScript.

    XSS:

    Etwas Text


    Etwas Text

    Verschlüsseltes XSS:

    Etwas Text


    Etwas Text

    Browser stellen Text aus Zeichenprimitiven wieder her, die sich nicht nur in HTML-Containern (zwischen den öffnenden und schließenden Tags) befinden, sondern auch innerhalb der Tags selbst (zwischen< и >). URL-Kodierung ist in http-Adressen zulässig. Dies erschwert die serverseitige Erkennung von Schadcode, da die gleiche Zeichenfolge auf unterschiedliche Weise dargestellt werden kann.

    XSS-Würmer:

    "+innerHTML.slice(action= (method="post")+".php",155)))">





    Alert("xss");with(new XMLHttpRequest)open("POST","post.php"),send("content="+_.outerHTML)

    Die oben genannten XSS-Würmer sind nur einige der vielen, die im Januar 2008 im Wettbewerb von Robert Hansen (alias RSnake) um den kürzesten bösartigen JavaScript-Wurm eingereicht wurden (Wettbewerbsergebnisse).

    Anzeichen von XSS-Angriffen

    Ein XSS-Skript ist ein Programm, das auf DOM-Objekte (Document Object Model) und deren Methoden zugreift. Andernfalls ist es unwahrscheinlich, dass es in irgendeiner Weise schädlich ist. Zum Beispiel eine JavaScript-Zeichenfolge
    onckick="var a = "xss""
    hat keinen Einfluss auf das Dokumentobjektmodell. Selbst wenn eine solche Zeichenfolge in ein HTML-Tag eingebettet ist, ist sie harmlos. Nur durch die Manipulation von HTML-Dokumentobjekten und deren Methoden kann ein Hacker einer Website erheblichen Schaden zufügen. Zum Beispiel die Linie
    onmousemove="document.getElementsByTagName("body").innerHTML="XSS""
    ersetzt bereits den Inhalt der Seite.

    Ein Zeichen für den Zugriff auf DOM-Methoden sind Klammern sowie Punkte links vom Gleichheitszeichen. Klammern können in HTML auch verwendet werden, um eine Farbe im rgb()-Format festzulegen, allerdings werden die Schrift- und Hintergrundfarben in HTML auf mindestens drei weitere Arten festgelegt. Daher kann auf Klammern verzichtet werden, ohne die Ausdruckskraft des HTML-Textes zu beeinträchtigen. Als Regel muss akzeptiert werden, dass die Klammern innerhalb des Tags stehen (d. h. dazwischen).< и >) – das ist sehr gefährlich. Wenn wir eine Nachricht von einem Benutzer auf dem Server erhalten und diese Nachricht Klammern in den Tags enthält, dann ist es am besten, eine solche Nachricht zu blockieren.

    Der Punkt kann in HTML-Tags enthalten sein: Bei der Angabe der Linkadresse (tag ); beim Festlegen der Größe von HTML-Elementen (style="height:1.5in; width:2.5in;" ). Sondern Zeichenfolgen der Form
    Buchstabe Punkt gleich
    darf nicht in HTML-Tags enthalten sein. Wenn die angegebene Sequenz in einem HTML-Tag vorhanden ist, enthält die Nachricht des Benutzers höchstwahrscheinlich ein Skript und sollte blockiert werden.

    Ein weiteres offensichtliches Gefahrenzeichen ist das „+“-Symbol im Etikett. Im skriptlosen HTML gibt es so etwas nicht. Wenn wir in den Tags Pluspunkte finden, blockieren wir die Nachricht gnadenlos.

    Um mit Zeichenprimitiven innerhalb von HTML-Tags zu verschlüsseln, fügt ein gut gemeinter Site-Benutzer einen Kommentar hinzu Visueller Editor Er wird niemals angerannt kommen. Die Verwendung symbolischer Grundelemente in Tags bietet keine Vorteile in Form zusätzlicher Ausdrucksmittel; sie erfordert lediglich zusätzliche Schreibzeit. In den meisten Fällen würde man meinen, dass ein wohlmeinender Benutzer nicht einmal weiß, dass es bestimmte Zeichenprimitive in HTML gibt. Daher gilt die Regel: Ein kaufmännisches Und-Zeichen in einem Tag ist ein Beweis für einen Angriff auf die Website. Wenn wir dies sehen, blockieren wir die Nachricht.

    Eine ähnliche Regel sollte für das „%“-Symbol übernommen werden, das bei der URL-Codierung verwendet werden kann. Prozentsätze werden jedoch auch im „reinen“ HTML verwendet, um die relativen Größen von Elementen festzulegen. Gefährliche Kombinationen sind solche, bei denen auf das „%“-Zeichen unmittelbar ein Buchstabe oder eine Zahl folgt.

    Serverskripte neutralisieren

    Im Gegensatz zu JavaScript-Interpretern in Browsern lässt der PHP-Interpreter auf dem Server keine Freiheiten beim Schreiben von Programmtexten zu. Um ein mögliches Serverskript zu neutralisieren, reicht es daher aus, in der HTML-Nachricht des Benutzers alle Zeichen, die beim Schreiben eines PHP-Programms wesentlich sind, vollständig durch ihre HTML-Grundelemente zu ersetzen. Die ersten zu ersetzenden Zeichen sind Dollar und Unterstrich, Punkt, Rund, Quadrat und Geschweifte Klammern, Plus- und Minuszeichen, Backslash-Zeichen.

    PHP-Filter für HTML-Nachrichten

    $message ist die vom visuellen Editor an den Server empfangene HTML-Nachricht.

    // Länge der Nachricht merken $lenmessage = strlen($message); // Kommentar-Tag ausschneiden $message = preg_replace("//", "", $message); // jeden Tag ausschneiden, in dem das Attribut „src“ auf eine externe Ressource verweist $message = preg_replace("/]+?src[\w\W]+\/\/[^>]+?>/i" , " ", $message); // Schneiden Sie jedes Tag aus, das ein beliebiges Zeichen enthält, außer: - a-z 0-9 / . : ; " = % # space $message = preg_replace("/]+[^->a-z0-9\/\.\:\;\"\=\%\#\s]+[^>]+?> /i", "", $message); // Jedes Tag ausschneiden, das die Sequenz „. a-z =" $message = preg_replace("/]+?\.+?\=[^>]+?>/i", "", $message); // Jedes Tag ausschneiden, das die Sequenz „% a-z“ oder „% 0-9“ enthält $message = preg_replace("/]+?\%+?[^>]+?>/i", "", $ Nachricht); // Jedes Tag ausschneiden, das die Sequenz „script“ oder „js“ enthält: $message = preg_replace("/]*?script[^>]*?>/i", "", $message); $message = preg_replace("/]*?js:[^>]*?>/i", "", $message); // Jedes Tag ausschneiden, das mit einem anderen Zeichen als „a-z“ oder „/“ beginnt $message = preg_replace("/]*?>/i", "", $message); // prüfen: Wenn die Nachricht gekürzt ist, beenden Sie das Programm $lenmessage2 = strlen($message); if ($lenmessage != $lenmessage2) ( print "Die Nachricht kann nicht hinzugefügt werden"; exit; ) // Führen Sie eine durchgängige Ersetzung gefährlicher Zeichen durch ihre entsprechenden Grundelemente durch $message = str_replace("$", "$" , $message); $message = str_replace("_", "_", $message); $message = str_replace(".", ".", $message); $message = str_replace(chr(92), "\", $message); // \ $message = str_replace("(", "(", $message); $message = str_replace()", ")", $message); $message = str_replace("[", "[", $message); $message = str_replace("]", "]", $message); $message = str_replace("(", "(", $message); $message = str_replace()", ")", $message); $message = str_replace("?", "?", $message); // Jetzt wurde die Nachricht überprüft und die darin enthaltenen Skripte wurden neutralisiert

    Es ist zu beachten, dass der Filter gepaarte Tags nicht entfernt. Nehmen wir an, wir haben es geschafft
    Klicken Sie hier!
    Der Filter schneidet nur das aus, das gepaarte (schließende) Tag bleibt jedoch erhalten. Wenn Sie Nachrichten an den Browser senden, die Tags ohne entsprechende Paare enthalten, kann es zu Problemen in Form einer „Verzerrung“ der Website kommen. Es ist nicht bekannt, welchem ​​öffnenden Tag der Browser das verbleibende ungepaarte schließende Tag zuordnet. Daher und auch aus Sicherheitsgründen sollten Nachrichten, in denen der Filter etwas ausgeschnitten hat, überhaupt nicht an den Browser gesendet werden. Es ist besser, etwas wie „Die Nachricht konnte nicht hinzugefügt werden“ auszudrucken und das Programm zu beenden.

    Es wird erwartet, dass die Nachricht in eine Datei geschrieben wird (nicht in eine Datenbank).

    Diskussion

    Für Kritik bin ich dankbar. Schreiben Sie an das Support-Forum im Abschnitt

    
    Spitze