introduktion
kommandoinjektionssårbarheder er en af de farligste sårbarheder på nettet. Mange sikkerhedstestere og dusørjægere sigter mod at finde kommandoinjektionssårbarheder på grund af den indflydelse, de kan skabe på målapplikationen.
denne artikel vil give et overblik over kommandoinjektionssårbarheder sammen med en introduktion til forskellige sårbarheder, der i sidste ende kan føre til kommandoinjektion.
Hvad er kommandoindsprøjtning?
Kommandoindsprøjtning er en type internetsårbarhed, der gør det muligt for angribere at udføre vilkårlige operativsystemkommandoer på serveren, hvor applikationen kører. Kommandoinjektionssårbarheder opstår, når applikationerne bruger shell-kommandoer eller scripts, der udfører shell-kommandoer i baggrunden.
lad os overveje følgende URL for en applikation, som udfører base64-kodning af brugerinput.
http://target-site.com/encode.php?text=helloworld
denne brugerinput sendes som en get-parameter til kodningen.php-fil.
følgende er kildekoden til kode.php:
<?php
$input=$_GET;
system(“echo-n”. $input.”/base64″);
?>
som vi kan bemærke fra det foregående kodestykke, overføres brugerindgangen til php system () – funktionen, som bruges til at udføre operativsystemkommandoer i PHP.
hvis en bruger tilføjer en systemkommando til input, udføres den som en operativsystemkommando, der ser sådan ud:
http://target-site.com/encode.php?text=test;id
følgende er svaret, der returneres til brugeren:
testdWlkPTMzKHd3dy1kYXRhKSBnaWQ9MzMod3d3LWRhdGEpIGdyb3Vwcz0zMyh3d3ctZGF0YSkK
As we can see, the word test is not encoded but there is a long encoded text returned in response. Decoding this text looks like this:
$ echo -n “dWlkPTMzKHd3dy1kYXRhKSBnaWQ9MzMod3d3LWRhdGEpIGdyb3Vwcz0zMyh3d3ctZGF0YSkK” | base64 -d
uid=33(www-data) gid=33(www-data) groups=33(www-data)
As you can see, the encoded text is the output of the id command passed to the application.
Why are command injection vulnerabilities dangerous?
kommandoindsprøjtningsklassen af sårbarheder betragtes som en af de farligste sårbarheder på nettet, fordi de giver kontrol over det underliggende operativsystem til en angriber. Denne kontrol kan bruges på flere forskellige måder, herunder lateral bevægelse gennem det interne netværk ved hjælp af den tillid, målserveren har med andre systemer på netværket.
sårbarheder, der kan føre til kommandoudførelse
mens kommandoudførelsessårbarheder opstår, når det sårbare program giver slutbrugeren mulighed for at udvide programmets standardfunktionalitet og udføre systemkommandoer, er det også muligt at udføre kommandoer gennem programmets kode. Dette er almindeligt kendt som kodekørsel. Selv når der er en kodeudførelsessårbarhed, er slutmålet at udføre vilkårlige systemkommandoer gennem det. I betragtning af det, lad os diskutere nogle af de sårbarheder, der kan føre til kommandoudførelse gennem kommandoinjektion eller kodeudførelse.
følgende er nogle af de sårbarheder, der i sidste ende kan føre til kommandoinjektionsangreb.
vilkårlig kommandoindsprøjtning
som vi diskuterede i vores tidligere eksempel, er det muligt for applikationer at have applikationer, der modtager vilkårlige systemkommandoer fra brugeren direkte og udfører dem på den underliggende vært. Dette er en klasse eksempel på kommando injektion sårbarhed.
vilkårlige filoverførsler
når applikationer tillader brugere at uploade filer med vilkårlige filudvidelser, kan det føre til kommandoindsprøjtning, når disse uploadede filer placeres i
usikker serialisering
bortset fra standardkommandoinjektionssårbarheder kan vilkårlig kommandoudførelse også være mulig ved hjælp af andre sårbarheder såsom usikker deserialisering. Dette drager fordel af det faktum, at server-side-koden deserialiserer det serialiserede indhold, som brugeren har sendt, uden at validere det korrekt. Selvom dette almindeligvis er kendt som usikker serialiseringsklasse af sårbarheder, fører det til sidst til kommandoindsprøjtning, hvis målapplikationen opfylder visse krav, såsom passende gadgets, der er tilgængelige i klassestien.
server-side skabelon injektion
når internet applikationer bruger server-side templating teknologier såsom Jinja2 eller kvist til at generere dynamiske HTML-svar, er det muligt at have server-side skabelon injektion. SSTI sårbarheder opstår, når brugerinput er indlejret i en skabelon på en usikker måde, og det resulterer i fjernkørsel af kode på serveren.
ekstern enhedsinjektion
ekstern enheds sårbarhed er en anden type sårbarhed, der opstår mod applikationer, der analyserer brugerstyret input ved hjælp af en svagt konfigureret parser. Sårbarheder fører normalt til at læse vilkårlige filer fra serveren og forårsage Denial-of-Service-angreb.
de kan dog også føre til kommandoudførelse på serveren, når visse betingelser er opfyldt. For eksempel, hvis PHP forventer:// indpakning er aktiveret på den målsårbare server, er det muligt at udføre vilkårlige kommandoer på serveren.
bemærk, at dette ikke er en udtømmende liste over sårbarheder, der kan føre til kommandoindsprøjtning, og der er flere andre sårbarheder, der kan føre til kommandoindsprøjtning, når de opfylder visse betingelser.
konklusion
det er tydeligt, at der er flere forskellige sårbarheder, der kan føre til kommandoudførelse på serveren. Udviklere skal være opmærksomme på disse kommandoinjektionssårbarheder på grund af det faktum, at disse sårbarheder har stor indflydelse, da de kan give fuld kontrol over den underliggende infrastruktur.
i de næste par artikler i denne serie vil vi dække nogle mere kommandoinjektionsrelaterede begreber som at identificere og udnytte blind kommandoinjektion.