2016-10-09 2 views
0

Ich habe den folgenden Code in einer Datei mit dem Namen vulnerable.c:Exploit System() -Aufruf in C

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main() { 
    gid_t egid = getegid(); 
    setregid(egid, egid); 
    system("echo testing"); 

    return 0; 
} 

Hier sind die Berechtigungen für die gefährdete ausführbaren:

-rwxr-sr-x 1 test cool 8192 Sep 28 2016 vulnerable

In meinem Home-Verzeichnis habe ich ein neues Verzeichnis namens "echotest" erstellt und eine echo.c-Datei eingefügt und kompiliert. Die Datei echo.c druckt nur "Exploited !!" aus. Ich änderte auch meine Umgebungsvariable PATH, um $ HOME/echotest einzuschließen.

Jetzt, wenn ich verwundbar laufen sollte es "Exploited!" aber es ist nicht. Was fehlt mir hier?

Ich habe einen ähnlichen Test mit "Katze" und es funktioniert, aber kein Glück mit Echo. Jede Hilfe wäre willkommen.

Dank

Antwort

1

Das Problem ist, dass echo oft eine eingebaute Schale ist. Wenn Sie es als ausnutzbar möchten, können Sie den anfälligen Code auf diese ändern:

int main() { 
    gid_t egid = getegid(); 
    setregid(egid, egid); 
    system("env echo testing"); 

    return 0; 
} 

Weitere Informationen hierzu finden Sie unter: How do I prevent bash to use a builtin command?

+0

Dank !! Das hilft!! – ssd20072