Hva er SQL injection?
Les våre SQL-injeksjon eksempler for å forstå hvordan SQL angrep fungerer
Kort sagt
SQL-injeksjon er et slags cyperangrep der hackeren bruker ondsinnede koder for å manipulere en nettsides database og få tilgang til sensitiv informasjon.
Structured Query Language, bedre kjent som SQL injection er et sikkerhetsproblem på nettet som muliggjør angrep. Et SQL angrep tillater at en hacker får se dine data som de ikke er kjent med eller er i stand til å få tak i. Disse dataene er ofte sensitive, da det kan være data som tilhører brukere eller data som programmet kan få tilgang til.
Hva vil hackeren med denne informasjonen? Vanligvis vil hackeren slette dataene fra nettapplikasjonen eller endre det helt for å forårsake problemer og endre adferd.
I noen tilfeller vil angriperen utføre et SQL injection angrep på nettapplikasjonens server for å kompromittere dens funksjon.
Hva er resultatet av et SQL-injeksjonsangrep?
Mange virksomheter blir skadet av slike SQL-angrep, til og med større selskaper. Dersom din bedrift blir et offer for et SQL injeksjonsangrep, vil det mest sannsynlig få en negativ innvirkning på din virksomhet. Ditt selskap vil blant annet tape brukeres private informasjon, og dette er forferdelig for ditt selskaps rykte. Det er også ulovlig å miste denne type informasjon på grunn av databeskyttelsesforordningen. Derfor er det viktig å ta forebyggende tiltak for å unngå et slikt angrep.
SQL injection example på angrep
Et eksempel på et angrep kan lyde noe slik. La oss si at du har en e-handel nettside. Du har en kategori dedikert til å selge joggesko. En bruker er interessert i å kjøpe joggesko, så de besøker den kategorien på din nettside. Når brukeren klikker på kategorien, vil nettleseren be om:
https://fake-website.com/produkter?kategori=Joggesko.
Din nettapplikasjon vil legge inn en SQL forespørsel for å motta informasjon om relevant informasjon om den kategorien fra en database.
SQL-forespørselen vil mest sannsynlig lyde slik:
Velg * FRA produkter HVOR kategori = ‘Joggesko’ OG utgitt = 1
I dette øyeblikket ber SQL-forespørselen databasen om å returnere detaljer fra produktkategorien du har, spesielt joggesko -kategorien.
Utgitt (Released) = 1 er en begrensning. 1-tallet er der for å skjule produkter som ennå ikke er lansert. Du har for eksempel andre varianter av joggeskoene som du ønsker å lansere senere. 1 vil sørge for at de ikke er tilgjengelige for publikum.
Din nettapplikasjon har kanskje ikke en måte å beskytte seg selv mot et SQL injection attack. Derfor kan en angriper, dessverre, angripe på denne måten:
https://fake-website.com/produkter?kategori=Joggesko’–
Dette vil resultere i en SQL forespørsel som vil se slik ut:
Velg * FRA produkter HVOR kategori = ‘Joggesko’–‘ OG utgitt = 1
Sekvensen av to doble streker er en vanlig indikator på at forespørselen er en kommentar. Og dersom systemet tror forespørselen er en kommentar, kan det ikke vite om det er et angrep.
Deretter vil de to doble strekene fjerne resten av forespørselen (OG utgitt = 1), som til gjengjeld vil gi ut informasjon om alle produktene i kategorien din. Selv de som ikke har blitt offentliggjort ennå.
Angriperen kan så gjøre et SQL angrep for å se alt annet du selger på din nettside; alle dine varer i andre kategorier.
Angriperen vil angripe på denne måten:
https://fake-website.com/products?catgory=Sneakers’+OR+1=1–
Dette vil resultere i en SQL forespørsel som ser slik ut:
Velg * FRA produkter HVOR kategori = ‘Joggesko’ ELLER 1=1–’ OG utgitt = 1
Hvis du sender denne forespørselen, returneres informasjon om alle elementene på nettstedet ditt. Det finnes mange andre måter angriperen kan utføre et SQL injeksjonsinngrep på. La oss se på dem:
- Boolean
Angriperen vil sende en SQL forespørsel for å få tilbake et resultat fra databasen raskt. Ved å bruke Boolean metoden, kan angriperen bestemme om resultatet som kommer tilbake er ekte eller falskt.
- Tidsforsinkelse
Angriperen vil sende en forespørsel for å gjøre at databasen må vente; det vil skape en tidsforsinkelse. Ved å bruke denne metoden vil angriperen vite om forespørselen se sendte var ekte eller falsk basert på hvor lang tid det tar før databasen svarer.
- Out-of-band angrep
Angriperen kan utføre et out-of-band angrep dersom databasen som serveren bruker har visse funksjoner som den trenger. Angriperen vil hente data fra denne kanalen og plassere det hvor som helst. Denne typen angrep regner med at serveren oppretter en DNS- eller HTTP -forespørsel for å overføre private data til angriperen.
SQL injeksjonsangrep
De vanligste angrepene for SQL injection er i klausulen til en valgt forespørsel. Det kan imidlertid også skje innen forskjellige spørringstyper. Det kan være oppdaterte uttalelser, innsatte uttalelser, valgte uttalelser og ordre etter klausul.
Hvordan forhindre SQL injection angrep?
Du kan gjøre noen tiltak allerede i dag! Majoriteten av SQL injection sårbarheter kan bli funnet raskt.
- Skanner
Bruk burp suites web vulnerability scanner. Du kan bruke denne skanneren ved å sette opp tester mot alle inngangspunkter i applikasjonen. Du kan se etter feilmeldinger, systematiske forskjeller og hvordan applikasjonen svarer på dine forespørsler.
- Inngangsvalidering og WAF
Skriv en kode som kan identifisere uekte brukere. Dette er imidlertid ikke en skuddsikker metode når den brukes alene. Det kan skape mange falske positiver! Å implementere denne metoden mens du også bruker en brannmur for applikasjonen kan være veldig effektivt. WAF vil filtrere ut SQLI og andre trusler online.
Når WAF får beskjed om at det er en uekte bruker, vil den verifisere IP-dataen før den blokker forespørselen. Så hvis IP-dataene har et dårlig rykte, vil de bli blokkert basert på det.
Hold deg trygg der ute!