Zum Inhalt springen

Race / Smuggling ​

Race / Smuggling bietet zwei spezialisierte Tools für zeitkritische HTTP-Angriffe und Angriffe auf Protokollebene.

Race Conditions ​

Der Tab Race Condition sendet mehrere Kopien einer Anfrage gleichzeitig an denselben Endpunkt und lässt dich Antworten und Laufzeiten der parallelen Ausführungen vergleichen.

Wann du das Tool verwenden solltest ​

  • TOCTOU (time-of-check/time-of-use): teste, ob gleichzeitige Anfragen eine Prüfung und einen zustandsändernden Vorgang voneinander trennen können.
  • Kontomanipulation: sende gleichzeitige Änderungen von Kontoständen, Gutscheineinlösungen oder mengenbegrenzte Vorgänge, um die doppelte Verwendung desselben Guthabens oder überzählige Einlösungen zu testen.
  • Umgehen von Abstimmungs- oder Ratenlimits: prüfe, ob benutzerspezifische Limits atomar durchgesetzt werden.

Einen Race-Test ausführen ​

  1. Erstelle die Zielanfrage im Tab Race Condition oder sende sie dorthin.
  2. Lege die Parallelität fest, also wie viele Kopien parallel gesendet werden sollen.
  3. Klicke auf die Schaltfläche … Anfragen senden, deren Beschriftung die eingestellte Anzahl enthält. Alle Kopien werden so gleichzeitig wie möglich gesendet.
  4. Prüfe die Antworttabelle: Statuscode, Body und verstrichene Zeit jeder Kopie.
  5. Unterschiede zwischen Antworten (abweichende Statuscodes, unterschiedliche Antwort-Bodys, unerwarteter Erfolg ab Kopie 2) deuten auf ein Zeitfenster für eine Race Condition hin.

HTTP/2-Single-Packet-Racing ​

Wenn das Ziel HTTP/2 unterstützt, wähle unter Angriffsmodus die Option H2 Einzelpaket. Die Sendeschaltfläche heißt dann H2-Race starten und zeigt zusätzlich die Anzahl der Streams. HTTP/2 überträgt alle parallelen Anfragen mittels Multiplexing über eine Verbindung. Das beseitigt Netzwerkjitter und sorgt zuverlässiger dafür, dass sie gleichzeitig beim Server ankommen.

HTTP Request Smuggling ​

Der Tab HTTP-Smuggling testet, wie ein Server mehrdeutige Content-Length- und Transfer-Encoding-Header verarbeitet, um Desynchronisierungen zwischen Frontend und Backend zu erkennen.

Hintergrund ​

Wenn ein Reverse Proxy und ein Backend-Server uneinig sind, wo eine Anfrage endet und die nächste beginnt, kann ein eingeschleustes Präfix aus Anfrage A der Anfrage B vorangestellt werden. Die Auswirkungen reichen von Cache Poisoning über die Umgehung der Authentifizierung bis zur Injektion beliebiger Anfragen.

Desync-Varianten ​

VarianteBeschreibung
CL.TEFrontend verwendet Content-Length; Backend verwendet Transfer-Encoding
TE.CLFrontend verwendet Transfer-Encoding; Backend verwendet Content-Length
TE.TEBeide verwenden Transfer-Encoding, reagieren aber unterschiedlich auf einen verschleierten Header

Eine Smuggling-Testanfrage ausführen ​

  1. Wähle den Zielendpunkt im Tab HTTP-Smuggling.
  2. Wähle die zu testende Desync-Variante.
  3. Klicke auf Smuggling-Test starten. Das Tool sendet die präparierte Anfrage und misst die Antwort.
  4. Ein Timeout oder eine unerwartete Antwort auf die zweite Anfrage der Sequenz deutet auf eine mögliche Desynchronisierung hin.
  5. Bestätige das Ergebnis manuell, bevor du einen Befund erstellst. Fehlalarme entstehen, wenn Netzwerkbedingungen einen Timeout verursachen, der nicht mit der Testanfrage zusammenhängt.

Proprietäre Software. Alle Rechte vorbehalten.