Sprawa wygląda tak: włamali mi się na stronę na wordpresie. Dodała się jakaś wtyczka, jakiś motyw, sporo plików z core wordpress miało inne checksumy niż powinny mieć.
Panel plesk sam wykrył problemy, wprowadził kwarantannę, pokazał co się zmieniło przed i po.
Naprawiłem (chyba naprawiłem) większość rzeczy, aaaaale.
Widzę, że co chwilę ktoś się próbuje zalogować i coś wysyłają metodą POST. Ale strona jeszcze się trzyma. Na pewno nie jestem to ja.
Prosty sposób na przeczytanie co jest w tych wysyłanych danych - Szukaj
Stack: System debian(albo centos?), panel plesk, nginx, wordpress najnowszy
@koszotorobur Ty jesteś mądry gość, pomożesz?
@lubieplackijohn - miałem wir w pracy i widzę, że dużo mnie ominęło.
Pierwsze co, to trzeba monitorować ruch i od razu blokować adresy IP atakującego.
Jąk można odciąć serwer od przychodzącego internetu całkiem (co położy stronę) to polecam to zrobic i od razu uaktualnić system, WordPressa i wszystkie pluginy.
Jak da radę to postawić drugi serwer z najnowszym uaktualnionym systemem, na nim zainstalować najnowszego WordPressa z najnowszymi pluginami i tam przenieść stronę.
WordPress i jego pluginy są znane ze swojej dziurawiści i są często atakowane - nikomu nie polecam tego używać.
@koszotorobur no właśnie ja sobie przywracałem kopię sprzed ataku, a hakier przywracał sobie backdoora i tak się bawiliśmy od wczoraj xD
Niżej napisałem co według mnie rozwiązało problem
@entropy_ - cieszę się, że sobie poradziłeś - wygląda na to, że w jeden dzień nauczyłeś się więcej o zabezpieczaniu stronki na WordPressie niż przez całe życie
Niemniej myślę, że nie ominie Cie update wszystkiego by zminimalizować ilość dziur w swojej stronie.
Doinstaluj jakaś captche albo honeypota
@GazelkaFarelka tylko to chyba nie przez komenty, z tego co widzę to próbował uruchamiać to co sobie zainstalował w pluginach i dodał jakieś dziwne akcje do crona.
Nie wiem co zrobił, ale jak pierwszy raz przywróciłem kopię zapasową do zainfekował ponownie stronę swoim kodem w mniej niż 15min.
@entropy_ a na jakim serwisie hosting ?znajomy tez mial problemy z wordpresem ale podobno caly hosting mial atak i zainfekowano wiele plikow
@entropy_
dodał jakieś dziwne akcje do crona. - a jak tam uzyskal dostep ? to jest na wyzszym poziomie niz wordpress dostep do crona jest na poziomie admina hostingu
@bimberman mój vpn na ovh. Ogółem mam tam kilka stron i tylko ta ma problemy
@bimberman wp-cron, za duży skrót myślowy zrobiłem xD
Do hostingu na pewno nie ma dostępu.
plugin sam może generować zapytania nie musi być z zewnątrz
możesz utworzyć prosty log zbierający co jest w poście chyba cały ruch jest przez index.php
@bimberman ja nawet nie wiem co w google wpisać żeby to zrobić xD
@bimberman o właśnie czegoś takiego potrzebuję, dzięki
@entropy_ w sumie trzeba by poszukać jeszcze skąd wysyła post do logowania z jakiego IP, te informacje są w innej zmiennej potem takie IP można łatwo zablokować też w tym pliku index.php
https://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php
możesz sprawdzić co jest w tej zmiennej , ale potrzebujesz $_SERVER[‘REMOTE_ADDR’] aby znaleźć IP
tu jest taki najprostszy sposób trzeeba by wrzucić do tego pliku index.php pod pierwszym komentarzem
https://stackoverflow.com/questions/3718307/php-script-to-log-the-raw-data-of-a-post
@bimberman @GazelkaFarelka @lubieplackijohn Chuja się znam, ale napiszę co znalazłem:
Atakujący sprawdzał jakie jest konto administratora używając następującego sposobu:
-
Wchodził na https://adres.pl/?author=1 , jak można się domyślić user z id 1 to ja z uprawnieniami administratora. Tak poznawał login.
-
Chwilę później odwiedzał adres.pl/wp-admin robił nieznaną mi rzecz i przychodził do mnie za każdym razem mail z informacją o resecie hasła.
Zrobiłem taką regułę w nginxie:
if ($args ~ "^author=([0-9]*)") {
return 302 https://127.0.0.1:8080/?;
}
i od tej pory wszystkie próby logowania robi jako:
Users: array ( 0 => 'wwwadmin', )
ClientIP: 172.70.91.226
Wcześniej używał zawsze poprawnego loginu który jest inny niż wwwadmin
Czyli pewnie dalej mam dziurę na stronie ale skrypt nie umie nazwy użytkownika znaleźć xD
@entropy_ tak uzywwajac tego ?author=1 przekierowuje na author/login i poznal login, mogł sprawdzac ile jest autorów
?author=1
?author=2
?author=3
wordpress to chora platforma
a to znasz ?
twojastron.com/wp-json/ ?? moga pobrac cala zawartosc wordpressa wszystkie wpisy kategorie i mulimedia
@bimberman jak nie zna loginu to nie może się zalogować z jakiegoś powodu, ostatni mail ze zmianą hasła miałem o 4 rano i od 8 jak zrobiłem regułę nginxa próbował z 50 razy i zero efektu.
Ujebał sobie jeszcze otwierać robots.txt?kilkalosowychcyferek
Ale to już nie wiem po co.
@entropy_ jak masz jego ip to blokuj od razu
@bimberman ze 20 ma minimum
@entropy_ patrzyłeś do jakiego kraju należy ?
@bimberman tego nie umiem sprawdzić, znaczy google nic mi nie pokazywało na pierwszy strzał to nie szukałem dalej.
Ten co wyżej
172.70.91.226
172.68.65.139
172.71.242.124
@entropy_
tu możesz sprawdzić kto jest właścicielem adresu , zakres należy to cloudflare UK
twój hosting nie uzywa cloudflare ?
@bimberman używa
@entropy_ to upewnij się że to nie jest zakres twojego hostingu bo jak zablokujesz te IP może się okazać ze blokujesz własny hosting
w konsoli windowsa albo czego tam uzywasz ping twojadres.com aby zobaczyc jaki adres ip ma twoja strona
@bimberman na razie to nic nie blokowałem, poza tym co automatycznie fail2ban zrobił.
Znalazłem jeszcze takie coś w ustawieniach xD
@entropy_ nie wiem jak te ustawienia działają ale tutaj CF podaje że twój serwer otrzymuje ich IP a IP clienta który się łączy jest w innym miejscu
@bimberman jak będzie jeszcze kombinował to po prostu przestawię cloudflera na tunelowanie i gościa znajdę.
Ten modsecurity dość dobrze działa, sprowokowałem go żeby zablokował mnie i ma bardzo mało cierpliwości xD
Nawet nie wiedziałem, że to mam xDDD Ban na jednej stronie obcina dostęp do wszystkich na serku więc fajnie.
Zobaczymy jak teraz będzie to pracować. Wydaje mi się że najwięcej pomogło to bo od rana nie zabrał mi dostępu xDDD
Harden wordpress security nginx
https://gist.github.com/nfsarmento/57db5abba08b315b67f174cd178bea88
Borze, przecież pluginy wordpressa są jak sito, ja bym się bał na tym stronę stawiać. Połatałeś wszystkie pluginy i samego wordpressa?
@Fausto pierwszy raz mi się coś takiego zdarzyło.
Wszystko polatałem, zrobiłem trochę hardeningu i chyba będzie dobrze. Na razie typ się jeszcze nie dostał ponownie a od rana próbuje xD
@entropy_ ja bym jeszcze doradził - ograniczyć wtyczki do minimum, może są jakieś rzeczy bez których się obejdziesz, albo zrobisz sam w łatwy sposób.
@Fausto No co umiałem to poprawiłem, na razie się trzyma xD
@Fausto @bimberman @koszotorobur
Dziękuję za pomoc
@Fausto fakt te pluginy są jak pola minowe ale na tym polega potega wordpresa , chyba ze chcesz zmarnować pare tygodni aby samemu cos ulepić
@Fausto @bimberman @koszotorobur
Może to przypadek, ale słuchajcie co zrobiłem.
Boty latające mi po stronie odwiedzały specyficzne linki, zawsze ?add-to-cart=id było na końcu.
Plus milion prób logowania, no to na noc przestawiłem nginxa według tego poradnika
https://lord.re/en/posts/139-gzip-bomb-nginx/ i zacząłem im serwować 10gigabajtów skompresowanych zer xD
plus strona logowania
Nie wiem czy pomogło, ale dzisiaj zaczął logować się hasłem "F*uck you" xD
@entropy_ - ale, żeś go zrobił - super sposób
Powietrzna piąteczka
@entropy_ XD
W WP można natywnie włączyć dwuetapowe logowanie? Moze warto dodać kolejną ścianę zabezpieczenia.
Zaloguj się aby komentować