Zap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 5: Zeile 5:
 
=Zap Brute Force=
 
=Zap Brute Force=
 
==Passwort liste laden==
 
==Passwort liste laden==
 +
Die Passwortliste enthaelt haeufig verwendete, schwache Passwoerter und dient als Payload-Quelle fuer den Angriff.
 
*wget https://www.xinux.de/downloads/bad-passwords
 
*wget https://www.xinux.de/downloads/bad-passwords
  
==ZAP==
+
==ZAP starten und Browser oeffnen==
 +
ZAP faengt Requests standardmaessig nicht ab (Break ist aus) - anders als bei Burp gibt es kein Interception-Umschalten. ueber den eingebauten Browser wird der Proxy automatisch gesetzt und das ZAP-Zertifikat ist bereits importiert.
 
*Manual Explore
 
*Manual Explore
 
**Launch Browser
 
**Launch Browser
:''ZAP faengt standardmaessig nicht ab (Break aus) - kein Interception-Umschalten noetig. Der Browser startet mit gesetztem Proxy und importiertem ZAP-Zertifikat.''
+
:''Es oeffnet sich ein Browser, dessen Verkehr komplett ueber ZAP laeuft.''
  
==Opfer==
+
==Opfer aufrufen==
 +
Im ZAP-Browser die Login-Seite des Opfers aufrufen.
 
*http://opfer.sec-labs.de/scripts/login-simple.php
 
*http://opfer.sec-labs.de/scripts/login-simple.php
 
**Login Simple
 
**Login Simple
  
==User eingeben==
+
==Testlogin absenden==
 +
Einmal mit einem beliebigen Test-Passwort einloggen, damit der POST-Request mit allen Parametern in ZAP auftaucht.
 
*User: xinux
 
*User: xinux
 
*Password: sux
 
*Password: sux
 +
:''Dieser Request dient als Vorlage - an ihm wird gleich die Payload-Position gesetzt.''
  
==ZAP==
+
==Request in den Fuzzer schicken==
 +
Der abgesendete Request landet unten im History-Tab. Dies entspricht Burps "HTTP history".
 
*History (unten)
 
*History (unten)
 
**POST-Paket mit Params auswaehlen
 
**POST-Paket mit Params auswaehlen
[[Datei:Zap-11.png]]
+
*Rechte Maustaste auf den Request
*Rechte Maustaste
 
 
**Attack
 
**Attack
 
***Fuzz...
 
***Fuzz...
 +
:''Der ZAP-Fuzzer ist das Gegenstueck zu Burps Intruder - in ZAP voll und ungedrosselt nutzbar.''
  
==Fuzzer==
+
==Payload-Position markieren==
===Payload-Position markieren===
+
Im Fuzzer-Fenster wird der Request angezeigt. Statt wie bei Burp alle automatischen Positionen zu loeschen, wird die Position direkt durch Markieren gesetzt.
;Im Request den Wert sux markieren
+
;Im Request-Text den Passwort-Wert sux mit der Maus markieren
;Add... druecken
+
;Rechts auf Add... klicken
:''Die Position wird durch Markieren gesetzt - kein "Clear" wie bei Burp noetig.''
+
:''Die markierte Stelle wird zur Fuzz-Position. Ein vorheriges "Clear" wie bei Burp ist nicht noetig.''
[[Datei:Zap-12.png]]
 
  
==Payloads==
+
==Payloads laden==
;Add...
+
Jetzt wird der markierten Position die Passwortliste als Payload-Quelle zugewiesen.
;Type: File -> bad-passwords laden
+
;Im Payloads-Dialog auf Add... klicken
:''Alternativ Type: Strings (= Burps "Simple list"), Eintraege untereinander einfuegen.''
+
;Type: File waehlen und die Datei bad-passwords laden
[[Datei:Zap-13.png]]
+
:''Alternativ Type: Strings - das entspricht Burps "Simple list", bei der die Eintraege direkt untereinander eingefuegt werden.''
  
 
==Erfolg erkennen==
 
==Erfolg erkennen==
 +
ZAP hat keinen fertigen "Grep-Match"-Haken wie Burp. Der erfolgreiche Login wird stattdessen ueber die Antwortgroesse erkannt: Eine erfolgreiche Anmeldung liefert eine andere Seite als eine fehlgeschlagene, also weicht die Laenge der Antwort ab.
 
*Fuzzer starten
 
*Fuzzer starten
*In der Ergebnisliste nach Spalte '''Size Resp. Body''' sortieren
+
*In der Ergebnisliste nach der Spalte '''Size Resp. Body''' sortieren
:''Der erfolgreiche Login faellt durch abweichende Laenge sofort auf (entspricht Burps "Length").''
+
:''Der Treffer faellt durch die abweichende Laenge sofort auf. Diese Spalte entspricht Burps "Length".''
[[Datei:Zap-14.png]]
 
  
==Start==
+
==Angriff starten==
*Start Fuzzer
+
*Start Fuzzer druecken
[[Datei:Zap-15.png]]
+
:''ZAP arbeitet die komplette Passwortliste ab. Die Content-Length muss nicht angepasst werden - ZAP korrigiert sie beim Fuzzen automatisch. Die Anzahl paralleler Threads laesst sich im Fuzzer unter Options einstellen.''
  
==Optional: auf String "Hallo" flaggen==
+
==Optional: automatisch auf einen Text in der Antwort pruefen==
;Fuzzer HTTP Processor-Script (Skripting-Add-on)
+
Wer den Treffer nicht ueber die Groesse, sondern ueber einen bestimmten Text in der erfolgreichen Antwort (z.B. das Wort Hallo) erkennen will, kann ein kleines Processor-Script einhaengen. Es benoetigt das Skripting-Add-on, das in ZAP kostenlos enthalten ist.
 +
;Fuzzer HTTP Processor-Script
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
function processResult(utils, fuzzResult) {
 
function processResult(utils, fuzzResult) {
Zeile 62: Zeile 68:
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
:''Im Fuzzer unter Message Processors einhaengen; Treffer erscheint als eigene Spalte.''
+
:''Das Script im Fuzzer unter Message Processors einhaengen. Bei einem Treffer erscheint in einer eigenen Spalte der Wert JA.''
 
 
  
 
*[[zap allgemein]]
 
*[[zap allgemein]]

Version vom 12. September 2026, 09:10 Uhr

Zap Grundlagen

Zap Installation

Zap Brute Force

Passwort liste laden

Die Passwortliste enthaelt haeufig verwendete, schwache Passwoerter und dient als Payload-Quelle fuer den Angriff.

ZAP starten und Browser oeffnen

ZAP faengt Requests standardmaessig nicht ab (Break ist aus) - anders als bei Burp gibt es kein Interception-Umschalten. ueber den eingebauten Browser wird der Proxy automatisch gesetzt und das ZAP-Zertifikat ist bereits importiert.

  • Manual Explore
    • Launch Browser
Es oeffnet sich ein Browser, dessen Verkehr komplett ueber ZAP laeuft.

Opfer aufrufen

Im ZAP-Browser die Login-Seite des Opfers aufrufen.

Testlogin absenden

Einmal mit einem beliebigen Test-Passwort einloggen, damit der POST-Request mit allen Parametern in ZAP auftaucht.

  • User: xinux
  • Password: sux
Dieser Request dient als Vorlage - an ihm wird gleich die Payload-Position gesetzt.

Request in den Fuzzer schicken

Der abgesendete Request landet unten im History-Tab. Dies entspricht Burps "HTTP history".

  • History (unten)
    • POST-Paket mit Params auswaehlen
  • Rechte Maustaste auf den Request
    • Attack
      • Fuzz...
Der ZAP-Fuzzer ist das Gegenstueck zu Burps Intruder - in ZAP voll und ungedrosselt nutzbar.

Payload-Position markieren

Im Fuzzer-Fenster wird der Request angezeigt. Statt wie bei Burp alle automatischen Positionen zu loeschen, wird die Position direkt durch Markieren gesetzt.

Im Request-Text den Passwort-Wert sux mit der Maus markieren
Rechts auf Add... klicken
Die markierte Stelle wird zur Fuzz-Position. Ein vorheriges "Clear" wie bei Burp ist nicht noetig.

Payloads laden

Jetzt wird der markierten Position die Passwortliste als Payload-Quelle zugewiesen.

Im Payloads-Dialog auf Add... klicken
Type
File waehlen und die Datei bad-passwords laden
Alternativ Type: Strings - das entspricht Burps "Simple list", bei der die Eintraege direkt untereinander eingefuegt werden.

Erfolg erkennen

ZAP hat keinen fertigen "Grep-Match"-Haken wie Burp. Der erfolgreiche Login wird stattdessen ueber die Antwortgroesse erkannt: Eine erfolgreiche Anmeldung liefert eine andere Seite als eine fehlgeschlagene, also weicht die Laenge der Antwort ab.

  • Fuzzer starten
  • In der Ergebnisliste nach der Spalte Size Resp. Body sortieren
Der Treffer faellt durch die abweichende Laenge sofort auf. Diese Spalte entspricht Burps "Length".

Angriff starten

  • Start Fuzzer druecken
ZAP arbeitet die komplette Passwortliste ab. Die Content-Length muss nicht angepasst werden - ZAP korrigiert sie beim Fuzzen automatisch. Die Anzahl paralleler Threads laesst sich im Fuzzer unter Options einstellen.

Optional: automatisch auf einen Text in der Antwort pruefen

Wer den Treffer nicht ueber die Groesse, sondern ueber einen bestimmten Text in der erfolgreichen Antwort (z.B. das Wort Hallo) erkennen will, kann ein kleines Processor-Script einhaengen. Es benoetigt das Skripting-Add-on, das in ZAP kostenlos enthalten ist.

Fuzzer HTTP Processor-Script
function processResult(utils, fuzzResult) {
    var body = fuzzResult.getHttpMessage().getResponseBody().toString();
    if (body.indexOf("Hallo") > -1) {
        fuzzResult.addCustomState("Treffer", "JA");
    }
    return true;
}
Das Script im Fuzzer unter Message Processors einhaengen. Bei einem Treffer erscheint in einer eigenen Spalte der Wert JA.