<summary><strong>Impara l'hacking su AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
Se sei interessato alla **carriera dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza polacca scritta e parlata_).
> In questa metodologia supponiamo che tu stia per attaccare un dominio (o sottodominio) e solo quello. Quindi, dovresti applicare questa metodologia a ciascun dominio, sottodominio o IP scoperto con un server web non determinato all'interno del perimetro.
* [ ] Inizia **identificando** le **tecnologie** utilizzate dal server web. Cerca **trucchi** da tenere a mente durante il resto del test se riesci a identificare con successo la tecnologia.
* [ ] Inizia a **spiderizzare** la pagina web: È il momento di **trovare** tutti i possibili **file, cartelle** e **parametri in uso**. Controlla anche per **trovare speciali**.
* [ ]**Forza bruta dei parametri**: Cerca di **trovare parametri nascosti**.
* [ ] Una volta che hai **identificato** tutti i possibili **punti di accesso** che accettano **input utente**, controlla tutti i tipi di **vulnerabilità** ad esse correlate.
Controlla se ci sono **vulnerabilità conosciute** per la versione del server in esecuzione.\
Gli **intestazioni HTTP e i cookie della risposta** potrebbero essere molto utili per **identificare** le **tecnologie** e/o la **versione** in uso. La scansione **Nmap** può identificare la versione del server, ma potrebbero essere utili anche gli strumenti [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)o [**https://builtwith.com/**](https://builtwith.com)**:**
Se l'applicazione web sta utilizzando una **tecnologia/piattaforma nota** o **qualsiasi altra**, non dimenticare di **cercare su Internet** nuovi trucchi (e fammelo sapere!).
Se il **codice sorgente** dell'applicazione è disponibile su **github**, oltre a eseguire un **test White box** dell'applicazione, ci sono **alcune informazioni** che potrebbero essere **utili** per il **test Black-Box** attuale:
* Ci sono informazioni **interessanti su github** (risolte e non risolte) **problemi**? O nella **cronologia dei commit** (forse una **password inserita in un vecchio commit**)?
- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** per problemi di sicurezza. (GUI)\
> A questo punto dovresti già avere alcune informazioni sul server web utilizzato dal cliente (se sono stati forniti dati) e alcuni trucchi da tenere a mente durante il test. Se sei fortunato, potresti aver anche trovato un CMS e eseguito una scansione.
I server web possono **comportarsi in modo imprevisto** quando vengono inviati loro dati strani. Ciò potrebbe aprire **vulnerabilità** o **rivelare informazioni sensibili**.
* **Caricare file** tramite WebDav al **resto delle cartelle trovate** all'interno della pagina web. Potresti avere autorizzazioni per caricare file in altre cartelle.
Utilizza [**testssl.sh**](https://github.com/drwetter/testssl.sh) per controllare le **vulnerabilità** (nei programmi di Bug Bounty probabilmente queste vulnerabilità non saranno accettate) e utilizza [**a2sv**](https://github.com/hahwul/a2sv) per ricontrollare le vulnerabilità:
Lancia qualche tipo di **spider** all'interno del web. L'obiettivo dello spider è **trovare il maggior numero possibile di percorsi** dall'applicazione testata. Pertanto, il crawling web e le fonti esterne dovrebbero essere utilizzati per trovare il maggior numero possibile di percorsi validi.
* [**meg**](https://github.com/tomnomnom/meg) (go): Questo strumento non è uno spider ma può essere utile. Puoi semplicemente indicare un file con host e un file con percorsi e meg recupererà ogni percorso su ogni host e salverà la risposta.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider HTML con capacità di rendering JS. Tuttavia, sembra non essere mantenuto, la versione precompilata è vecchia e il codice attuale non si compila.
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Questo script troverà URL con parametri e li elencherà.
* [**galer**](https://github.com/dwisiswant0/galer) (go): Spider HTML con capacità di rendering JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, con capacità di bellezza JS in grado di cercare nuovi percorsi nei file JS. Potrebbe valere la pena dare un'occhiata anche a [JSScanner](https://github.com/dark-warlord14/JSScanner), che è un wrapper di LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Per estrarre endpoint sia dalla sorgente HTML che dai file javascript incorporati. Utile per cacciatori di bug, red teamers, ninja della sicurezza informatica.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Uno script python 2.7 che utilizza Tornado e JSBeautifier per analizzare URL relativi dai file JavaScript. Utile per scoprire facilmente le richieste AJAX. Sembra non essere mantenuto.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Dato un file (HTML) estrarrà gli URL da esso utilizzando una nifty espressione regolare per trovare ed estrarre gli URL relativi da file brutti (minify).
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, diversi strumenti): Raccogli informazioni interessanti dai file JS utilizzando diversi strumenti.
* [**subjs**](https://github.com/lc/subjs) (go): Trova file JS.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Carica una pagina in un browser headless e stampa tutti gli URL caricati per caricare la pagina.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Strumento di scoperta del contenuto che combina diverse opzioni degli strumenti precedenti.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Scopri i collegamenti dalla macchina del wayback (scaricando anche le risposte nel wayback e cercando altri collegamenti).
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawla (anche compilando moduli) e trova anche informazioni sensibili utilizzando espressioni regolari specifiche.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite è un avanzato Crawler/Spider GUI multi-feature 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 un elenco di parole personalizzato per fuzzing e enumerazione.
Inizia a **forzare la ricerca** dalla cartella radice e assicurati di forzare la ricerca su **tutte** le **directory trovate** utilizzando **questo metodo** e tutte le directory **scoperte** dal **Spidering** (puoi fare questa forza bruta in modo **ricorsivo** e aggiungere all'inizio della wordlist utilizzata i nomi delle directory trovate).\
* **Dirb** / **Dirbuster** - Incluso in Kali, **vecchio** (e **lento**) ma funzionale. Consente certificati auto-firmati e ricerca ricorsiva. Troppo lento rispetto alle altre opzioni.
* [**uro**](https://github.com/s0md3v/uro) (python): Questo non è uno spider ma uno strumento che, dato l'elenco degli URL trovati, eliminerà gli URL "duplicati".
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Estensione di Burp per creare un elenco di directory dalla cronologia di burp di diverse pagine
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Rimuove gli 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.
* [**Verifica dei link rotti**](https://github.com/stevenvachon/broken-link-checker): Trova i link rotti all'interno degli HTML che potrebbero essere vulnerabili agli attacchi di takeover
* **Backup dei file**: Una volta trovati tutti i file, cerca i backup di tutti i file eseguibili ("_.php_", "_.aspx_"...). Le variazioni comuni per nominare un backup sono: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp e file.old._ Puoi anche utilizzare lo strumento [**bfac**](https://github.com/mazen160/bfac) **o** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Scopri nuovi parametri**: Puoi utilizzare strumenti come [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **e** [**Param Miner**](https://github.com/PortSwigger/param-miner) **per scoprire parametri nascosti. Se possibile, potresti provare a cercare** parametri nascosti in ogni file web eseguibile.
* _Tutti i wordlist predefiniti di Arjun:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* Se stai giocando a **CTF**, un "trucco" comune è **nascondere informazioni** nei commenti alla **destra** della **pagina** (usando **centinaia** di **spazi** in modo che i dati non siano visibili se apri il codice sorgente con il browser). Un'altra possibilità è utilizzare **diverse nuove righe** e **nascondere informazioni** in un commento in fondo alla pagina web.
* **Chiavi API**: Se trovi **qualche chiave API**, c'è una guida che indica come utilizzare le chiavi API di piattaforme diverse: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Chiavi API Google: Se trovi una chiave API che assomiglia a **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik puoi utilizzare il progetto [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) per verificare a quali API la chiave può accedere.
* **Bucket S3**: Durante lo spidering, controlla se qualche **sottodominio** o qualche **link** è collegato a un **bucket S3**. In tal caso, [**controlla** i **permessi** del bucket](buckets/).
* Se trovi **endpoint API** dovresti [testarli anche](web-api-pentesting.md). Questi non sono file, ma probabilmente "sembreranno" tali.
* **File JS**: Nella sezione di spidering sono stati menzionati diversi strumenti che possono estrarre percorsi dai file JS. Inoltre, sarebbe interessante **monitorare ogni file JS trovato**, poiché in alcune occasioni, una modifica potrebbe indicare l'introduzione di una potenziale vulnerabilità nel codice. Potresti utilizzare ad esempio [**JSMon**](https://github.com/robre/jsmon)**.**
* Dovresti anche controllare i file JS scoperti con [**RetireJS**](https://github.com/retirejs/retire.js/) o [**JSHole**](https://github.com/callforpapers-source/jshole) per verificare se sono vulnerabili.
* In diverse occasioni sarà necessario **comprendere le espressioni regolari** utilizzate, questo sarà utile: [https://regex101.com/](https://regex101.com)
* Potresti anche **monitorare i file in cui sono stati rilevati moduli**, poiché una modifica nei parametri o l'aspetto di un nuovo modulo potrebbe indicare una potenziale nuova funzionalità vulnerabile.
Se una pagina **risponde** con quel **codice**, probabilmente si tratta di 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 il server in esecuzione che richiede l'autenticazione è **Windows** o trovi un login che chiede le tue **credenziali** (e chiede il **nome del dominio**), puoi provocare una **divulgazione di informazioni**.\
**Invia** l'**intestazione**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` e a causa del funzionamento dell'autenticazione **NTLM**, il server risponderà con informazioni interne (versione di IIS, versione di Windows...) all'interno dell'intestazione "WWW-Authenticate".\
Puoi **automatizzare** questo utilizzando il **plugin nmap** "_http-ntlm-info.nse_".
**Reindirizzamento HTTP (CTF)**
È possibile **inserire contenuti** all'interno di un **reindirizzamento**. Questo contenuto **non verrà mostrato all'utente** (poiché il browser eseguirà il reindirizzamento), ma potrebbe essere **nascosto** al suo interno.
Ora che è stata eseguita un'enumerazione completa dell'applicazione web, è il momento di verificare molte possibili vulnerabilità. Puoi trovare la checklist qui:
Puoi utilizzare strumenti come [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) per monitorare le pagine per eventuali modifiche che potrebbero introdurre vulnerabilità.
Se sei interessato a una **carriera nell'hacking** e a violare ciò che sembra inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.