#hejtopytanie #serwerownia
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
efcbd52f-79c6-42c7-86c1-12ddc192ef50
lubieplackijohn

@koszotorobur Ty jesteś mądry gość, pomożesz?

koszotorobur

@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ć.

entropy_

@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

koszotorobur

@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.

GazelkaFarelka

Doinstaluj jakaś captche albo honeypota

entropy_

@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.

bimberman

@entropy_ a na jakim serwisie hosting ?znajomy tez mial problemy z wordpresem ale podobno caly hosting mial atak i zainfekowano wiele plikow

bimberman

@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

entropy_

@bimberman mój vpn na ovh. Ogółem mam tam kilka stron i tylko ta ma problemy

entropy_

@bimberman wp-cron, za duży skrót myślowy zrobiłem xD

Do hostingu na pewno nie ma dostępu.

bimberman

plugin sam może generować zapytania nie musi być z zewnątrz

bimberman

możesz utworzyć prosty log zbierający co jest w poście chyba cały ruch jest przez index.php

entropy_

@bimberman ja nawet nie wiem co w google wpisać żeby to zrobić xD

entropy_

@bimberman o właśnie czegoś takiego potrzebuję, dzięki

bimberman

@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

<?php<br /> echo '<pre>';<br /> print\_r($\_SERVER);<br /> echo '</pre>';<br /> ?>
entropy_

@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:


  1. 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.

  2. 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

bimberman

@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

entropy_

@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.

bimberman

@entropy_ jak masz jego ip to blokuj od razu

entropy_

@bimberman ze 20 ma minimum

bimberman

@entropy_ patrzyłeś do jakiego kraju należy ?

entropy_

@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

bimberman

twój hosting nie uzywa cloudflare ?

entropy_

@bimberman używa

bimberman

@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

bimberman

w konsoli windowsa albo czego tam uzywasz ping twojadres.com aby zobaczyc jaki adres ip ma twoja strona

entropy_

@bimberman na razie to nic nie blokowałem, poza tym co automatycznie fail2ban zrobił.

Znalazłem jeszcze takie coś w ustawieniach xD

9eefab4a-f259-45af-9f31-3a03c14d8c85
entropy_

@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

db4e99e7-6283-4f90-8ece-7c91b8f43ea6
Fausto

Borze, przecież pluginy wordpressa są jak sito, ja bym się bał na tym stronę stawiać. Połatałeś wszystkie pluginy i samego wordpressa?

entropy_

@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

Fausto

@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.

entropy_

@Fausto No co umiałem to poprawiłem, na razie się trzyma xD

@Fausto @bimberman @koszotorobur

Dziękuję za pomoc

bimberman

@Fausto fakt te pluginy są jak pola minowe ale na tym polega potega wordpresa , chyba ze chcesz zmarnować pare tygodni aby samemu cos ulepić

koszotorobur

@entropy_ - ale, żeś go zrobił - super sposób

Powietrzna piąteczka

Fausto

@entropy_ XD


W WP można natywnie włączyć dwuetapowe logowanie? Moze warto dodać kolejną ścianę zabezpieczenia.

Zaloguj się aby komentować