- Inleiding
- Wat is command injection?
- Why are command injection vulnerabilities dangerous?
- kwetsbaarheden die kunnen leiden tot het uitvoeren van opdrachten
- willekeurige commando-injectie
- willekeurige bestandsuploads
- onveilige serialisatie
- injectie van sjablonen aan de serverzijde
- XML externe entiteit injectie
- conclusie
Inleiding
kwetsbaarheden in Opdrachtinjectie zijn een van de gevaarlijkste kwetsbaarheden op het web. Veel security testers en premiejagers streven ernaar om commando-injectie kwetsbaarheden te vinden als gevolg van de impact die ze kunnen maken op de doeltoepassing.
dit artikel geeft een overzicht van kwetsbaarheden in opdrachtinjectie, samen met een inleiding tot verschillende kwetsbaarheden die uiteindelijk tot opdrachtinjectie kunnen leiden.
Wat is command injection?
Command injection is een type kwetsbaarheid op het web waarmee aanvallers willekeurige besturingssysteemcommando ‘ s kunnen uitvoeren op de server, waar de toepassing draait. Commando-injectie kwetsbaarheden optreden wanneer de toepassingen gebruik maken van shell commando ’s of scripts die shell commando’ s uit te voeren op de achtergrond.
laten we eens kijken naar de volgende URL van een toepassing, die base64-codering van gebruikersinvoer uitvoert.
http://target-site.com/encode.php?text=helloworld
deze gebruikersinvoer wordt doorgegeven als een get parameter aan de codering.php bestand.
het volgende is de broncode van encode.php:
<?php
$input = $_GET;
systeem (“echo-n”. $input.”/base64″);
?>
zoals we kunnen zien uit het voorgaande codefragment, wordt de input van de gebruiker doorgegeven aan de functie php system (), die wordt gebruikt om commando ‘ s van het besturingssysteem uit te voeren in PHP.
als een gebruiker een systeemcommando aan de invoer toevoegt, zal het worden uitgevoerd als een besturingssysteem commando, dat er zo uitziet:
http://target-site.com/encode.php?text=test;id
het volgende is het antwoord teruggestuurd naar de gebruiker:
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?
de commando-injectie klasse van kwetsbaarheden wordt beschouwd als een van de meest gevaarlijke web kwetsbaarheden, omdat ze de controle over het onderliggende besturingssysteem aan een aanvaller. Deze controle kan op verschillende manieren worden gebruikt, waaronder zijwaartse beweging door het interne netwerk met behulp van het vertrouwen dat de doelserver heeft met andere systemen op het netwerk.
kwetsbaarheden die kunnen leiden tot het uitvoeren van opdrachten
terwijl kwetsbaarheden bij het uitvoeren van opdrachten optreden wanneer de kwetsbare toepassing de eindgebruiker in staat stelt de standaardfunctionaliteit van de toepassing uit te breiden en systeemopdrachten uit te voeren, is het ook mogelijk om opdrachten uit te voeren via de code van de toepassing. Dit is algemeen bekend als code uitvoering. Zelfs wanneer er een code uitvoering kwetsbaarheid, het uiteindelijke doel is om willekeurige systeem commando ‘ s uit te voeren door het. Gezien het feit dat, laten we bespreken een aantal van de kwetsbaarheden die kunnen leiden tot opdracht uitvoering door middel van opdracht injectie of code uitvoering.
dit zijn enkele van de kwetsbaarheden die uiteindelijk kunnen leiden tot command injection aanvallen.
willekeurige commando-injectie
zoals we in ons vorige voorbeeld hebben besproken, is het mogelijk dat applicaties toepassingen hebben die direct willekeurige systeemcommando ‘ s van de gebruiker ontvangen en deze uitvoeren op de onderliggende host. Dit is een klasse voorbeeld van commando injectie kwetsbaarheid.
willekeurige bestandsuploads
wanneer toepassingen gebruikers toestaan om bestanden met willekeurige bestandsextensies te uploaden, kan dit leiden tot Commando-injectie wanneer deze geüploade bestanden binnen de webroot worden geplaatst. Dit is nog een andere veel voorkomende manier webapplicaties kunnen kwetsbaar worden voor opdracht injectie.
onveilige serialisatie
naast de standaard commando-injectie kwetsbaarheden, kan willekeurige commando-uitvoering ook mogelijk zijn met behulp van andere kwetsbaarheden zoals onveilige deserialisatie. Dit maakt gebruik van het feit dat de server-side code deserialiseert de serialized inhoud doorgegeven door de gebruiker, zonder het goed te valideren. Hoewel dit algemeen bekend staat als onveilige serialisatie klasse van kwetsbaarheden, leidt het uiteindelijk tot opdracht injectie als de doeltoepassing voldoet aan bepaalde eisen, zoals geschikte gadgets beschikbaar zijn in de klasse pad.
injectie van sjablonen aan de serverzijde
wanneer webtoepassingen gebruik maken van templating-technologieën aan de serverzijde, zoals Jinja2 of Twig, om dynamische HTML-reacties te genereren, is het mogelijk om injectie van sjablonen aan de serverzijde te hebben. Ssti kwetsbaarheden optreden wanneer gebruikersinvoer is ingebed in een sjabloon op een onveilige manier en het resulteert in het uitvoeren van externe code op de server.
XML externe entiteit injectie
XML externe entiteit kwetsbaarheid is een ander type van kwetsbaarheid, die optreedt tegen toepassingen die door de gebruiker gecontroleerde XML invoer te ontleden met behulp van een zwak geconfigureerde XML parser. XXE kwetsbaarheden leiden meestal tot het lezen van willekeurige bestanden van de server en het veroorzaken van Denial-of-Service aanvallen.
echter, ze kunnen ook leiden tot het uitvoeren van opdrachten op de server wanneer aan bepaalde voorwaarden wordt voldaan. Bijvoorbeeld, als PHP expect: / / wrapper is ingeschakeld op de target vulnerable server, is het mogelijk om willekeurige commando ‘ s uit te voeren op de server.
dit is geen uitputtende lijst van kwetsbaarheden die kunnen leiden tot Commando-injectie en er zijn verschillende andere kwetsbaarheden die kunnen leiden tot Commando-injectie wanneer ze aan bepaalde voorwaarden voldoen.
conclusie
het is duidelijk dat er verschillende kwetsbaarheden zijn die kunnen leiden tot het uitvoeren van opdrachten op de server. Ontwikkelaars moeten zich bewust zijn van deze commando-injectie kwetsbaarheden te wijten aan het feit dat deze kwetsbaarheden zijn van grote impact, omdat ze volledige controle over de onderliggende infrastructuur kunnen geven.
In de volgende artikelen van deze serie zullen we enkele meer Commando injectie gerelateerde concepten behandelen, zoals het identificeren en exploiteren van blind Commando injectie.