Alibaba Cloud descoperă cea mai recentă vulnerabilitate ThinkPHP v5

De Yong Chen

Exploatarea vulnerabilităților software este unul dintre pașii inițiali ai unui atac cibernetic. În școlile de inginerie, vă învață că remedierea unui defect în etapa de implementare este de 6,5 ori mai mare decât remedierea în etapa de proiectare1. Aplicând acest principiu „școlii de securitate cibernetică”, putem spune că blocarea unui atac în etapa de vulnerabilitate este de zeci de ori mai ieftină decât oprirea acestuia după ce un dispozitiv este compromis de un exploit.

În această postare de blog prezentăm o analiză a unei vulnerabilități detectate recent în cadrul ThinkPHP, care a expus 10% din toate site-urile web care îl utilizează la preluarea de la distanță. Postarea oferă o explicație detaliată a unui cod real utilizat de un atacator în încercarea de a exploata această vulnerabilitate, precum și recomandări precise despre cum să vă protejați împotriva acesteia (sugestie: aplicați soluția oficială! Altfel, obțineți ajutor de la Alibaba Cloud’s Threat Detection Serviciu).

Yohai Einav

Cercetător principal în securitate, SIL

Fundal

ThinkPHP este un cadru popular MVC orientat pe obiecte PHP, utilizat de multe site-uri de e-commerce, financiare și de jocuri online. Cadrul oferă suport pentru UTF-8, plugin-uri, acces-control-bazat pe roluri (RBCA), un motor de control șablon și baze de date multiple. O vulnerabilitate recentă în ThinkPHP v5, care a fost detectată de Alibaba Cloud, a permis atacatorilor să execute de la distanță comenzi pe sistemele care rulează cadrul și să provoace daune considerabile.

În timp ce o soluție oficială pentru această vulnerabilitate critică l a fost lansată pe 10 decembrie 2018, Alibaba Cloud Threat Detection Service (TDS), cunoscut anterior ca Situational Awareness Service ( SAS), a detectat încă mai multe atacuri care exploatează vulnerabilitatea după remediere. Pentru a se asigura că chiar și utilizatorii care nu își actualizează sistemele în timp util în cloud sunt protejați de vulnerabilitate, Alibaba Cloud TDS oferă un serviciu de alarmă de atac, care folosește firewall-ul aplicației sale web (WAF) pentru a bloca în mod sincron vulnerabilitatea, și protejați toți clienții de acesta.

Următoarele oferă o analiză cuprinzătoare a contextului, logicii și comportamentului vulnerabilității, împreună cu o analiză de caz din viața reală.

Analiza vulnerabilității

Cadrul ThinkPHP v5 nu are suficientă verificare de securitate a numelor controlerului, ceea ce permite atacatorului să construiască o cerere specifică în cazul în care aplicarea rutare este dezactivată. Aceasta înseamnă că atacatorul poate rula codul de la distanță și poate obține permisiuni de server.

Versiunile afectate de vulnerabilitate

Versiunile ThinkPHP v5.0 anterioare versiunii 5.0.23

Versiunile ThinkPHP v5.1 anterioare versiunii 5.1.31

Cum funcționează vulnerabilitatea

Cu o comparație cu instrucțiunile oficiale de remediere lansate de ThinkPHP, am analizat codul din /thinkphp/library/think/Route.php unde ThinkPHP planifică analiza rutei.

Funcția „parseUrlPath” apelează funcția cale și analizează informațiile de rutare în „pathinfo”. Adresa URL din funcție este împărțită prin bare (/) fără a aplica niciun filtru.

După căutarea „pathinfo”, constatăm că //thinkphp/library/think/Request.php definește „pathinfo” funcție care obține adresa URL.

Un atacator poate exploata valoarea „$ _GET” pentru injecția comenzii: parametrul „var_pathinfo” este „s”, unde poate fi creată funcția pentru injecția comenzii.

Am analizat, de asemenea, codul app.php pentru planificarea rutei, care operează controlerul prin variabila „controler”, instanțiază controlerul și urmărește metoda controlerului.

În //thinkphp/library/think/Loader.php , controlerul apelează & quot; parseModuleAndClass & quot; a analiza & quot; $ nume & quot; și instanțiați „clasa $”. Când & quot; $ nume & quot; se potrivește cu o bară inversă (\), este utilizată ca metodă și clasă în & quot; strpos ($ nume, & # x27; \ & # x27;) & quot ;. Un atacator poate construi și instanția orice metodă care trebuie apelată și poate crea „clasa clasei de nume”. clasă pentru a executa „call_user_func_array” metoda.


Reproducerea vulnerabilității

Am reprodus efectul în ThinkPHP v5.0.22, care conține și vulnerabilitatea la executarea codului la distanță. Următoarea figură arată că putem rula comanda „ls” pe o gazdă infectată cu vulnerabilitate pentru a obține detalii despre toate fișierele din director:

Cazul real al unui atac de vulnerabilitate

Începând cu 11 decembrie 2018, Alibaba Cloud Threat Detection Service (TDS) a constatat că vulnerabilitatea a fost exploatată în mai multe moduri, mai ales sub formă de web-shells, „un script care poate fi încărcat pe un server web pentru permite administrarea la distanță a mașinii ”(https://www.us-cert.gov/ncas/alerts/TA15-314A).

Următorul este un rezumat al tuturor metodelor web shell existente și selectați următoarele metode populare:

1. Exploatați vulnerabilitatea, executați de la distanță comenzile de descărcare.

Exemplu:

Următoarea captură de ecran arată lista de funcții a acestui webshell:

2. Descărcați webshell de la distanță utilizând funcțiile file_get_contents și file_put_contents.

Exemplu:

Următoarea captură de ecran arată funcțiile webshell-ului:

3. Puneți o pagină web cu o linie utilizând funcția file_put_contents.

Exemplu:

Tendințele impactului și atacurilor vulnerabilității

Analiza noastră a constatat că aproximativ 10% din toate site-urile care utilizează ThinkPHP la nivel mondial au fost expuse acestei vulnerabilități. Alibaba Cloud TDS a înregistrat o creștere bruscă a numărului de site-uri web atacate din 4 decembrie 2018 până în 11 decembrie 2018.


Graficul de mai sus arată creșterea bruscă a numărului de site-uri web atacate, indicând faptul că vulnerabilitatea este exploatată automat la scară largă la scurt timp după ce a fost expusă.

Pe baza experienței anterioare a echipei cu exploatarea vulnerabilităților, credem că această vulnerabilitate poate fi exploatată într-o varietate de moduri suplimentare. Prin urmare, se recomandă ca toate întreprinderile să își actualizeze cadrul ThinkPHP la cea mai recentă versiune cât mai curând posibil pentru a-și proteja site-urile web împotriva atacurilor și a preveni compromiterea serverelor lor.

Recomandări de securitate

Experții în securitate Alibaba Cloud vă reamintesc că ThinkPHP v5.0.23 și v5.1.31 sunt versiuni sigure și vă recomandă să actualizați cadrul ThinkPHP la cea mai recentă versiune cât mai curând posibil pentru a remedia vulnerabilitatea. Dacă nu v-ați actualizat prompt cadrul ThinkPHP, vă rugăm să vă abonați la Alibaba Cloud Threat Detection Service (TDS) și Web Application Firewall (WAF) pentru a vă apăra împotriva atacurilor în timp util.

Pentru mai multe informații despre această vulnerabilitate, consultați https://blog.thinkphp.cn/869075.

Referință

[1] https://www.researchgate.net/figure/IBM-System-Science-Institute-Relative-Cost-of-Fixing-Defects_fig1_255965523

Referință: https: //www.alibabacloud.com/blog/alibaba-cloud-discovers-the-latest-thinkphp-v5-vulnerability_594307? spm = a2c41.12450928.0.0