Home › Arsenale › Web / API

Arsenale · Web & API

Tecniche su applicazioni web e API, dalla struttura del Web Application Hacker's Handbook e OWASP. Tutorial: SQLi · XSS · RCE/LFI/Upload · Exploitare i servizi.

Solo su lab (PortSwigger Academy, Juice Shop, DVWA) o programmi bug bounty in scope.

Mapping & recon dell'app

TecnicaCome funzionaTool / comando
Spidering/crawlingMappa automaticamente pagine e parametriBurp Spider · katana
Directory/file brute forceTrova contenuti nascosti con wordlistgobuster · feroxbuster
Recursive fuzzingFuzz ricorsivo delle directoryffuf -recursion
Virtual host discoveryTrova vhost sullo stesso IP via Host headerffuf -H Host
Parameter discoveryScopre parametri nascostiarjun · param-miner
Robots.txt / sitemap miningPath rivelati dai file di indicizzazionemanuale
JS endpoint extractionAPI/segreti dentro i file JavaScriptLinkFinder
Source map recoveryRicostruisci il sorgente da .mapunwebpack
Wayback URL miningEndpoint storici ancora attivigau · waybackurls
Tech fingerprintingIdentifica CMS/framework/serverwhatweb · wappalyzer
Banner/header analysisHeader rivelano versioni e configcurl -I
HTTP method enumerationTrova PUT/DELETE/TRACE abilitatinmap http-methods
WebDAV abusePUT abilitato → carichi shelldavtest · cadaver
CMS scanning (WordPress)Plugin/temi/utenti vulnerabiliwpscan
CMS scanning (Joomla/Drupal)Componenti vulnerabilijoomscan · droopescan
Git/backup exposure.git, .bak, .swp esposti sul webgit-dumper
Favicon/tech hashingIdentifica tech dal favicon hashshodan http.favicon
Error page fingerprintFramework dedotto dalle pagine d'erroremanuale

Attacchi all'autenticazione

TecnicaCome funzionaTool / comando
Credential brute forceProva molte password su un form di loginhydra http-post-form
Password sprayingUna password comune su molti utenti (no lockout)script/hydra
Credential stuffingRiusa credenziali da data breachliste combo
Username enumerationMessaggi/tempi diversi rivelano utenti validiBurp Intruder
Default credentialsadmin/admin e simili non cambiatiliste default
Verbose error abuseErrori di login troppo dettagliatimanuale
Password reset poisoningHost header manipola il link di resetBurp
Password reset token weakToken prevedibili/non scadentianalisi
Account takeover via email changeCambio email senza verificamanuale
"Remember me" abuseCookie persistente debole/prevedibileanalisi
2FA bypass (response manip.)Modifica risposta o salta lo step OTPBurp
OTP brute forceCodici a 4-6 cifre senza rate limitIntruder
2FA code reuse/leakCodice riutilizzabile o nella rispostamanuale
Auth logic bypassAccedi a step post-login saltando il primoforced browsing
SQLi login bypass' OR 1=1-- nel campo utentetutorial
Response manipulationCambi false→true nella rispostaBurp
Registration abuseRegistri utenti privilegiati/duplicatimanuale
SSO/SAML flawsAssertion manipolabili, signature wrappingSAML Raider

Sessione & token

TecnicaCome funzionaTool / comando
Session token predictionToken con pattern/sequenza indovinabileBurp Sequencer
Session fixationImposti tu il session id della vittimamanuale
Session hijackingRubi il cookie e ti impersoniXSS/sniffing
Cookie senza HttpOnlyJS può leggere il cookie (favorisce XSS→furto)analisi
Cookie senza SecureCookie inviato anche su HTTPanalisi
Cookie SameSite mancanteFavorisce CSRF cross-siteanalisi
Weak "logout"Il token resta valido dopo il logoutmanuale
JWT: alg=noneFirma rimossa, il server accetta comunquejwt_tool
JWT: HS256/RS256 confusionFirmi con la chiave pubblica come segreto HMACjwt_tool
JWT: weak secretCracki il segreto HMAC con wordlisthashcat -m 16500
JWT: kid injectionManipola il parametro kid (path/SQLi)jwt_tool
JWT: jku/x5u abusePunti la chiave a un tuo JWKSmanuale
JWT: exp non validatoToken scaduti ancora accettatimanuale
OAuth redirect_uri abuseRedirect a dominio attaccante → furto tokenmanuale
OAuth state mancanteCSRF sul flow OAuthmanuale
OAuth implicit token leakToken nell'URL/referermanuale

Controllo accessi (authorization)

TecnicaCome funzionaTool / comando
IDORCambi un id (?id=123→124) e accedi a dati altruiBurp
Horizontal privescAccedi alle risorse di un altro utente pari livellomanuale
Vertical privescAccedi a funzioni admin da utente normaleforced browsing
Forced browsingVai diretto a URL admin non linkatiwordlist
Parameter-based accessrole=user→role=adminBurp
Mass assignmentAggiungi campi (isAdmin) al body accettati dal backendBurp
Referer-based control bypassIl controllo si fida solo del Refererheader spoof
Method-based bypassCambi GET↔POST per aggirare i controlliBurp
URL case/encoding bypass/Admin, /admin%2f per aggirare i filtrimanuale
Mancata verifica ownershipModifichi risorse non tuemanuale

SQL Injection (varianti)

TecnicaCome funzionaTool / comando
Error-based SQLiEstrai dati dai messaggi d'errore del DBtutorial
UNION-based SQLiAggiungi righe con dati arbitrariUNION SELECT
Boolean blind SQLiVero/falso dalla differenza di rispostasqlmap
Time-based blind SQLiRitardo (SLEEP) come canale di datisqlmap
Out-of-band SQLiEsfiltra via DNS/HTTP verso il tuo serverOOB
Second-order SQLiPayload salvato ed eseguito dopo, altrovemanuale
WAF/filter bypass SQLiEncoding, commenti, case per aggirare i filtrisqlmap --tamper
Stacked queriesPiù statement in una query (;)manuale
SQLi → RCExp_cmdshell/INTO OUTFILE per eseguire comandimanuale
SQLi → file read/writeLOAD_FILE / INTO OUTFILEmanuale
Header/cookie SQLiIniezione fuori dai parametri URLBurp

Altre injection

TecnicaCome funzionaTool / comando
NoSQL injectionOperatori Mongo ($ne,$gt) bypassano loginmanuale
OS command injectionConcateni comandi shell nell'inputtutorial
Blind command injectionNessun output → usa sleep/DNS/out-of-bandmanuale
Argument injectionInietti flag/argomenti a un binariomanuale
LDAP injectionAlteri i filtri LDAP per bypass/enummanuale
XPath injectionManipoli query XPath su dati XMLmanuale
XXE (XML External Entity)Entità esterne leggono file/SSRFpayload XML
Blind XXE (OOB)Esfiltrazione via DTD esternaOOB
SSTI (template injection)Codice nel template server → RCEtplmap
CSTI (client-side template)Injection nei template Angular/Vuemanuale
CRLF injectionInietti header/HTTP splittingmanuale
Host header injectionManipoli il routing/reset via HostBurp
Email header injectionInietti CC/BCC nei form di contattomanuale
SMTP injectionComandi SMTP nei campi utentemanuale
Log injectionInietti nei log (poi log poisoning→RCE)manuale
Server-side JS injectioneval su input in Nodemanuale
ORM injectionBypass filtri via query dell'ORMmanuale
GraphQL injectionSQLi/NoSQL via resolvermanuale

Client-side & XSS

TecnicaCome funzionaTool / comando
Reflected XSSScript nell'URL riflesso nella rispostatutorial
Stored XSSScript salvato colpisce tutti i visitatorimanuale
DOM XSSJS lato client usa input non sicuroDevTools
Blind XSSEsegue in un pannello admin, ti notificaXSSHunter
Mutation XSS (mXSS)Il parser muta l'HTML in payload validomanuale
Filter/WAF bypass XSSsvg/onerror/case-mixing per aggirare i filtriPayloadsAllTheThings
XSS via file upload (SVG/HTML)File caricato eseguito nel browsermanuale
CSRFForzi la vittima a inviare una richiesta autenticataPoC HTML
CSRF token bypassToken mancante/riutilizzabile/prevedibileBurp
Clickjackingiframe invisibile inganna il clickPoC frame
Tabnabbingtarget=_blank senza noopener dirotta la tabmanuale
CORS misconfigOrigin riflesso permette furto dati cross-siteBurp
PostMessage abuseHandler che si fida di origini arbitrarieDevTools
Prototype pollutionInquini Object.prototype → gadget RCE/XSSmanuale
DOM clobberingElementi HTML sovrascrivono variabili JSmanuale
Open redirectRedirect verso dominio attaccantemanuale
Reverse tabnabbingLa pagina figlia cambia la parentmanuale
Web cache deceptionFai cachare pagine privatemanuale

SSRF, file & deserializzazione

TecnicaCome funzionaTool / comando
SSRFIl server fa richieste a URL che controlli tuBurp Collaborator
SSRF → cloud metadataLeggi 169.254.169.254 per credenziali cloudmanuale
Blind SSRFNessuna risposta → out-of-bandCollaborator
SSRF filter bypassRedirect, IP decimali, DNS rebindingmanuale
Path traversal../../etc/passwd per leggere filetutorial
LFIIncludi file locali arbitrarimanuale
LFI → RCE (log poisoning)Inietti PHP nei log, poi li includimanuale
LFI → RCE (/proc/self/environ)Includi env con payload nell'UAmanuale
RFIIncludi file remoto dal tuo servermanuale
PHP wrapper abusephp://filter, data://, phar://manuale
File upload → web shellCarichi ed esegui codice servermanuale
Upload filter bypassDoppia estensione, magic bytes, content-typeBurp
ZIP slipPath traversal in estrazione archivimanuale
Insecure deserialization (PHP)Oggetti serializzati malevoli → RCEphpggc
Java deserializationGadget chain in stream serializzatoysoserial
.NET / Python pickleDeserializzazione insicura → RCEysoserial.net
Node deserializationnode-serialize RCEmanuale

API, GraphQL & HTTP avanzato

TecnicaCome funzionaTool / comando
BOLA/BFLA (API IDOR)Object/function level authorization mancanteBurp
Excessive data exposureL'API restituisce più dati del necessarioanalisi
Rate limit mancanteBrute/scraping senza limitiIntruder
API key leakChiavi nei JS/repositorytrufflehog
GraphQL introspectionEstrai l'intero schemagraphql-voyager
GraphQL batching abuseMolte query in una → bypass rate limitmanuale
GraphQL field suggestion leakDeduci campi anche con introspection offclairvoyance
REST verb tamperingMetodi non previsti bypassano controlliBurp
HTTP request smugglingDisallineamento CL/TE tra proxy e serverBurp (Smuggler)
Web cache poisoningAvveleni la cache con header non-chiaveParam Miner
Host header attacksRouting/reset/SSRF via HostBurp
Race conditionRichieste parallele sfruttano finestre temporaliTurbo Intruder
Business logic flawAbuso di flussi previsti (prezzi, quantità negative)manuale
Parameter pollution (HPP)Parametri duplicati interpretati diversamenteBurp
WebSocket hijackingCSWSH: connessione WS cross-siteBurp
Verbose debug/misconfigStack trace, debug mode, endpoint di admin espostimanuale

Info disclosure & misconfig

TecnicaCome funzionaTool / comando
Directory listingElenco file espostomanuale
Backup/temp file.bak, ~, .old scaricabiliwordlist
Config file exposure.env, web.config, wp-config leggibilimanuale
Source code disclosureServer serve il .php come testomanuale
Stack trace / debugErrori rivelano path e versionimanuale
Default/admin pagesphpinfo, /server-status, consolemanuale
Sensitive data in JSSegreti/endpoint nel clientLinkFinder
Verbose headersX-Powered-By, versionicurl -I
Autenticazione mancante su endpointAPI interne raggiungibilimanuale
CORS troppo permissivo* con credenzialimanuale
Security headers assentiNo CSP/HSTS/X-Framesecurityheaders.com