Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Injectieaanvallen zijn een van de meest voorkomende manieren waarop hackers systemen aanvallen, omdat ze hiermee gemakkelijk veel opdrachten en codes kunnen uitvoeren. OS-commando-injectie is zo'n injectie-aanval waarvan u op de hoogte moet zijn. Dit misbruikt een kwetsbaarheid die systeem-, database- en webapplicatiebeheerders zeer serieus moeten nemen.

Dus wat is een OS-opdrachtinjectieaanval?

Definitie van OS-opdrachtinjectie

Met OS-commando-injectie kan een kwaadwillende aanvaller elke gewenste opdracht uitvoeren door misbruik te maken van een kwetsbaar besturingssysteem, programma, toepassing, database of plug-in. Het gebeurt wanneer applicaties de parameters die ze gebruiken bij het aanroepen van shell-functies zoals systeem() of uitvoerend() om systeemcommando's uit te voeren.

Om de detectie en het misbruik van OS-commando-injectie beter te begrijpen, is het nuttig om dit probleem in drie hoofdcategorieën te onderzoeken.

1. Directe commando-injectie

Bekijk dit vanuit het perspectief van de aanvaller. De cyberaanvaller ontdekt dat een applicatie een specifiek systeemcommando uitvoert; ze voeren de kwaadaardige opdracht in als onderdeel van de verwachte argumenten. De applicatie voert vervolgens de oorspronkelijke opdracht uit, gevolgd door de kwaadwillende.

De aanvaller gebruikt verschillende benaderingen om een ​​dergelijke kwetsbaarheid te vinden. De eenvoudigste methode om dit tegen te gaan, is door het besturingssysteem te allen tijde up-to-date te houden; u zou dit kunnen doen in samenwerking met een competent IT-team. U moet alle apps en programma's vermijden die systeemkwetsbaarheden kunnen veroorzaken, omdat de aanvaller direct code kan invoegen en de schade onvoorspelbaar is.

2. Indirecte commando-injectie

In het geval van indirecte commando-injectie voert de aanvaller niet direct een code of commando in het systeem in. Hiervoor gebruiken ze een kwetsbare applicatie of programma in het systeem. De kwetsbaarheid slaat een brug tussen de aanvaller en het besturingssysteem. Door gebruik te maken van deze communicatie probeert de aanvaller kwaadaardige codes en commando's op het doelwit uit te voeren.

De aanvaller voert een reeks tests uit om deze kwetsbaarheid te identificeren en ontdekt dat de software gebruikt gegevens van een externe bron, zoals een bestand of een omgevingsvariabele, om een ​​systeemopdracht aan te roepen. De aanvaller past vervolgens de inhoud van de externe bron aan, zodat deze nu een kwaadaardig commando bevat. Dit wordt vervolgens uitgevoerd naast de instructies van de oorspronkelijke toepassing.

Het belangrijkste verschil tussen directe en indirecte commando-injectie is dat de aanvaller een applicatie gebruikt om met het besturingssysteem te communiceren. Maar er is geen echt verschil tussen de schade die de twee vormen van injectie kunnen aanrichten, dus beide moeten worden aangepakt. Daarom moet u ervoor zorgen dat de programma's in uw netwerk betrouwbaar en noodzakelijk zijn. Bewaar geen apps die u niet vertrouwt op uw apparaat.

3. Blinde commando-injectie

Een ander type OS-opdrachtinjectie is blinde opdrachtinjectie. Dit betekent dat de toepassing geen uitvoer retourneert van de opdracht in het HTTP-antwoord. De aanvaller gebruikt verschillende technieken, zoals tijdvertraging en uitvoerroutering, om dit beveiligingslek te misbruiken.

Stel u voor dat u op zoek bent naar een website en dat de waarde "/?search=id" in de URL bij elke zoekopdracht verandert. De id-waarde kan hier een gebruikerspagina zijn, het adres van een productfoto of een willekeurige pagina op de site. De aanvaller kan verschillende resultaten krijgen door de id-waarde te wijzigen. Het is moeilijk om het handmatig te doen, maar er zijn tools zoals Burp Suite voor deze. Later ontdekt de aanvaller een eigenaardigheid op een pagina: er kan een id-waarde worden geretourneerd die, ook al leverde deze geen resultaten op, de de respons van de website was 200, wat aangeeft dat alles in orde is. In zo'n geval zou de aanvaller een blinde commando-injectie kunnen gebruiken.

Vooral een techniek als een tijdvertraging is handig. Aangezien de pagina die wordt geopend leeg is, ontvangt u geen reactie, maar kunt u mogelijk nog steeds verzamelen informatie over wat er in een database is opgeslagen op basis van tijdvertragingen die de pagina alleen laden als een bepaald teken is cadeau. Dit is te tijdrovend om een ​​handmatig proces te zijn, maar tal van tools kunnen de aanval automatiseren.

Een voorbeeld van een aanvalsscenario

Laten we al het bovenstaande bekijken aan de hand van een voorbeeld. Stel je hebt een shopping-app waarmee de gebruiker kan zien of producten op voorraad zijn. Laten we een URL zoals hieronder gebruiken om toegang te krijgen tot al deze informatie:

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

Stel je voor dat je de product- en winkel-ID's als argumenten doorgeeft aan een shell-commando, zoals "stockstat.pl 245 38", aangezien de applicatie zou moeten zoeken naar oude records. Als de ontwikkelaar geen actie onderneemt tegen commando-injecties, kan een aanvaller een input sturen om het gewenste commando uit te voeren:

& echo dit_een_schadelijke_commando &

Als dit item in de productID-parameter komt, is de opdracht die door de toepassing wordt uitgevoerd:

stockstat.pl & echo dit_een_schadelijke_commando & 38

Het echo-commando is een handige methode om commando-injecties te detecteren en om ervoor te zorgen dat de gegeven string in de uitvoer verschijnt. Het "&"-teken is een shell commando scheidingsteken, dus wat wordt uitgevoerd zijn drie afzonderlijke opdrachten, de een na de ander. Als gevolg hiervan is de uitvoer die naar de gebruiker wordt teruggestuurd:

Fout -productID niet gevonden
dit_een_schadelijke_commando
38: commando niet gevonden

Hier voerde het bestand "stockstat.pl" de opdracht uit zonder de verwachte argumenten en retourneerde daarom een ​​foutmelding. Vervolgens werd het door de aanvaller geïnjecteerde echo-commando uitgevoerd en zag de aanvaller de uitdrukking die hij op het scherm had ingevoerd. Het oorspronkelijke argument, "38", liep als een foutveroorzakende opdracht.

Hoe te beschermen tegen OS-opdrachtinjecties

Hoewel commando-injectie een krachtige en schadelijke aanvalsvector is, zijn er enkele trucs om dit te vermijden. De grondgedachte achter aanvallen met OS-commando-injectie is om bepaalde commando's van het besturingssysteem uit te voeren met behulp van een applicatie. U moet voorkomen dat dit gebeurt. Er zijn enkele zaken waarmee u rekening moet houden:

  1. U moet voorkomen dat iemand met toegang tot de toepassing code kan uitvoeren.
  2. U moet voorkomen dat iemand met toegang tot de applicatie verzoeken doet aan de server met syntactische uitdrukkingen.
  3. U moet de zinnen versleutelen die iedereen met toegang verzoekt.

Laten we elk item een ​​voor een doornemen. Een goede oplossing voor het eerste probleem is om gebruik de whitelist-methode om te voorkomen dat iemand die de applicatielaag bereikt bepaalde codes of verzoeken uitvoert. Iedereen die u niet identificeert, kan geen code uitvoeren.

De oplossing voor de tweede is om sommige tekstuitdrukkingen die in opdrachten worden gebruikt, niet te accepteren. De gebruiker kan alleen numerieke waarden invoeren. Pas dit samen met de whitelist-methode toe en je hebt een veel veiliger systeem.

Het derde item gaat over de codering van syntactische parameters zoals het ingevoerde teken en spaties. Als gevolg hiervan zouden de whitelisting-methode, syntactische controle van invoer en codering van invoer u moeten beschermen tegen injectie van OS-opdrachten.

Injectieaanvallen ontwikkelen zich elke dag

Er zijn veel injectiemethoden met verschillende aanvalstechnieken, zoals OS-opdracht, SQL, SSI en XPath. Het is niet eenvoudig om ze allemaal te voorkomen. Houd er rekening mee dat al deze aanvallen elke dag evolueren en profiteren van kleine kwetsbaarheden die ontwikkelaars over het hoofd hebben gezien. Daarom is het belangrijk dat je altijd up-to-date blijft en de actuele ontwikkelingen in de wereld van cybersecurity op de voet volgt.