Mitkä ovat Command Injection haavoittuvuudet?

Johdanto

komennon pistohaavoittuvuudet ovat yksi vaarallisimmista verkkohaavoittuvuuksista. Monet tietoturvatestaajat ja palkkionmetsästäjät pyrkivät löytämään command injection-haavoittuvuuksia, koska ne voivat vaikuttaa kohdesovellukseen.

tämä artikkeli antaa yleiskuvan command injection-haavoittuvuuksista sekä johdannon erilaisiin haavoittuvuuksiin, jotka voivat lopulta johtaa command injection-haavoittuvuuteen.

mikä on command injection?

Command injection on web-haavoittuvuuden tyyppi, jonka avulla hyökkääjät voivat suorittaa mielivaltaisia käyttöjärjestelmän komentoja palvelimella, jossa sovellus on käynnissä. Komento injection haavoittuvuuksia syntyy, kun sovellukset käyttävät komentotulkin komentoja tai skriptejä, jotka suorittavat komentotulkin komentoja taustalla.

tarkastellaan seuraavaa sovelluksen URL-osoitetta, joka suorittaa Base64-koodauksen käyttäjän syötteelle.

http://target-site.com/encode.php?text=helloworld

tämä käyttäjän syöte välitetään get-parametrina koodiin.php-tiedosto.

seuraava on koodauksen lähdekoodi.php:

<?php

$input=$_GET;

systeemi (”echo-n”. $tulo.”/base64″);

?>

kuten voimme huomata edellisestä koodinpätkästä, käyttäjän tulo siirretään php system () – funktiolle, jota käytetään käyttöjärjestelmän komentojen suorittamiseen PHP: ssä.

jos käyttäjä liittää järjestelmään komennon, se suoritetaan käyttöjärjestelmäkomentona, joka näyttää tältä:

http://target-site.com/encode.php?text=test;id

Seuraavassa on käyttäjälle palautettu vastaus:

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?

haavoittuvuuksien komentoruiskuluokkaa pidetään yhtenä vaarallisimmista web-haavoittuvuuksista, koska ne antavat taustalla olevan käyttöjärjestelmän hallinnan hyökkääjälle. Tätä ohjausta voidaan käyttää useilla eri tavoilla, mukaan lukien sivuttaisliike sisäisen verkon kautta käyttäen kohdepalvelimen luottamusta muihin verkon järjestelmiin.

haavoittuvuudet, jotka voivat johtaa komentojen suorittamiseen

vaikka komentojen suoritushaavoittuvuuksia esiintyy, kun haavoittuva sovellus antaa loppukäyttäjälle mahdollisuuden laajentaa sovelluksen oletustoimintoa ja suorittaa järjestelmäkomentoja, on myös mahdollista suorittaa komentoja sovelluksen koodin kautta. Tätä kutsutaan yleisesti koodin suoritukseksi. Vaikka on olemassa koodin suorittamisen haavoittuvuus, päätavoite on suorittaa mielivaltaisia järjestelmän komentoja sen kautta. Ottaen huomioon, että, katsotaanpa keskustella joitakin haavoittuvuuksia, jotka voivat johtaa komennon suorittamisen kautta komento injektio tai koodin suorittamisen.

Seuraavassa on joitakin haavoittuvuuksia, jotka voivat lopulta johtaa komentojensiirtohyökkäyksiin.

mielivaltaisen käskyn injektio

kuten edellisessä esimerkissämme puhuimme, on mahdollista, että sovelluksissa on sovelluksia, jotka vastaanottavat mielivaltaisia järjestelmäkomentoja käyttäjältä suoraan ja suorittavat ne taustalla olevalla palvelimella. Tämä on luokkaesimerkki command injection-haavoittuvuudesta.

mielivaltaiset tiedostolataukset

kun sovellukset sallivat käyttäjien ladata tiedostoja mielivaltaisilla tiedostopäätteillä, se voi johtaa komennon syöttämiseen, kun nämä ladatut tiedostot sijoitetaan webrootiin. Tämä on vielä yksi yleinen tapa web-sovellukset voivat tulla alttiita komento injektio.

epävarma sarjallistaminen

tavallisten komentoruiskuhaavoittuvuuksien lisäksi mielivaltainen komentojen suoritus voi olla mahdollista myös muiden haavoittuvuuksien, kuten turvattoman deserialisoinnin, avulla. Tämä hyödyntää sitä tosiasiaa, että palvelinpuolen koodi deserializes the serialized content passed by the user, vahvistamatta sitä oikein. Vaikka tämä on yleisesti tunnettu epävarma serialization Luokka haavoittuvuuksia, se lopulta johtaa komento injektio, jos kohdesovellus täyttää tietyt vaatimukset, kuten asianmukaiset vempaimia on saatavilla luokan polku.

palvelinpuolen template injection

kun verkkosovellukset käyttävät palvelinpuolen templatointitekniikoita, kuten Jinja2 tai Twig, dynaamisten HTML-vasteiden tuottamiseen, on mahdollista saada palvelinpuolen template injection. SSTI haavoittuvuuksia esiintyy, kun käyttäjän syöte on upotettu malliin vaarallisella tavalla ja se johtaa koodin etätoteutukseen palvelimella.

XML external entity injection

XML external entity-haavoittuvuus on toinen haavoittuvuuden tyyppi, joka esiintyy sovelluksia vastaan, jotka jäsentävät käyttäjän ohjaamaa XML-syöttöä heikosti konfiguroidulla XML-jäsentimellä. XXE haavoittuvuudet johtavat yleensä mielivaltaisten tiedostojen lukemiseen palvelimelta ja aiheuttavat palvelunestohyökkäyksiä.

ne voivat kuitenkin johtaa myös komentojen suorittamiseen palvelimella tiettyjen ehtojen täyttyessä. Jos esimerkiksi PHP expect:/ / wrapper on käytössä target-haavoittuvassa palvelimessa, on mahdollista suorittaa mielivaltaisia komentoja palvelimella.

huomaa, että tämä ei ole tyhjentävä luettelo haavoittuvuuksista, jotka voivat johtaa komennon syöttämiseen, ja on olemassa useita muita haavoittuvuuksia, jotka voivat johtaa komennon syöttämiseen, kun ne täyttävät tietyt ehdot.

johtopäätös

on ilmeistä, että on olemassa useita erilaisia haavoittuvuuksia, jotka voivat johtaa komentojen suorittamiseen palvelimella. Kehittäjien on oltava tietoisia näistä command injection-haavoittuvuuksista, koska nämä haavoittuvuudet ovat erittäin vaikuttavia, koska ne voivat antaa täyden kontrollin taustalla olevaan infrastruktuuriin.

tämän sarjan seuraavissa artikkeleissa käsitellään enemmän komentojännitteeseen liittyviä käsitteitä, kuten sokean komentojännityksen tunnistamista ja hyödyntämistä.

Vastaa

Sähköpostiosoitettasi ei julkaista.

More: