Commando-injectie
Eén puntkomma in een formulierveld en de server voert uw opdracht uit.
Wat is Commando-injectie?
Commando-injectie verandert één webverzoek in code-uitvoering onder de eigen identiteit van de server. De applicatie plakt gebruikersinvoer in een opdrachtreeks en geeft deze door aan een shell, die elk speciaal teken als syntaxis leest. U voegt een puntkomma toe aan het hostveld van een netwerkdiagnosetool, voert een tweede opdracht uit en leest het omgevingsbestand terug met het databasewachtwoord erin. Vervolgens vervang je de aaneengeschakelde tekenreeks door execFile , zodat de host één enkel argument blijft, en zie je waarom het filteren van gevaarlijke tekens altijd verliest.
Wat je leert in Commando-injectie
- Identificeer het shell-out-patroon: elke gebruikersinvoer die in een opdrachtreeks wordt geplakt en wordt doorgegeven aan een shell (exec, system, sh -c) is een kandidaat voor opdrachtinjectie
- Herken hoe een shell-scheidingsteken, zoals een puntkomma, één commando in twee verandert wanneer invoer niet buiten de shell wordt gehouden
- Pas de oplossing voor de argumentenlijst toe: execFile of spawn met een argumentarray, zodat het programma direct wordt uitgevoerd en de shell-tekens in de invoer letterlijk blijven
- Begrijp waarom tekens als ; en | mislukt (andere scheidingstekens, coderingen en vervangingen omzeilen dit)
- Verklein de explosieradius met de minste bevoegdheden en door geheimen buiten de bestanden te houden die een werknemer kan lezen
Commando-injectie — Trainingsstappen
-
Het diagnostisch hulpmiddel
Trelvane beheert een hostingplatform en biedt een openbare Looking Glass: plak een host en de edge-servers van Trelvane pingen deze voor u en geven de onbewerkte uitvoer terug. Handig voor klanten die controleren of een server bereikbaar is. Bob opent het om te zien hoe het zich gedraagt voordat hij het aanraakt.
-
Het voert een echt commando uit
Eén regel op die pagina is de hele reden waarom Bob geïnteresseerd is.
-
Gebruik de functie
Kijk hoe het gereedschap zich normaal gedraagt. Ping een gewone host zodat de browser het verzoek vastlegt dat de pagina verzendt.
-
Zoek het verzoek
Het verzoek ging uit en de browser registreerde het. Open het netwerkpaneel en lees waar de pagina het naartoe heeft gestuurd en hoe de host reist.
-
Voeg een tweede commando toe
Bob raakt het formulier nooit meer aan. Hij bewerkt het vastgelegde verzoek in het netwerkpaneel en herschrijft de host -waarde: een loopback-adres, een puntkomma en vervolgens twee eigen opdrachten. Als de server zijn ping-commando opbouwt door de waarde erin te plakken, beëindigt de puntkomma de ping en worden de commando's van Bob er direct achteraan uitgevoerd. Hij koppelt id om te zien als wie de server draait en een cat van het omgevingsbestand van de werknemer, waar hostingagenten hun databasewachtwoord en cloudsleutels bewaren.
-
De sleutels zijn weg
De ping is uitgevoerd en er verschijnen lijnen die ping nooit produceert.
-
Kennis check
Je hebt zojuist gezien hoe een ping-tool de opdrachten van de aanvaller uitvoerde en de geheimen van de server lekte. Leg vast waarom.
-
De waarschuwing
U bent eigenaar van de Looking Glass-service van Trelvane. Van de ene op de andere dag merkte monitoring op dat de diagnosewerker iets deed wat een ping-tool nooit zou moeten doen: shell-opdrachten uitvoeren en zijn eigen geheimenbestand lezen. Security Operations heeft u de details per e-mail gestuurd.
-
Open de handler
Het ping-eindpunt wordt bediend door ping.js . Open het en kijk hoe het de opdracht uitvoert.
-
Zoek de fout
De handler plakt de hostwaarde in een opdrachtreeks en geeft de hele reeks door aan een shell om uit te voeren.
Dekking van beveiligingsframeworks
OWASP Top 10
- A05:2025 Injection
- A03:2021 Injection
CWE
- CWE-78 Improper Neutralization of Special Elements used in an OS Command
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security