Opdrachtinjectie-kwetsbaarheden en het gevaar dat ze vormen

Vandaag bespreken we opdrachtinjectie-kwetsbaarheden in besturingssystemen. Hoe groot is het gevaar? Hoe kunt u deze kwetsbaarheden voorkomen? Hoe helpt NexDAST ze te verhelpen? We zullen al deze vragen hieronder in detail beantwoorden!

Wat zijn Operating System Command Injections?

Verwissel command injection niet met code injection. Een kwaadaardige code die wordt geïnjecteerd in een programmeertaal is een code injectie kwetsbaarheid. OS commando injecties zijn een soort payload die de hacker injecteert. De payload wordt dan uitgevoerd als een commando van het besturingssysteem.

Een hacker voert een tijdelijk besturingssysteemcommando uit op de applicatieserver, met als gevolg dat de applicatie en gegevens in gevaar kunnen komen. OS command injection kwetsbaarheden worden vaak gebruikt als een opstapje door hackers. Dit is het slechtst denkbare scenario bij OS command-injecties, omdat het begint met OS command-injecties en leidt tot exploitatie van andere delen van de hostinginfrastructuur met als gevolg dat een hele reeks andere systemen bloot komen te liggen.

Python, Ruby, Perl, Java, C, PHP. Al deze programmeertalen stellen gebruikers in staat een systeemshellcommando op te roepen. Dit maakt ze kwetsbaar voor OS Command Injections. Toch hangt de uitvoering van het geïnjecteerde tijdelijke commando af van de privileges van de web-server. Dit is waarom commando-injectie kwetsbaarheden op zichzelf niet zo gevaarlijk zijn. Maar een hacker kan privilege escalatie uitbuiten en toegang krijgen tot meer informatie. Met die informatie kunnen meer kwetsbaarheden worden gevonden en uitgebuit.

Voorbeelden van OS Command Injection kwetsbaarheden

Stel dat je een toetsenbord wilt kopen op een website. De applicatie moet u eerst laten zien of het toetsenbord dat u wilt op voorraad is. Gebruikers krijgen deze informatie via URL’s als deze:

https://Keyboard-website.com/StockStatus?ProductID=111&StoreID=22

De applicatie vraagt oudere systemen om de gebruiker voorraadinformatie te geven. Het aanroepen van een shell commando vertegenwoordigt deze functionaliteit. Product- en winkel-ID’s zijn argumenten, dus het shell-commando ziet er ongeveer zo uit:

Keyboards.py 111 22

De gebruiker ziet nu of het toetsenbord van zijn voorkeur in voorraad is. Maar, er is een probleem hier. De applicatie is niet beveiligd tegen OS commando injecties. Hackers kunnen nu een invoer geven die een tijdelijk commando uitvoert. Het ziet er ongeveer uit als “& echo randomstring &” in de storeID parameter. De applicatie voert dan dit commando uit:

Keyboards.py & echo randomstring & 22

Wat doet dit commando? Het laat de ingevoerde string echoën in de uitvoer. Een efficiënte manier om te testen op types van OS commando-injecties. De shell commandoscheider ( & ) maakt van één commando drie. Gebruikers zien dan drie resultaten:

Error - productID was not provided
Randomstring
22: command not found

Het originele commando Keyboard.py is uitgevoerd, maar de verwachte argumenten ontbraken. Dit is waarom we een foutmelding kregen. De geleverde string (Randomstring) echoot in de uitvoer. Dat is het doel van het geïnjecteerde echo commando. Maar, 22: commando niet gevonden wordt getoond. Waarom? Omdat het 22 originele argument werd uitgevoerd als een commando, wat een fout veroorzaakte.

Nu, laten we blinde OS commando injectie kwetsbaarheden behandelen. Dit gebeurt wanneer een applicatie de uitvoer van een commando niet teruggeeft in zijn antwoord. Desondanks hebben hackers verschillende technieken om deze kwetsbaarheden uit te buiten:

  • tijdvertragingen
  • omleiden van uitvoer

Door een geïnjecteerd commando een tijdvertraging te laten genereren, kan een hacker bevestigen of het commando is uitgevoerd. De tijd die een applicatie nodig heeft om te reageren is wat je vertelt of het commando is uitgevoerd of niet. Een van de meest effectieve commando’s om deze blinde kwetsbaarheid uit te buiten is een ping. Met dit commando kun je een exact aantal ICMP pakketten kiezen om te versturen. Dat aantal is de tijd die nodig is om het commando uit te voeren.

Het omleiden van de uitvoer is een ander OS commando injectie middel. Je stuurt de uitvoer van het geïnjecteerde commando direct naar een bestand. Dat bestand bevindt zich in de webroot die wordt opgehaald via je browser.

Voorkomen van Operating System Command Injections

Hoe kun je OS Command Injections voorkomen? De eenvoudigste en meest effectieve manier is om nooit shell_exec of vergelijkbare aanroepen te gebruiken voor host OS commando’s. Gebruik in plaats daarvan dezelfde commando’s in de programmeertaal die je gebruikt. Er ontstaat een probleem als je programmeertaal geen commando heeft dat overeenkomt met het commando dat je nodig hebt. In deze gevallen moet je input sanitization gebruiken. Het helpt als je dit doet voordat je de waarde toekent aan het shell commando. Whitelist gebruik is altijd de veiligste optie als het op injecties aankomt.

Andere opties van krachtige input validatie zijn:

  • Alfanumerieke karakter validatie (Bevestig de opname van alleen alfanumerieke karakter zonder whitespace of syntaxis in de input)
  • Nummer validatie (Bevestig dat de input een nummer is)
  • Toegestane waarden whitelist (Bevestig tegen whitelists van toegestane waarden)

Je moet nooit shell metacharacter vermijden en proberen om de input op die manier te sanitize. Omdat dat de invoer kwetsbaar maakt voor slimme hackers, die ze gemakkelijk kunnen omzeilen.

Hoe NexDAST Operating System Command Injections kan helpen voorkomen

De eenvoudigste en meest effectieve manier om OS Command Injections te voorkomen is door NexDAST te gebruiken. Onze black-box security testing oplossing onderzoekt automatisch uw applicatie. Wanneer een OS Command Injection wordt gedetecteerd, worden herstelrichtlijnen naar de ontwikkelaar of het SecOps team gestuurd. Langdurig en traag handmatig testen is met NexDAST niet meer nodig.

Voorbeeld van NexDAST die een OS Command Injection identificeert:

vulnerable.com/site/ping?ip=8.8.8.8%3B+%2Fbin%2Fcat+%2Fetc%2Fpasswd

Het %3B+%2Fbin%2Fcat+%2Fetc%2Fpasswd-gedeelte is de kwetsbaarheid. NexDAST biedt ook richtlijnen voor het verhelpen van deze kwetsbaarheid, zodat u deze zo efficiënt mogelijk kunt verhelpen.

Wilt u meer weten over NexDAST? We hebben het al eerder uitgebreid in een van onze blogs behandeld, en als u een probleem hebt waarmee NexDAST u kan helpen, kunt u hier een demo aanvragen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.