Я хочу показать конкретный пример, насколько мощным является использование переполнения буфера.Настройка прав SUID/SGID для исполняемого файла
для того чтобы достигнуть этой цели я подготовил эту простую программу C, которая называется "бо":
#include <stdio.h>
#include <string.h>
void function(char* input) {
char buffer[128];
strcpy(buffer, input);
printf("Your input is: %s\n", buffer);
}
void main(int argc, char **argv) {
function(argv[1]);
}
, что я скомпилированный с опциями: -fno-стек-протектором и execstack.
Все работает отлично, и я могу использовать мой шеллкод, который открывает новый bash.
В моей системе (Ubuntu MATE 15.10 32bit) у меня есть 2 пользователя: «пользователь» (группа: пользователь) и «admin» (группа: admin), оба имеют привилегии sudo.
Что я хочу сделать, так это разрешить «пользователю» выполнять «bo» с привилегиями «admin», чтобы при переполнении буфера и шеллкодеке у меня была оболочка, которая работает с привилегиями «admin» (и из этой оболочки, если я запускаю команды «id» или «whoami», я хочу показать, что теперь мы «admin»).
Я видел, что мне нужно chmod SUID/SGID привилегии для «bo». Я пробовал по-разному, но когда работает шеллкод, у меня всегда есть оболочка, выделенная из «user».