Jutro je krenulo jako kaoticno, jedna klijentica mi je pisala na Viber javljajuci da njen web shop ne fukcionira. To je bilo cudno i odmah sam pokrenuo istragu.
Prije nego nastavim sa daljnjim pisanje o tom slucaju bitno je da naglasi da sam dan prije primjetio da su mi sve WordPress web stranice na jupiter serveru na home page-u prikazivale samo white screen. Vec jucer sam imao cudan osjecaj po pitanju toga, jer kada se dogodi na jednoj stranici mozes biti slucajno, a kada se dogodi na 6 stranica onda je vec neka ozbiljnija situacija. Logovo sam se u admin panel jedne od stranica i pokrenuo full wp update. To je rjesilo problem. Tako sam odradio i za ostale i sve je normalno radilo. Ili sam bar mislio da je tako.
Sada se vracamo na pocetni slucaj. Pa da krenemo. Prvo laptop koji koristim za logiranje na servere putem SSH-a nije bio s mnom. Nego sam kod kuce imao stari MacBook Pro sa pocetka 2015 godine, 10 godina stara masina, ali radi kao sat, zahvaljujuci Omarchy Arch Linuxu koji je instaliran na njemu (sorry Apple). Drugi korak je bio da SSH privatni kljuc sa BitWarden-a prebaci na ovu masinu da se mogu logirati na server, tako sam i odradio. Islo je sve glatko dok nisam provjerio sadrzaj foldera od web stranice klijentice koja se javila. Odmah sam primjetio da nesto ne stima u root direktoriju web stranice su bila 3 fajla koja ja sigurno nisam tu ostavio.
Lista fajlova:
- txets.php
- wp-blog-header.php
- wp-cron.php
Neovimom sa otvorio prvi fajl, i imao sam sta i da vidim, fajl je bio potpuno obfusciran, nista se ne moze procitati. Sto u 99% slucajeva znaci da je doslo prodora u server i da je neko ostavio zarazene fajlove tu. Hladan znoj me oblio. Znajuci da je citav sistem kompromitovan i da nema nacina da znam sta je sve upload-ovano na server i gdje. Ostalo je samo da zakupim novi server ili ovaj potpuno reinstaliram. Sam sebi sam govorio mora se je samo shell skritpu i uradio upload ovih fajlova.
Zakupio sam novi server putem Hetzner-a i krenuo sa migracijom. Izmjenio sam DNS record i A uputio na novi IP. Na prvom sam serveru napravio karidnalnu gresku i nisam pravio zaseban user za svaku web stranica nego sam koristio jedan main user i samo pravio foldere i bas zbog toga sad moram migrirati 6 stranica umjesto jedne. Da bi sebi olaksao i ubrzao posao jer klijenti ne mogu cekati 7 dana dok ja rucno migriram sve i upisem milion komandi u linux shell instalirao sam cloudpanel, znam da ima i drugih opcija ali ovo je opciju koju sam prije koristio, jednostavna i je i svidja mi se.
Nakon instalacije panela dodao sam novi WP website i krenuo sa migracijom. Prvo sam krenuo da radim download uploads foldera na lokalni PC i to je bila druga greska, jer upload brzina kod mog ISP-a je brutalno niska nesto poput 4mbps uzas. Otisao sam obaviti neke poslove nevezane za to i vratio se sa novom idejom zasto ne koristiti SCP da direktno posaljem fajlove sa jednog servera na drugi. Tako sam i radio scp local remote i u par minuta svi su fajlovi bili prebaceni. Onda sam otvorio admin panel i instalirao sve pluginove, sve je radilo odlicno, dok nisam pokusao da jedan plugin lokalno putem upload dugmena, izbacilo je gresku da primisije foldera nisu uredne. Nisam znao da kada uradim scp foldera da se prenose i primisije i sve ostalo vezano za taj folder, uradio sam ssh i izmjenio primisije koristeci chown, problem rjesen. Nakon toga sam ustimao sve da radi kako treba i uradio migraciju i drugih wp sajtova.
Eto tako sam ja danas proveo vikend koji sam trebao da koristim za porodicu i opustanje, ali kako god bar sam nesto novo naucio.