Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Injektionsattacker är ett av de vanligaste sätten att hackare attackerar system eftersom det gör att de enkelt kan köra många kommandon och koder. OS-kommandeinjektion är en sådan injektionsattack du måste vara medveten om. Detta utnyttjar en sårbarhet som system-, databas- och webbapplikationsadministratörer bör ta på största allvar.

Så vad är en OS-kommandeinjektionsattack?

Definition av OS Command Injection

OS-kommandeinjektion låter en illvillig angripare köra vilket kommando de vill genom att utnyttja ett sårbart operativsystem, program, applikation, databas eller plugin-program. Det händer när applikationer misslyckas med att korrekt validera och sanera parametrarna de använder när de anropar skalfunktioner som t.ex. systemet() eller exec() för att utföra systemkommandon.

För att bättre förstå upptäckten och utnyttjandet av OS-kommandeinjektion är det användbart att undersöka detta problem i tre huvudkategorier.

instagram viewer

1. Direkt kommandoinjektion

Tänk på detta ur angriparens perspektiv. Cyberattackaren upptäcker att en applikation kör ett specifikt systemkommando; de anger det skadliga kommandot som en del av de förväntade argumenten. Applikationen kör sedan det ursprungliga kommandot följt av det skadliga.

Angriparen använder en mängd olika metoder för att hitta en sådan sårbarhet. Den enklaste metoden att bekämpa detta är att hålla operativsystemet uppdaterat hela tiden; du kan göra detta i samarbete med ett kompetent IT-team. Du bör undvika alla appar och program som kan orsaka systemsårbarheter eftersom angriparen kan direkt infoga kod och skadan är oförutsägbar.

2. Indirekt kommandoinjektion

Vid indirekt kommandoinjektion matar angriparen inte in en kod eller ett kommando direkt i systemet. För detta använder de en sårbar applikation eller ett sårbart program i systemet. Sårbarheten skapar en brygga mellan angriparen och operativsystemet. Genom att dra nytta av denna kommunikation strävar angriparen efter att köra skadliga koder och kommandon på målet.

Angriparen utför en serie tester för att identifiera denna sårbarhet och upptäcker att programvaran använder data från en extern källa, till exempel en fil eller en miljövariabel, för att anropa ett systemkommando. Angriparen ändrar sedan innehållet i den externa källan, så att den nu innehåller ett skadligt kommando. Detta exekveras sedan tillsammans med den ursprungliga applikationens instruktioner.

Den största skillnaden mellan direkt och indirekt kommandoinjektion är att angriparen använder en applikation för att kommunicera med operativsystemet. Men det finns ingen verklig skillnad mellan den skada som de två formerna av injektion kan göra, så båda måste åtgärdas. Det är därför du bör se till att programmen i ditt nätverk är pålitliga och nödvändiga. Behåll inte appar som du inte litar på på din enhet.

3. Blind Command Injection

En annan typ av OS-kommandeinjektion är blind kommandoinjektion. Det betyder att applikationen inte returnerar någon utdata från kommandot i HTTP-svaret. Angriparen använder olika tekniker som tidsfördröjning och utdatarouting för att utnyttja denna sårbarhet.

Föreställ dig att du söker efter en webbplats och värdet "/?search=id" i webbadressen ändras med varje sökning. ID-värdet här kan vara en användarsida, adressen till ett produktfoto eller vilken sida som helst på webbplatsen. Angriparen kan få olika resultat genom att ändra id-värdet. Det är svårt att göra det manuellt, men det finns verktyg som Burp Suite för detta. Senare upptäcker angriparen en märklighet på en sida: ett id-värde kan returneras som, även om det inte visade några resultat, webbplatsens svar var 200, vilket indikerar att allt är bra. I ett sådant fall kan angriparen använda en blind kommandoinjektion.

En teknik som en tidsfördröjning är särskilt användbar. Eftersom sidan som öppnas kommer att vara tom kommer du inte att få något svar, men du kanske fortfarande kan samla in information om vad som lagras i en databas baserat på tidsfördröjningar som bara laddar sidan om ett visst tecken är närvarande. Detta är för tidskrävande för att vara en manuell process, men många verktyg kan automatisera attacken.

Ett exempel på attackscenario

Låt oss granska allt ovan genom ett exempel. Föreställ dig att du har en shoppingapp som låter användaren se om produkter finns i lager. Låt oss använda en webbadress som den nedan för att komma åt all denna information:

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

Föreställ dig att skicka produkt- och butiks-ID: n som argument till ett skalkommando, till exempel "stockstat.pl 245 38", eftersom programmet skulle behöva fråga efter gamla poster. Om utvecklaren inte vidtar några åtgärder mot kommandoinjektioner, kan en angripare skicka en input för att utföra det önskade kommandot:

& eko detta_ett_skadligt_kommando &

Om denna post går in i parametern productID, kommer kommandot som körs av applikationen att vara:

stockstat.pl & eko detta_ett_skadligt_kommando & 38

Echo-kommandot är en användbar metod för att upptäcka kommandoinjektioner samt se till att den givna strängen visas i utdata. Tecknet "&" är en shell kommandoavgränsare, så det som exekveras är tre separata kommandon, efter varandra. Som ett resultat kommer utdata som returneras till användaren att vara:

Fel -produkt-ID hittades inte
detta_ett_skadligt_kommando
38: kommando hittades inte

Här körde filen "stockstat.pl" kommandot utan de argument som den förväntade sig och returnerade därför ett felmeddelande. Sedan sprang ekokommandot som injicerades av angriparen och angriparen såg uttrycket han skrev in på skärmen. Det ursprungliga argumentet, "38", kördes som ett felorsakande kommando.

Hur man skyddar sig mot OS Command Injections

Även om kommandoinjektion är en kraftfull och skadlig attackvektor, finns det några knep för att undvika det. Skälet bakom OS-kommandeinjektionsattacker är att exekvera vissa operativsystemkommandon med hjälp av en applikation. Du måste stoppa detta från att hända. Det finns några frågor att ta hänsyn till:

  1. Du måste förhindra att någon med åtkomst till applikationen kan köra kod.
  2. Du bör förhindra att någon med åtkomst till applikationen gör förfrågningar till servern med syntaktiska uttryck.
  3. Du måste kryptera fraserna som alla med åtkomst begär.

Låt oss gå igenom varje objekt en efter en. En bra lösning på det första problemet är att använd metoden för vitlista för att förhindra att någon når applikationslagret från att köra vissa koder eller förfrågningar. Den som du inte identifierar kommer inte att kunna köra kod.

Lösningen på det andra är att inte acceptera vissa textuttryck som används i kommandon. Användaren kan endast ange numeriska värden. Använd detta tillsammans med vitlistametoden så får du ett mycket säkrare system.

Det tredje objektet handlar om kryptering av syntaktiska parametrar som det angivna tecknet och mellanslag. Som ett resultat bör vitlistningsmetoden, syntaktisk kontroll av ingångar och kryptering av ingångar skydda dig från OS-kommandoinjektion.

Injektionsattacker utvecklas varje dag

Det finns många injektionsmetoder med olika attacktekniker, såsom OS-kommando, SQL, SSI och XPath. Det är inte lätt att försöka förhindra var och en av dem. Tänk på att alla dessa attacker utvecklas varje dag och dra nytta av små sårbarheter som utvecklarna förbisett. Det är därför det är viktigt att du alltid håller dig uppdaterad och noga följer den aktuella utvecklingen inom cybersäkerhetsvärlden.