Injectie

Injectie

Verander een zoekvak in een leesfunctie van de hele database.

Wat is Injectie?

Niet-vertrouwde invoer wordt samengevoegd tot een query die een tolk vervolgens parseert, zodat de invoer niet langer een waarde is en onderdeel wordt van de instructie. U escaleert een cataloguszoekeindpunt in drie stappen: een enkel aanhalingsteken genereert een onbewerkte SQL-fout die de query terugstuurt, een altijd-waar-voorwaarde verwijdert het gepubliceerde filter, en UNION SELECT bereikt een andere tabel voor account-e-mails, bcrypt-hashes en rollen. De fix is ​​een gebonden parameter, dus de database compileert eerst de instructie. Het retourneren van een onbewerkte SQL-fout geeft een aanvaller ook de kaart.

Wat je leert in Injectie

Injectie — Trainingsstappen

  1. Een gewone kopersstoel

    Wexlar beheert een groothandelsmarktplaats en deelt zelfbedieningskopersaccounts uit aan iedereen die zich aanmeldt. Bob nam er een, met een wegwerpidentiteit. Zijn stoel is een eenvoudige koper: blader door de catalogus, plaats bestellingen, niets bevoorrecht. Hij opent de ontwikkelaarsconsole om te zien wat het account is en wat de API biedt.

  2. Eén zoekvak

    Niets in Bob's account is bevoorrecht, dus er zijn geen beheerdersfuncties te bereiken. De enige input die hem interesseert is het zoeken in de catalogus: het neemt alles wat hij typt en voert een naammatch uit met de productendatabase.

  3. Een normale zoektocht

    Bob begint met een gewone zoektocht om het eindpunt te zien werken en de vorm ervan te leren kennen. De zoekopdracht gebruikt een q -queryparameter en retourneert de producten waarvan de naam overeenkomt.

  4. Werken zoals bedoeld

    De zoekopdracht gedraagt zich precies zoals verwacht. Drie gepubliceerde laptops, alleen de velden die een koper zou moeten zien.

  5. Voeg een enkel citaat toe

    De oudste injectiesonde die er is: Bob voegt een enkel aanhalingsteken toe aan zijn zoekterm. Als er naar de term als waarde wordt gezocht, levert een zoekopdracht naar een naam met een aanhalingstekens eenvoudigweg niets op. Als het wordt samengevoegd in SQL, zal het verdwaalde citaat de query verbreken.

  6. De vraag, opengebroken

    Eén extra personage crashte het eindpunt en de fout gaf Bob de bevestiging die hij wilde.

  7. Herschrijf het filter

    Nu Bob weet dat de term onderdeel wordt van de vraag, stopt hij met het breken ervan en begint hij te sturen. Hij bedenkt een term die de string afsluit, voegt een voorwaarde toe die altijd waar is, en geeft commentaar op de rest van de oorspronkelijke zoekopdracht.

  8. De hele tafel

    Het filter dat de zoekopdracht beperkte tot gepubliceerde producten is verdwenen, en de reactie bewijst dit.

  9. Bereik een andere tafel

    Elk product lezen is slecht; het lezen van tafels waarvan de zoekopdracht nooit bedoeld was om aan te raken, is erger. Bob gebruikt een UNION om rijen uit een andere tabel aan de resultaten toe te voegen, waarbij hij hetzelfde aantal kolommen selecteert als de productquery retourneert.

  10. Het referentiearchief in een zoekresultaat

    De rijen die terugkwamen zijn helemaal geen producten.

Dekking van beveiligingsframeworks

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