Problém jsou admini, co je nenasadí.
Souhlasím. Realistický admin, který spočítá, o co všechno by se měl starat a co všechno to stojí, ale zakázku nezíská. Zákazník o rizicích nechce slyšet (admin je za potížistu), ale když na ně dojde, tak si každý představuje, že jsou k dispozici kapacity a peníze na čas, co oprava / údržba stojí.
Zajímalo by mě, kolik zadavatelů z těch desetitisíců instalací platí byť i jen stokorunu měsíčně za nějakou prevenci.
David Grudl uveřejnil rychlí fix v php, který stačí zavolit na existující instalaci, https://gist.github.com/dg/be0f26b31be15a2f1b1208a1714bf415, případně tu drobnou úpravu lze udělat přímo v kódu ručně. Pouze ošetřuje tenhle stav, aby se callback nezavolal.
Existuje také možnost tyhle url odchytnout na proxy na vstupu a nedovolit jejich zavolání. Tak jsme to my ošetřili obecně v infrastruktuře my u velkých firem. Stačí chytat argumenty callback v kombinací s cmd. V callbacku nesmí být věci jako shell_exec a další OS funkce.
Chyba se již zneužívá.
Zranitelnost sa aktivne zneuziva. Mne cez nu niekto z Ciny s par servermi z OVH zneprijemnil jednu noc a dalsi den.
Typicky zacinaju cez nieco ako toto
example.com/nette.micro/?callback=shell_exec&cmd=**secret shellcode format**
Ked to chcete blokovat, tak je na to kopec updaterov alebo proste bloknite /nette.micro. To sa da spravit centralne a neviem, ze by sa handler priamo pouzival.
Potom nezabudnite odstranit backdoory. Utocnici mi ich nahrali vsade kde sa dostali, u niektorych editovali aj timestampy a mnohe si tam iba nahrali a nikdy k nim nepristupili. Hlada sa to zle, ked si vsetko neverzujete; pouzivaju aj nazvy ako wp-login.php a hlavicku to ma ako skutocny wp-login.
Kdyz lze napsat robota co hackne server mohlo by jit i napsat robota co to pres tu diru fixne.
Pak vzit db domen CZ od CZ NICu a projet je a fixnout je.
Kdo na to ma cas at se prihlasi :D
Nebo nemame nejakou tu cyberarmadu Nukib? Ze by se teda angazovali a zaridili to kdyz jde o bezpecnost naseho cyber prostoru? Zkusim jim napsat...
Zní to jako dobrý nápad, akorát to nefunguje. Ten fix totiž pravděpodobně na spoustě stránek potká nějakou situaci se kterou nepočítal a totálně to tam rozdrbe. A kdo za to bude moct?
Už staré počítačové viry byly často ničivější než jejich autor zamýšlel, protože narazily na situaci se kterou se nepočítalo.
Nehas, co tě nepálí. V nejlepším případě to nikdo neocení.
grep -cr nette.micro /var/log/www
...:1585
...:4874
...:805
...
:-)
Tisíce úspěšných volání, většina začíná několika pokusy na které dostane HTTP 301, potom už 200. Buď nahraje něco spustitelného (od prostých PHP skriptů přes různou steganografii typu "php v png" až po regulérní Windows PE EXE soubory), nebo přes můj server provádí ten stejný útok proti serveru někoho jiného (do cmd parametru dá curl ...).
Hmm a co takhle klasický hardening?
- spustit něco v chrootu kde není nic (ani /bin/sh, natož pak curl) jde dost špatně.
- uploadnout soubor někam kam nemá práva zápisu taky moc nejde
- mount parametr noexec je taky príma
- drop do OUTPUTU pro uid pod kterým běží php-fpm (vyjma whitelistu) taky zabrání šíření nákazy
Netvrdím že je to univerzální lék, ale šanci na úspěšné exploitování (zvlášť necílenými útoky) to minimalizuje docela dobře.
Ano, chápu. Reagoval jste na komentář, kde bylo napsaná spuštění PHP, spuštění PHP, Windows binárka. Před ničím z toho vás noexec neochrání. Před uploadem binárky (což jste napsal vy teď) vás to také neochrání.
Ta poznámka spíš mířila na to, že nemá smysl psát do diskuse rady nalezené někde na internetu, když moc netušíte, o co jde.