Hallo, ich habe mir heute mal wieder etwas Zeit genommen einen Blick in den XNU Kernel zu werfen und analysierte mal /bsd/sys weil dort ja die spawn.h datei liegt in der _POSIX_SPAWN_DISABLE_ASLR auf 0x100 defined.
Naja jedenfalls habe ich in der imgact.h den folgenden Code gefunden:
In proc.h:
Noch mal alles hier: [Only registered and activated users can see links. Click Here To Register...]
Naja ich habe zwar noch anderes Zeug aber ich würde das erstmal nicht rausgeben. Ich dachte mit, dass wen das hier v.l. ausnutzbar ist, ich mit fuzzing und Crash Analyze den PC/IP Register unter Kontrolle bekommen könnte um den kompletten MobileSafari Prozess unter Kontrolle zu bekommen und Code zu laden. :cool:
Ich dachte erstmal, dass das nicht ausnutzbar ist, aber da man ja mit POSIX_SPAWN binaries starten kann, dachte ich mir v.l. kann man das mit diesen #define manipulieren.
Wie z.b. mit der im iOS 6.1.3 basierenden XNU Kernel mit spawn.h:
Danke für eure Hilfe :handsdown:
Naja jedenfalls habe ich in der imgact.h den folgenden Code gefunden:
PHP Code:
#define IMGPF_DISABLE_ASLR 0x00000020 /* disable ASLR */
#define IMGPF_ALLOW_DATA_EXEC 0x00000040 /* forcibly disallow data execution */
#define IMGPF_SPAWN 0x00000010 /* spawn (without setexec) */
PHP Code:
#define P_DISABLE_ASLR 0x00001000 /* Disable address space layout randomization */
Naja ich habe zwar noch anderes Zeug aber ich würde das erstmal nicht rausgeben. Ich dachte mit, dass wen das hier v.l. ausnutzbar ist, ich mit fuzzing und Crash Analyze den PC/IP Register unter Kontrolle bekommen könnte um den kompletten MobileSafari Prozess unter Kontrolle zu bekommen und Code zu laden. :cool:
Ich dachte erstmal, dass das nicht ausnutzbar ist, aber da man ja mit POSIX_SPAWN binaries starten kann, dachte ich mir v.l. kann man das mit diesen #define manipulieren.
Wie z.b. mit der im iOS 6.1.3 basierenden XNU Kernel mit spawn.h:
PHP Code:
#include <spawn.h>
#define POSIX_SPAWN_SETEXEC 0x0040
int main()
{
posix_spawnattr_t attr;
posix_spawnattr_init(&attr);
posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETEXEC);
posix_spawn(NULL, "./test", NULL, &attr, NULL, NULL);
}