Introduksjon
Sikkerhetsproblemer Med Kommandoinjeksjon er en av de farligste sikkerhetsproblemene på nettet. Mange sikkerhetstestere og dusørjegere tar sikte på å finne kommandoinjeksjonssårbarheter på grunn av virkningen de kan skape på målprogrammet.
denne artikkelen vil gi en oversikt over sårbarheter for kommandoinjeksjon, sammen med en introduksjon til ulike sårbarheter som til slutt kan føre til kommandoinjeksjon.
Hva er kommandoinjeksjon?
Command injection Er en type web sårbarhet som gjør det mulig for angripere å utføre vilkårlig operativsystemkommandoer på serveren, der programmet kjører. Command injection sårbarheter oppstår når programmene gjør bruk av shell kommandoer eller skript som utfører shell kommandoer i bakgrunnen.
la oss vurdere FØLGENDE URL til et program, som utfører base64-koding av brukerinngang.
http://target-site.com/encode.php?text=helloworld
denne brukerinngangen sendes som en get-parameter til koden.php-fil.
følgende er kildekoden til kode.php:
<?php
$input= $ _GET;
system («echo-n». $innspill.»/base64″»);
?>
som vi kan se fra den foregående kodebiten, sendes brukerinngangen til php system () – funksjonen, som brukes til å utføre operativsystemkommandoer I PHP.
hvis en bruker legger til en systemkommando i inngangen, vil den bli utført som en operativsystemkommando, som ser slik ut:
http://target-site.com/encode.php?text=test;id
følgende er svaret returnert til brukeren:
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?
command injection class of vulnerabilities er ansett som en av de farligste web sårbarheter fordi de gir kontroll på det underliggende operativsystemet til en angriper. Denne kontrollen kan brukes på flere forskjellige måter, inkludert sideveis bevegelse gjennom det interne nettverket ved hjelp av tilliten målserveren har med andre systemer på nettverket.
Sårbarheter som kan føre til kommandoutførelse
mens kommandoutførelsessår oppstår når det sårbare programmet tillater sluttbrukeren å utvide programmets standardfunksjonalitet og utføre systemkommandoer, er det også mulig å utføre kommandoer gjennom programmets kode. Dette er kjent som kjøring av kode. Selv når det er et sikkerhetsproblem med kodeutførelse, er sluttmålet å utføre vilkårlig systemkommandoer gjennom den. Med tanke på at, la oss diskutere noen av sårbarhetene som kan føre til kommandoutførelse gjennom kommandoinjeksjon eller kodeutførelse.
følgende er noen av sikkerhetsproblemene som til slutt kan føre til kommandoinjeksjonsangrep.
Vilkårlig kommandoinjeksjon
som vi diskuterte i vårt tidligere eksempel, er det mulig for applikasjoner å ha applikasjoner som mottar vilkårlig systemkommandoer fra brukeren direkte og utfører dem på den underliggende verten. Dette er et eksempel på kommandoinjeksjonssårbarhet.
Vilkårlig filopplasting
når applikasjoner tillater brukere å laste opp filer med vilkårlige filtyper, kan det føre til kommandoinjeksjon når disse opplastede filene plasseres i webroot. Dette er enda en vanlig måte webapplikasjoner kan bli sårbare for kommandoinjeksjon.
usikker serialisering
bortsett fra standard kommandoinjeksjonssårbarheter, kan vilkårlig kommandoutførelse også være mulig ved hjelp av andre sårbarheter som usikker deserialisering. Dette utnytter det faktum at koden på serversiden deserialiserer det serialiserte innholdet som brukeren sender, uten å validere det riktig. Selv om dette er kjent som usikker serialiseringsklasse av sårbarheter, fører det til slutt til kommandoinjeksjon hvis målprogrammet oppfyller visse krav, for eksempel at passende gadgets er tilgjengelige i klassebanen.
Server-side mal injeksjon
når webapplikasjoner bruker server-side templating teknologier som Jinja2 eller Twig for å generere dynamiske HTML svar, er det mulig å ha server-side mal injeksjon. Ssti sårbarheter oppstår når brukerinndata er innebygd i en mal på en usikker måte, og det resulterer i ekstern kjøring av kode på serveren.
XML ekstern enhet injeksjon
xml ekstern enhet sårbarhet er en annen type sårbarhet, som oppstår mot programmer som analyserer brukerstyrt XML-inngang ved hjelp av en svakt konfigurert XML-parser. XXE sårbarheter fører vanligvis til å lese vilkårlige filer fra serveren og forårsake Tjenestenektangrep.
de kan imidlertid også føre til kommandoutførelse på serveren når visse betingelser er oppfylt. FOR eksempel, HVIS PHP forventer: / / wrapper er aktivert på målet sårbar server, er det mulig å utføre vilkårlig kommandoer på serveren.
vær oppmerksom på at dette ikke er en uttømmende liste over sårbarheter som kan føre til kommandoinjeksjon, og det er flere andre sårbarheter som kan føre til kommandoinjeksjon når de oppfyller visse betingelser.
Konklusjon
det er tydelig at det er flere forskjellige sårbarheter som kan føre til kommandoutførelse på serveren. Utviklere må være klar over disse kommando injeksjon sårbarheter på grunn av det faktum at disse sårbarhetene er av stor innvirkning, som de kan gi full kontroll på den underliggende infrastrukturen.
i de neste artiklene i denne serien vil vi dekke noen flere kommandoinjeksjonsrelaterte begreper som å identifisere og utnytte blind kommandoinjeksjon.