2016-04-26 8 views
1

Я хочу показать конкретный пример, насколько мощным является использование переполнения буфера.Настройка прав 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».

ответ

0

Наконец-то я понял, что у меня была не только проблема разрешения, но и мой шеллкод не порождал корневую оболочку.

Кстати, благодаря предложениям Cwissy, чтобы в полной мере воспользоваться этой уязвимостью я должен был установить некоторые привилегии на моем бо файле:

sudo -i 
chown 0:0 bo 
chmod 4755 bo 
exit 

Затем с правой шеллкода (теперь я использовать один из https://www.exploit-db.com/docs/21013.pdf) Я могу создать корневую оболочку.

Это немного отличается от моей первоначальной идеи (порождают оболочку с привилегиями администратора), но это хороший пример, чтобы показать тоже.

2

sudo дает пользователю права пользователя root root и запускает любой процесс с правами администратора. процесс su используется для switch user

Чтобы гарантировать, что процесс выполняется с правами администратора пользователя. бит binary должен быть chown admin:admin и chmod u+s как admin. , например. если бинарный файл в настоящее время выглядит следующим образом:

ls -l bo 
drwxrwxr-x user user <size> bo 

если вы станете корнем, а затем стал администратор затем изменить разрешение, которые вы должны получить:

sudo -i # become root 
chown admin: bo # change ownership 
su - admin # become admin 
chmod u+s bo # set sticky bit 

затем <ctrl-d> дважды, чтобы вернуться к тому, user и вы должны см:

ls -l bo 
drwSrwxr-x admin admin bo 

конечно, вы можете избавиться от всех Судо и су нонсенс путем компиляции кода как admin, а затем chmod'ing (также еще как пользователь admin), прежде чем стать пользователем user.

 Смежные вопросы

  • Нет связанных вопросов^_^