Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Injeksjonsangrep er en av de vanligste måtene hackere angriper systemer på, fordi det lar dem enkelt kjøre mange kommandoer og koder. OS kommandoinjeksjon er et slikt injeksjonsangrep du må være klar over. Dette utnytter en sårbarhet som system-, database- og nettapplikasjonsadministratorer bør ta på alvor.

Så hva er et OS-kommandeinjeksjonsangrep?

Definisjon av OS Command Injection

OS-kommandeinjeksjon lar en ondsinnet angriper kjøre hvilken som helst kommando de vil ved å utnytte et sårbart operativsystem, program, applikasjon, database eller plug-in. Det skjer når applikasjoner ikke klarer å validere og rense parametrene de bruker når de kaller opp skallfunksjoner som f.eks. system() eller exec() for å utføre systemkommandoer.

For bedre å forstå oppdagelsen og utnyttelsen av OS-kommandeinjeksjon, er det nyttig å undersøke dette problemet i tre hovedkategorier.

1. Direkte kommandoinjeksjon

Vurder dette fra angriperens perspektiv. Nettangriperen oppdager at en applikasjon kjører en bestemt systemkommando; de skriver inn den ondsinnede kommandoen som en del av de forventede argumentene. Applikasjonen utfører deretter den opprinnelige kommandoen etterfulgt av den ondsinnede.

Angriperen bruker en rekke tilnærminger for å finne en slik sårbarhet. Den enkleste metoden for å bekjempe dette er å holde operativsystemet oppdatert til enhver tid; du kan gjøre dette i samarbeid med et kompetent IT-team. Du bør unngå alle apper og programmer som kan forårsake systemsårbarheter fordi angriperen kan sette inn kode direkte, og skaden er uforutsigbar.

2. Indirekte kommandoinjeksjon

Ved indirekte kommandoinjeksjon, legger ikke angriperen inn en kode eller kommando direkte i systemet. Til dette bruker de en sårbar applikasjon eller et sårbart program i systemet. Sårbarheten skaper en bro mellom angriperen og operativsystemet. Ved å utnytte denne kommunikasjonen tar angriperen som mål å kjøre ondsinnede koder og kommandoer på målet.

Angriperen utfører en serie tester for å identifisere dette sikkerhetsproblemet og oppdager at programvaren bruker data fra en ekstern kilde, for eksempel en fil eller en miljøvariabel, for å kalle en systemkommando. Angriperen endrer deretter innholdet i den eksterne kilden, slik at den nå inneholder en ondsinnet kommando. Dette utføres deretter sammen med instruksjonene til den originale applikasjonen.

Hovedforskjellen mellom direkte og indirekte kommandoinjeksjon er at angriperen bruker en applikasjon for å kommunisere med operativsystemet. Men det er ingen reell forskjell mellom skaden de to formene for injeksjon kan gjøre, så begge må behandles. Det er derfor du bør sørge for at programmene i nettverket ditt er pålitelige og nødvendige. Ikke oppbevar apper du ikke stoler på på enheten din.

3. Blind Command Injection

En annen type OS-kommandeinjeksjon er blind kommandoinjeksjon. Dette betyr at applikasjonen ikke returnerer noe utdata fra kommandoen i HTTP-svaret. Angriperen bruker forskjellige teknikker som tidsforsinkelse og utgangsruting for å utnytte dette sikkerhetsproblemet.

Tenk deg at du søker etter et nettsted, og "/?search=id"-verdien i URL-en endres for hvert søk. ID-verdien her kan være en brukerside, adressen til et produktbilde eller en hvilken som helst side på nettstedet. Angriperen kan få forskjellige resultater ved å endre id-verdien. Det er vanskelig å gjøre det manuelt, men det er det verktøy som Burp Suite for dette. Senere oppdager angriperen en merkelighet på en side: en id-verdi kan returneres som, selv om den ikke viste noen resultater, nettstedets svar var 200, noe som indikerer at alt er bra. I et slikt tilfelle kan angriperen bruke en blind kommandoinjeksjon.

En teknikk som en tidsforsinkelse er spesielt nyttig. Siden siden som åpnes vil være tom, vil du ikke motta noe svar, men du kan fortsatt samle informasjon om hva som er lagret i en database basert på tidsforsinkelser som bare laster siden hvis et bestemt tegn er det tilstede. Dette er for tidkrevende til å være en manuell prosess, men mange verktøy kan automatisere angrepet.

Et eksempel på angrepsscenario

La oss se gjennom alt ovenfor gjennom et eksempel. Tenk deg at du har en shopping-app som lar brukeren se om produktene er på lager. La oss bruke en URL som den nedenfor for å få tilgang til all denne informasjonen:

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

Tenk deg å sende produkt- og butikk-ID-ene som argumenter til en shell-kommando, for eksempel "stockstat.pl 245 38", siden applikasjonen må spørre etter gamle poster. Hvis utvikleren ikke gjør noe mot kommandoinjeksjoner, kan en angriper sende et input for å utføre ønsket kommando:

& ekko denne_en_skadelige_kommando &

Hvis denne oppføringen går inn i productID-parameteren, vil kommandoen som utføres av applikasjonen være:

stockstat.pl & ekko denne_en_skadelige_kommando & 38

Ekko-kommandoen er en nyttig metode for å oppdage kommandoinjeksjoner samt sørge for at den gitte strengen vises i utdataene. "&"-tegnet er en shell kommandoseparator, så det som utføres er tre separate kommandoer, etter hverandre. Som et resultat vil utdataene som returneres til brukeren være:

Feil -produkt-ID ikke funnet
denne_en_skadelige_kommando
38: kommando ikke funnet

Her utførte "stockstat.pl"-filen kommandoen uten argumentene den forventet og returnerte derfor en feilmelding. Deretter løp ekkokommandoen som ble injisert av angriperen, og angriperen så uttrykket han skrev inn på skjermen. Det opprinnelige argumentet, "38", kjørte som en kommando som forårsaket feil.

Slik beskytter du deg mot OS-kommandoinjeksjoner

Selv om kommandoinjeksjon er en kraftig og skadelig angrepsvektor, er det noen triks for å unngå det. Begrunnelsen bak OS kommandoinjeksjonsangrep er å utføre visse operativsystemkommandoer ved hjelp av en applikasjon. Du må stoppe dette fra å skje. Det er noen problemer å vurdere:

  1. Du må forhindre at noen med tilgang til applikasjonen kan kjøre kode.
  2. Du bør forhindre at noen med tilgang til applikasjonen sender forespørsler til serveren med syntaktiske uttrykk.
  3. Du må kryptere setningene som alle med tilgang ber om.

La oss gå gjennom hvert element en etter en. En god løsning på det første problemet er å bruk hvitelistemetoden for å forhindre at noen når applikasjonslaget fra å kjøre bestemte koder eller forespørsler. Alle du ikke identifiserer vil ikke kunne kjøre kode.

Løsningen på det andre er å ikke akseptere enkelte tekstuttrykk som brukes i kommandoer. Brukeren kan bare angi numeriske verdier. Bruk dette sammen med hvitelistemetoden, og du vil få et mye sikrere system.

Det tredje elementet handler om kryptering av syntaktiske parametere som det angitte tegnet og mellomrom. Som et resultat bør hvitelistemetoden, syntaktisk kontroll av innganger og kryptering av innganger beskytte deg mot injeksjon av OS-kommandoer.

Injeksjonsangrep utvikler seg hver dag

Det finnes mange injeksjonsmetoder med forskjellige angrepsteknikker, som OS-kommando, SQL, SSI og XPath. Det er ikke lett å prøve å forhindre hver av dem. Husk at alle disse angrepene utvikler seg hver dag og drar nytte av små sårbarheter som utviklerne har oversett. Derfor er det viktig at du alltid holder deg oppdatert og følger nøye med på den nåværende utviklingen i cybersikkerhetsverdenen.