ld.so privesc exploit example
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Na seção a seguir, você pode encontrar o código dos arquivos que vamos usar para preparar o ambiente
Crie esses arquivos na sua máquina na mesma pasta
Compile a biblioteca: gcc -shared -o libcustom.so -fPIC libcustom.c
Copie libcustom.so
para /usr/lib
: sudo cp libcustom.so /usr/lib
(privilégios de root)
Compile o executável: gcc sharedvuln.c -o sharedvuln -lcustom
Verifique se libcustom.so está sendo carregado de /usr/lib e se você pode executar o binário.
Neste cenário, vamos supor que alguém criou uma entrada vulnerável dentro de um arquivo em /etc/ld.so.conf/:
A pasta vulnerável é /home/ubuntu/lib (onde temos acesso gravável). Baixe e compile o seguinte código dentro desse caminho:
Agora que criamos a biblioteca maliciosa libcustom dentro do caminho mal configurado, precisamos esperar por um reinício ou que o usuário root execute ldconfig
(caso você possa executar este binário como sudo ou ele tenha o suid bit, você poderá executá-lo você mesmo).
Uma vez que isso tenha acontecido, verifique novamente de onde o executável sharevuln
está carregando a biblioteca libcustom.so
:
Como você pode ver, está carregando a partir de /home/ubuntu/lib
e se qualquer usuário executá-lo, um shell será executado:
Note que neste exemplo não escalamos privilégios, mas modificando os comandos executados e esperando que o root ou outro usuário privilegiado execute o binário vulnerável conseguiremos escalar privilégios.
No exemplo anterior, simulamos uma má configuração onde um administrador definiu uma pasta não privilegiada dentro de um arquivo de configuração em /etc/ld.so.conf.d/
.
Mas existem outras má configurações que podem causar a mesma vulnerabilidade; se você tiver permissões de escrita em algum arquivo de configuração dentro de /etc/ld.so.conf.d
, na pasta /etc/ld.so.conf.d
ou no arquivo /etc/ld.so.conf
, você pode configurar a mesma vulnerabilidade e explorá-la.
Suponha que você tenha privilégios sudo sobre ldconfig
.
Você pode indicar ao ldconfig
onde carregar os arquivos de configuração, então podemos aproveitar isso para fazer o ldconfig
carregar pastas arbitrárias.
Então, vamos criar os arquivos e pastas necessários para carregar "/tmp":
Agora, como indicado na exploração anterior, crie a biblioteca maliciosa dentro de /tmp
.
E finalmente, vamos carregar o caminho e verificar de onde o binário está carregando a biblioteca:
Como você pode ver, tendo privilégios sudo sobre ldconfig
, você pode explorar a mesma vulnerabilidade.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)