Iniezione

Iniezione

Trasforma una casella di ricerca in una lettura dell'intero database.

Cos’è Iniezione?

L'input non attendibile viene concatenato in una query che un interprete poi analizza, quindi l'input smette di essere un valore e diventa parte dell'istruzione. Incrementerai un endpoint di ricerca del catalogo in tre mosse: una singola virgoletta solleva un errore SQL non elaborato che restituisce la query, una condizione sempre vera rimuove il filtro pubblicato e UNION SELECT raggiunge un'altra tabella per le email dell'account, gli hash bcrypt e i ruoli. La correzione è un parametro associato, quindi il database compila prima l'istruzione. Anche la restituzione di un errore SQL non elaborato fornisce la mappa a un utente malintenzionato.

Cosa imparerai in Iniezione

Iniezione — Fasi della formazione

  1. Un normale posto per l'acquirente

    Wexlar gestisce un mercato all'ingrosso e distribuisce account di acquirenti self-service a chiunque si iscriva. Bob ne prese uno, con un'identità usa e getta. Il suo posto è un semplice acquirente: sfoglia il catalogo, fai ordini, niente di privilegiato. Apre la console per sviluppatori per vedere cos'è l'account e cosa offre l'API.

  2. Una casella di ricerca

    Niente nell'account di Bob è privilegiato, quindi non ci sono funzioni di amministrazione a cui accedere. L'unico input che gli interessa è la ricerca nel catalogo: prende tutto ciò che digita ed esegue una corrispondenza del nome con il database dei prodotti.

  3. Una ricerca normale

    Bob inizia con una ricerca ordinaria per vedere il funzionamento dell'endpoint e apprenderne la forma. La ricerca accetta un parametro di query q e restituisce i prodotti il ​​cui nome corrisponde.

  4. Funziona come previsto

    La ricerca si comporta esattamente come previsto. Tre laptop pubblicati, solo i campi che un acquirente dovrebbe vedere.

  5. Aggiungi una virgoletta singola

    La sonda di iniezione più vecchia che esista: Bob aggiunge una singola virgoletta al termine di ricerca. Se il termine viene cercato come valore, la ricerca di un nome con virgolette semplicemente non restituisce nulla. Se viene concatenato in SQL, la virgoletta vagante interromperà la query.

  6. La domanda, aperta

    Un carattere in più ha causato l'arresto anomalo dell'endpoint e l'errore ha fornito a Bob la conferma che desiderava.

  7. Riscrivere il filtro

    Ora che Bob sa che il termine diventa parte della query, smette di romperlo e inizia a guidarlo. Crea un termine che chiude la stringa, aggiunge una condizione che è sempre vera e commenta il resto della query originale.

  8. L'intero tavolo

    Il filtro che limitava la ricerca ai prodotti pubblicati è sparito, e il responso lo dimostra.

  9. Raggiungi un altro tavolo

    Leggere ogni prodotto è negativo; leggere tabelle che la ricerca non avrebbe mai dovuto toccare è peggio. Bob utilizza UNION per aggiungere righe da una tabella diversa ai risultati, selezionando lo stesso numero di colonne restituite dalla query sul prodotto.

  10. L'archivio credenziali, in un risultato di ricerca

    Le righe restituite non sono affatto prodotti.

Copertura dei framework di sicurezza

OWASP API Top 10

  • API8:2019 Injection

CWE

  • CWE-74 Improper Neutralization of Special Elements in Output ('Injection')

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security