Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

Injektionsangreb er en af ​​de mest almindelige måder, hackere angriber systemer på, fordi det giver dem mulighed for nemt at køre mange kommandoer og koder. OS kommandoinjektion er et sådant injektionsangreb, du skal være opmærksom på. Dette udnytter en sårbarhed, som system-, database- og webapplikationsadministratorer bør tage meget alvorligt.

Så hvad er et OS kommandoinjektionsangreb?

Definition af OS Command Injection

OS-kommandeinjektion lader en ondsindet angriber køre enhver kommando, de ønsker, ved at udnytte et sårbart operativsystem, program, applikation, database eller plug-in. Det sker, når applikationer ikke korrekt validerer og renser de parametre, de bruger, når de kalder shell-funktioner som f.eks. system() eller exec() at udføre systemkommandoer.

For bedre at forstå detektering og udnyttelse af OS-kommandeinjektion, er det nyttigt at undersøge dette problem i tre hovedkategorier.

1. Direkte kommandoindsprøjtning

Overvej dette fra angriberens perspektiv. Cyberangriberen opdager, at et program kører en bestemt systemkommando; de indtaster den ondsindede kommando som en del af de forventede argumenter. Applikationen udfører derefter den originale kommando efterfulgt af den ondsindede.

Angriberen anvender en række forskellige tilgange til at finde en sådan sårbarhed. Den nemmeste metode til at bekæmpe dette er at holde operativsystemet opdateret til enhver tid; Det kunne du gøre i samarbejde med et kompetent IT-team. Du bør undgå alle apps og programmer, der kan forårsage systemsårbarheder, fordi angriberen kan indsætte kode direkte, og skaden er uforudsigelig.

2. Indirekte kommandoindsprøjtning

I tilfælde af indirekte kommandoinjektion, indtaster angriberen ikke direkte en kode eller kommando i systemet. Til dette bruger de en sårbar applikation eller et sårbart program i systemet. Sårbarheden skaber en bro mellem angriberen og operativsystemet. Ved at drage fordel af denne kommunikation sigter angriberen efter at køre ondsindede koder og kommandoer på målet.

Angriberen udfører en række tests for at identificere denne sårbarhed og opdager, at softwaren bruger data fra en ekstern kilde, såsom en fil eller en miljøvariabel, til at kalde en systemkommando. Angriberen ændrer derefter indholdet af den eksterne kilde, så den nu indeholder en ondsindet kommando. Dette udføres derefter sammen med den originale applikations instruktioner.

Den største forskel mellem direkte og indirekte kommandoinjektion er, at angriberen bruger et program til at kommunikere med operativsystemet. Men der er ingen reel forskel mellem den skade, de to former for injektion kan gøre, så begge skal løses. Derfor bør du sikre dig, at programmerne i dit netværk er pålidelige og nødvendige. Opbevar ikke apps, du ikke har tillid til, på din enhed.

3. Blind Command Injection

En anden type OS-kommandeinjektion er blind kommandoinjektion. Det betyder, at applikationen ikke returnerer noget output fra kommandoen i HTTP-svaret. Angriberen bruger forskellige teknikker såsom tidsforsinkelse og output routing til at udnytte denne sårbarhed.

Forestil dig, at du søger efter et websted, og "/?search=id"-værdien i URL'en ændres ved hver søgning. Id-værdien her kan være en brugerside, adressen på et produktfoto eller en hvilken som helst side på webstedet. Angriberen kan få forskellige resultater ved at ændre id-værdien. Det er svært at gøre det manuelt, men det er der værktøjer som Burp Suite for det. Senere opdager angriberen en mærkværdighed på en side: Der kan muligvis returneres en id-værdi, som, selvom den ikke viste nogen resultater, hjemmesidens svar var 200, hvilket indikerer, at alt er i orden. I et sådant tilfælde kunne angriberen bruge en blind kommandoindsprøjtning.

En teknik som f.eks. tidsforsinkelse er særlig nyttig. Da siden, der åbner, vil være tom, vil du ikke modtage noget svar, men du kan muligvis stadig samle oplysninger om, hvad der er gemt i en database baseret på tidsforsinkelser, der kun indlæser siden, hvis et bestemt tegn er til stede. Dette er for tidskrævende til at være en manuel proces, men masser af værktøjer kan automatisere angrebet.

Et eksempel på et angrebsscenarie

Lad os gennemgå alt ovenstående gennem et eksempel. Forestil dig, at du har en shopping-app, der lader brugeren se, om produkter er på lager. Lad os bruge en URL som den nedenfor for at få adgang til alle disse oplysninger:

example_unsafe_store.com/stockStatus? productID=245&storeID=

Forestil dig at sende produkt- og butiks-id'erne som argumenter til en shell-kommando, såsom "stockstat.pl 245 38", da applikationen skulle forespørge efter gamle poster. Hvis udvikleren ikke foretager sig noget mod kommandoindsprøjtninger, kan en angriber sende et input for at udføre den ønskede kommando:

& ekko denne_en_skadelige_kommando &

Hvis denne indtastning går i parameteren productID, vil kommandoen, der udføres af applikationen, være:

stockstat.pl & ekko denne_en_skadelige_kommando & 38

Ekkokommandoen er en nyttig metode til at detektere kommandoinjektioner samt sikre, at den givne streng vises i outputtet. Tegnet "&" er en shell kommando separator, så det, der udføres, er tre separate kommandoer, den ene efter den anden. Som et resultat vil det output, der returneres til brugeren, være:

Fejl -produkt-ID ikke fundet
denne_en_skadelige_kommando
38: kommando ikke fundet

Her udførte filen "stockstat.pl" kommandoen uden de forventede argumenter og returnerede derfor en fejlmeddelelse. Derefter løb ekkokommandoen indsprøjtet af angriberen, og angriberen så det udtryk, han indtastede på skærmen. Det oprindelige argument, "38", kørte som en fejlforårsagende kommando.

Sådan beskyttes mod OS Command Injections

Selvom kommandoinjektion er en kraftfuld og skadelig angrebsvektor, er der nogle tricks til at undgå det. Rationalet bag OS kommandoinjektionsangreb er at udføre visse operativsystemkommandoer ved hjælp af en applikation. Du er nødt til at stoppe dette i at ske. Der er nogle problemer at overveje:

  1. Du skal forhindre, at nogen med adgang til applikationen kan køre kode.
  2. Du bør forhindre nogen med adgang til applikationen i at foretage anmodninger til serveren med syntaktiske udtryk.
  3. Du skal kryptere de sætninger, som alle med adgang anmoder om.

Lad os gennemgå hvert punkt en efter en. En god løsning på det første problem er at brug hvidlistemetoden for at forhindre, at nogen når applikationslaget i at køre bestemte koder eller anmodninger. Enhver, du ikke identificerer, vil ikke kunne køre kode.

Løsningen på det andet er ikke at acceptere nogle tekstudtryk, der bruges i kommandoer. Brugeren kan kun indtaste numeriske værdier. Anvend dette sammen med hvidlistemetoden, og du vil have et meget mere sikkert system.

Det tredje punkt handler om kryptering af syntaktiske parametre såsom det indtastede tegn og mellemrum. Som et resultat heraf bør hvidlistemetoden, syntaktisk kontrol af input og kryptering af input beskytte dig mod OS-kommandoinjektion.

Injektionsangreb udvikler sig hver dag

Der er mange injektionsmetoder med forskellige angrebsteknikker, såsom OS-kommando, SQL, SSI og XPath. Det er ikke let at forsøge at forhindre hver af dem. Husk, at alle disse angreb udvikler sig hver dag og drager fordel af små sårbarheder, som udviklere har overset. Derfor er det vigtigt, at du altid holder dig opdateret og nøje følger den aktuelle udvikling inden for cybersikkerhedsverdenen.