Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/shoucheng3/nahsra__antisamy_cve-2022-29577_1-6-6-1
Statische AnalyseSchwachstellenanalyseCode-AnalyseWebsicherheit
GitHubshoucheng3/nahsra__antisamy_cve-2022-29577_1-6-6-1

nahsra__antisamy_CVE-2022-29577_1-6-6-1

Java-Bibliothek für schnelle, konfigurierbare Bereinigung von nicht vertrauenswürdigem HTML, um Cross-Site-Scripting-Angriffe (XSS) zu verhindern. Verwendet richtlinienbasiertes Scannen, um vom Benutzer bereitgestelltes Markup zu bereinigen.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
3vor 9 MonatenNoch nicht geprüft
Teilen

AntiSamy

Eine Bibliothek zur schnellen, konfigurierbaren Bereinigung von HTML aus nicht vertrauenswürdigen Quellen. Unterstützt Java 7+.

Eine andere Art, das zu sagen, wäre: Es ist eine API, die Ihnen hilft sicherzustellen, dass Clients keinen bösartigen Frachtcode in das HTML einfügen, das sie für ihr Profil, Kommentare usw. bereitstellen und das auf dem Server gespeichert wird. Der Begriff „bösartiger Code" bezieht sich bei Webanwendungen meist auf „JavaScript". Meistens gelten Cascading Stylesheets nur dann als bösartig, wenn sie JavaScript aufrufen. Es gibt jedoch viele Situationen, in denen „normales" HTML und CSS auf bösartige Weise verwendet werden können.

Verwendung

1. Abhängigkeit importieren

Fügen Sie zunächst die Abhängigkeit von Maven hinzu:

root@kitploit:~
<dependency>
   <groupId>org.owasp.antisamy</groupId>
   <artifactId>antisamy</artifactId>
   <version>LATEST_VERSION</version>
</dependency>

2. Auswahl einer Basis-Policy-Datei

Es ist wahrscheinlich, dass der Anwendungsfall Ihrer Website für AntiSamy zumindest grob mit einer der vordefinierten Policy-Dateien vergleichbar ist. Jede davon repräsentiert ein „typisches" Szenario für die Erlaubnis, dass Benutzer HTML- (und möglicherweise CSS-) Formatierungsinformationen bereitstellen. Schauen wir uns die verschiedenen Policy-Dateien an:

  • antisamy-slashdot.xml
  • Slashdot ist eine Technik-Nachrichtenseite, die es Benutzern erlaubt, anonym mit sehr begrenztem HTML-Markup auf Nachrichtenbeiträge zu antworten. Slashdot ist nicht nur eine der coolsten Seiten überhaupt, sondern auch eine, die vielen verschiedenen erfolgreichen Angriffen ausgesetzt war. Die Regeln für Slashdot sind ziemlich streng: Benutzer können nur die folgenden HTML-Tags und kein CSS einreichen: <b>, <u>, <i>, <a>, <blockquote>.

    Dementsprechend haben wir eine Policy-Datei erstellt, die eine ziemlich ähnliche Funktionalität ermöglicht. Alle Textformatierungs-Tags, die direkt auf Schriftart, Farbe oder Hervorhebung wirken, wurden erlaubt.

    1. antisamy-ebay.xml

    eBay ist, soweit ich das beurteilen kann, die beliebteste Online-Auktionsseite im Universum. Es ist eine öffentliche Website, auf der jeder Einträge mit reichhaltigem HTML-Inhalt veröffentlichen darf. Es ist nicht überraschend, dass eBay aufgrund seiner Attraktivität als Angriffsziel einigen komplexen XSS-Angriffen ausgesetzt war. Einträge dürfen wesentlich reichhaltigere Inhalte enthalten als beispielsweise Slashdot – daher ist die Angriffsfläche erheblich größer.

    1. antisamy-myspace.xml

    MySpace war zu der Zeit, als dieses Projekt entstand, die beliebteste soziale Netzwerk-Website. Benutzern war es erlaubt, so ziemlich das gesamte HTML und CSS einzureichen, das sie wollten – solange es kein JavaScript enthielt. MySpace verwendete eine Wort-Blacklist zur Validierung des Benutzer-HTML, weshalb es dem berüchtigten Samy-Wurm ausgesetzt war. Der Samy-Wurm, der Fragmentierungsangriffe in Kombination mit einem Wort verwendete, das hätte auf der Blacklist stehen sollen (eval), war die Inspiration für dieses Projekt.

    1. antisamy-anythinggoes.xml

    Ich kenne keinen möglichen Anwendungsfall für diese Policy-Datei. Wenn Sie jedes einzelne gültige HTML- und CSS-Element erlauben möchten (aber ohne JavaScript oder offensichtliche CSS-bezogene Phishing-Angriffe), können Sie diese Policy-Datei verwenden. Nicht einmal MySpace war so verrückt. Sie dient jedoch als gute Referenz, da sie Basisregeln für jedes Element enthält. Sie können sie also als Wissensbasis verwenden, wenn Sie die anderen Policy-Dateien anpassen.

    HINWEIS: Änderung des Schema-Validierungsverhaltens ab AntiSamy 1.6.0

    Während wir an Verbesserungen an der XML-Schema-Definition (XSD) von AntiSamy für AntiSamy-Policy-Dateien arbeiteten, stellten wir fest, dass AntiSamy die XSD tatsächlich NICHT durchsetzte. Daher haben wir das Standardverhalten ab AntiSamy 1.6.0 GEÄNDERT, um das Schema durchzusetzen und nicht fortzufahren, wenn die AntiSamy-Policy ungültig ist. Allerdings ...

    Wir erkennen an, dass es für Entwickler möglicherweise nicht sofort möglich ist, ihre AntiSamy-Policies zu korrigieren, wenn sie nicht konform sind, und sie dennoch AntiSamy aktualisieren möchten, um Sicherheitsverbesserungen, Funktionserweiterungen und Fehlerbehebungen zu erhalten. Daher haben wir zwei Möglichkeiten bereitgestellt, die Schema-Validierung (vorübergehend!) zu deaktivieren:

    1. Setzen Sie die Java-Systemeigenschaft: owasp.validator.validateschema auf false. Dies kann über die Befehlszeile erfolgen (z. B. -Dowasp.validator.validateschema=false) oder über die Java-Systemeigenschaftendatei. Keines davon erfordert eine Codeänderung.

    2. Ändern Sie den Code, der AntiSamy verwendet, um vor dem Laden der AntiSamy-Policy Folgendes aufzurufen: Policy.setSchemaValidation(false). Dies ist ein statischer Aufruf. Sobald er deaktiviert ist, ist er für alle neuen Policy-Instanzen deaktiviert.

    Um AntiSamy-Benutzer zu ermutigen, nur XSD-konforme Policies zu verwenden, protokolliert AntiSamy immer eine Art Warnung, wenn die Schema-Validierung deaktiviert ist. Es wird entweder WARNEN, dass die Policy nicht konform ist, damit sie behoben werden kann, oder es wird WARNEN, dass die Policy konform ist, aber die Schema-Validierung AUS ist, sodass die Validierung wieder aktiviert werden sollte (d. h. nicht weiter deaktiviert werden sollte). Wir haben außerdem INFO-Level-Protokollierung hinzugefügt, wenn AntiSamy-Schemas geladen und validiert werden.

    Die Deaktivierung der Schema-Validierung ist ab sofort veraltet und wird in AntiSamy 1.7+ entfernt

    Die Möglichkeit, die neue Schema-Validierungsfunktion zu deaktivieren, ist als vorübergehend gedacht, um den Übergang zu ordnungsgemäß gültigen AntiSamy-Policy-Dateien zu erleichtern. Wir planen, diese Funktion in der nächsten großen Version zu entfernen. Wir schätzen, dass dies irgendwann Mitte bis Ende 2022 sein wird, also nicht in nächster Zeit. Die Idee ist, Entwicklerteams, die AntiSamy direkt oder über andere Bibliotheken wie ESAPI verwenden, ausreichend Zeit zu geben, ihre Policy-Dateien schema-konform zu machen, bevor die Schema-Validierung erforderlich wird.

    Protokollierung: Die in 1.6.0 eingeführte Protokollierung verwendete versehentlich log4j, während slf4j als Protokollierungs-API deklariert wurde.

    Dies wurde in 1.6.1 schnell behoben, sodass nur noch slf4j-APIs verwendet werden. AntiSamy enthält jetzt die Bibliothek slf4j-simple für seine Protokollierung, aber AntiSamy-Benutzer können eine alternative slf4j-kompatible Protokollierungsbibliothek importieren und verwenden, wenn sie dies bevorzugen. Sie können slf4j-simple bei Bedarf auch ausschließen.

    WARNUNG: Die Verwendung von slf4j-simple durch AntiSamy ohne Konfigurationsdatei protokolliert Nachrichten gepuffert auf der Standardausgabe. Daher können einige oder alle dieser Protokollmeldungen verloren gehen, wenn eine Ausnahme wie eine PolicyException ausgelöst wird. Dies kann wahrscheinlich behoben werden, indem slf4j-simple so konfiguriert wird, dass es stattdessen auf die Standardfehlerausgabe protokolliert, oder indem ein alternatives slf4j-Logger verwendet wird, der dies tut.

    3. Anpassen der Policy-Datei

    Möglicherweise möchten Sie AntiSamy in einer Standardkonfiguration bereitstellen, aber es ist ebenso wahrscheinlich, dass eine Website strenge, geschäftsgetriebene Regeln dafür haben möchte, was Benutzer erlauben dürfen. Die Diskussion, die die Anpassung bestimmt, sollte auch die Angriffsfläche berücksichtigen – die im relativen Verhältnis zur Policy-Datei wächst.

    4. Aufrufen der AntiSamy-API

    Die Verwendung von AntiSamy ist einfach. Hier ist ein Beispiel für den Aufruf von AntiSamy mit einer Policy-Datei:

    root@kitploit:~
    import org.owasp.validator.html.*;
    
    Policy policy = Policy.getInstance(POLICY_FILE_LOCATION);
    
    AntiSamy as = new AntiSamy();
    CleanResults cr = as.scan(dirtyInput, policy);
    
    MyUserDAO.storeUserProfile(cr.getCleanHTML()); // some custom function
    

    Es gibt mehrere Möglichkeiten, ein Policy-Objekt zu erstellen. Die Methode getInstance() kann eines der folgenden Argumente akzeptieren:

    • einen String-Dateinamen
    • ein File-Objekt
    • einen InputStream
    • Policy-Dateien können auch per Dateinamen referenziert werden, indem ein zweites Argument an die Methode AntiSamy#scan() übergeben wird, wie die folgenden Beispiele zeigen:
    root@kitploit:~
    AntiSamy as = new AntiSamy();
    CleanResults cr = as.scan(dirtyInput, policyFilePath);
    

    Schließlich können Policy-Dateien auch direkt über File-Objekte im zweiten Parameter referenziert werden:

    root@kitploit:~
    AntiSamy as = new AntiSamy();
    CleanResults cr = as.scan(dirtyInput, new File(policyFilePath));
    

    5. Analysieren von CleanResults

    Das CleanResults-Objekt bietet eine Menge nützlicher Dinge.

    • getErrorMessages() - eine Liste von String-Fehlermeldungen -- wenn dies 0 zurückgibt, bedeutet das nicht, dass es keine Angriffe gab!
    • getCleanHTML() - die bereinigte, sichere HTML-Ausgabe
    • getCleanXMLDocumentFragment() - das bereinigte, sichere XMLDocumentFragment, das sich in getCleanHTML() widerspiegelt
    • getScanTime() - gibt die Scanzeit in Sekunden zurück

    Wichtiger Hinweis: Es gab viel Verwirrung über die Methode getErrorMessages(). Die Methode getErrorMessages() beantwortet nicht subtil die Frage „Ist diese Eingabe sicher?" im Affirmativ, wenn sie eine leere Liste zurückgibt. Sie müssen immer die bereinigte Eingabe verwenden, und es gibt keine Möglichkeit, sicher zu sein, dass die übergebene Eingabe keine Angriffe enthielt.

    Der Serialisierungs- und Deserialisierungsprozess, der für die Wirksamkeit des Sanitizers entscheidend ist, ist absichtlich verlustbehaftet und filtert Angriffe über eine Reihe von Angriffsvektoren heraus. Leider ist einer der Kompromisse dieser Strategie, dass wir im Nachhinein nicht immer wissen, dass ein Angriff gesehen wurde. Daher existiert die getErrorMessages()-API, um Benutzern zu helfen zu verstehen, wie ihre gut gemeinte Eingabe die Anforderungen des Systems erfüllt, und nicht, um einem Entwickler zu helfen, zu erkennen, ob ein Angriff vorhanden war.

    Weitere Dokumentation

    Weitere Dokumentation ist auf der Wiki-Seite dieses Github-Projekts verfügbar: https://github.com/nahsra/antisamy/wiki sowie auf der OWASP AntiSamy-Projektseite: https://owasp.org/www-project-antisamy/

    Mitwirkung an AntiSamy

    Ein Problem gefunden?

    Wenn Sie einen Fehler gefunden haben, erstellen Sie ein Issue im AntiSamy-Repo: https://github.com/nahsra/antisamy/issues

    Eine Schwachstelle gefunden?

    Wenn Sie eine Schwachstelle in AntiSamy gefunden haben, durchsuchen Sie zunächst die Issue-Liste (siehe oben), um festzustellen, ob sie bereits gemeldet wurde. Ist dies nicht der Fall, kontaktieren Sie bitte direkt Dave Wichers (dave.wichers at owasp.org). Bitte melden Sie Schwachstellen nicht über GitHub-Issues, da wir unsere Benutzer während der Implementierung und Bereitstellung eines Patches schützen möchten. Wenn Sie für das Finden der Schwachstelle anerkannt werden möchten, folgen Sie bitte diesem Prozess.

    Weitere Details finden Sie in der Datei: SECURITY.md.

    So bauen Sie

    Sie können aus dem Quellcode ganz einfach bauen und testen:

    root@kitploit:~
    $ git clone https://github.com/nahsra/antisamy
    $ cd antisamy
    $ mvn package
    

    Lizenz

    Veröffentlicht unter der BSD-3-Clause-Lizenz wie hier angegeben: LICENSE.

    Tool herunterladen