Vulnerabilitate pe VPS (/muieblackcat)

Am doua VPS-uri . Ambele ruleaza docker si container nginx , aditional React respectiv Python.

Doar ce am băgat de seamă că nici unul dintre servere nu mai răspunde. Mă uit în log-urile pentru ngnix și găsesc asta

123.207.210.64 - - [30/Jan/2020:11:36:58 +0000] "GET /muieblackcat HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:36:59 +0000] "GET //phpMyAdmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:00 +0000] "GET //phpmyadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:06 +0000] "GET //myadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:08 +0000] "GET //MyAdmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:09 +0000] "GET //phpMyAdmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:10 +0000] "GET //phpmyadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:11 +0000] "GET //mysql/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:13 +0000] "GET //dbadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:15 +0000] "GET //pma/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:16 +0000] "GET //MyAdmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:17 +0000] "GET //mysql HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:18 +0000] "GET //mysql/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:20 +0000] "GET //\xC2\xAC/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:21 +0000] "GET //admin HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:22 +0000] "GET //dbadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:22 +0000] "GET //phpMyAdmin1/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:24 +0000] "GET //pma/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:25 +0000] "GET //mysqladmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:28 +0000] "GET //phpadmin/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:29 +0000] "GET //phpmy/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:30 +0000] "GET //db/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:37:31 +0000] "GET //scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"

nu am atașat tot log-ul , dar el continuă

123.207.210.64 - - [30/Jan/2020:11:40:17 +0000] "GET //admin/scripts/setup.sh HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:40:18 +0000] "GET //sql/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
123.207.210.64 - - [30/Jan/2020:11:40:25 +0000] "GET //SQL/scripts/setup.php HTTP/1.1" 301 162 "-" "-" "-"
81.214.130.65 - - [30/Jan/2020:11:42:54 +0000] "{D79E94C5-70F0-46BD-965B-E17497CCB598}" 400 150 "-" "-" "-"
170.233.71.169 - - [30/Jan/2020:12:01:16 +0000] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" "-"
93.43.219.6 - - [30/Jan/2020:12:06:02 +0000] "{D79E94C5-70F0-46BD-965B-E17497CCB598}" 400 150 "-" "-" "-"
64.225.2.124 - - [30/Jan/2020:12:20:10 +0000] "GET / HTTP/1.0" 301 162 "-" "Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com)" "-"
64.225.2.124 - - [30/Jan/2020:12:20:14 +0000] "GET / HTTP/1.0" 200 2400 "-" "Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com)" "-"
80.211.6.136 - - [30/Jan/2020:12:21:11 +0000] "GET / HTTP/1.0" 301 162 "-" "masscan/1.0 (https://github.com/robertdavidgraham/masscan)" "-"
45.83.67.154 - - [30/Jan/2020:12:27:00 +0000] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0" "-"
74.63.227.26 - - [30/Jan/2020:12:37:35 +0000] "HEAD /robots.txt HTTP/1.0" 301 0 "-" "-" "-"
128.14.209.154 - - [30/Jan/2020:12:41:44 +0000] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" "-"

Este prima dată când trăiesc experiența unui atac :D. Este posibil să nu fiu singurul client cloudify afectat ?

Momentat mă documentez, am zis să scriu ceva repede și aici. Aveți experiență cu acest atac?

Pare ca seamana cu ce ai tu. Totusi o sa verific si eu la mine. Nu sunt pe Clodify, dar sa fiu precaut.


Anunta problema la suport imediat.

Suportul ajunge mâine. Aștept. Acum nu știu dacă buba e la mine și la cum am utilizat server-ul sau e ceva ce îi privește în mod special pe proprietarii serviciului.

E doar un scaun de vulnerabilități. Cum poate fi un provider de unmanaged vps vinovat de așa ceva?

1 Like

Nu știu, întreb și eu. Mă gândeam că poate există protecții / firewall. Sunt dator cu un pic de studiu. Prima mea curiozitate este cum de un astfel de bot a reușit să imi opreasă ambele site-uri. Am oprit și repornit containerele de docker și functionează ok.

În cazul tău probabil cea mai simplă soluţie este fail2ban.

2 Likes

De ce nu activezi niște backup urî?

Asta a fost și recomandarea venită de la suport. După restartul docker-ului funcționează ok dar nu am încredere că totul este 100% sigur.

Deși statusul containerelor era ok serviciile web erau căzute. Poate succesiunea rapidă de requesturi a cauzat. Mă tem de posibilitatea unui fișier de configurație (sau ceva asemănător) de pe server alterat.

Salut.

Din punct de vedere al securitatii, restaurand niste backup-uri activezi de fapt acelasi vulnerabilitati.

O solutie ar fi, refacut masina cu ultimile versiuni ale aplicatiilor, in cazul asta phpmyadmin si securizate bine, pe urma dat jos masina curenta, pus masina noua in loc si investigat ce se petrece cu masina veche. Unele exploituri sunt si bagate si in bazele de date si cand se “restaureaza” o aplicatie de fapt se reinstaleaza, verificati si dump-uri de db cu chestii ce n-ar trebui sa fie acolo, exemplu: MySQL creaza fisier PHP, etc.

Foarte rapid cautati pe google phpmyadmin versiunea vulnerabilities, exemple, dar fiind system LAMP/LEMP probabil trebuie sa va uitati la mai multe, gen versiunea de PHP folosita daca mai este suportata. Vulnerabilitatile trebuiesc gestionate pe intregul stack OSI.

1 Like

Aici nu folosesc php (python+javascript în Docker). Dar da, o să fac o mică inspecție în directoare și baza de date.

Când am pus stăpânire pe aceste VPS-uri am instalat Docker, am clonat repo-ul am dat build și asta a fost. Un pas în plus a fost dezactivarea serviciului apache din cauza că împiedica accesul la Ngnix. Să mai fie lucruri de făcut în host care mă pot proteja?

Te panichezi degeaba. Asa cum vezi si in log-uri, bot-ul respectiv cauta niste foldere/fisiere.

Daca nu le-a gasit, sanatate.

Daca stii ca ai pe server fisierele pe care bot-ul le cauta, atunci arunca un ochi si vezi ce se poate face.

It is just a hole finder script. The requests made are typically the following ones, if your servers answers all with a 404 error, you do not have anything to worry about.

3 Likes

Verifica daca imaginea de Docker are vulnerabilitati si/sau programe care nu ar trebui sa fie instalate, gen nc

Verifica in python ce faci si cum faci, gen ai un functional de upload, verifica ce fisiere poti uploada acolo (nu doar dupa extensia fisierului, ci dupa mime-type-ul folosit. Dupa ce fisierul este uploadat temporal, scaneaza-l de visuri/mallware, etc, sunt multe de verificat.

Daca e doar un scan (poate sa fie un atac de “identificare” gen Dirbuster daca nu folosesti phpmyadmin-ul) atunci poti folosi cu un oarecare success fail2ban, spun asta pe ca din requesturile tale, chiar daca nu exista tu trimiti 301 (permanent redirect) in loc de 404 si atunci va fi greu sa vezi ce requesturi sunt legitime si care nu sunt.

1 Like

Instalează și un firewall https://hostadvice.com/how-to/how-to-configure-firewall-with-ufw-on-ubuntu-18/

Am avut problema asta în perioada în care aveam apache de pe local public: la un moment dat îmi dau seama că internetul a devenit lent, extrem de lent. Când mă uit la utilizare, era aproape de 100% :slight_smile:

Așa cum s-a spus mai sus, cel mai probabil ești scanat în căutarea de fișiere … să le zicem uzuale.


Poate că ar trebui să editezi titlul, să scoți numele providerului? Nu cred că are legătură.

6 Likes

Hmm, din in logurile tale rezulta o rata mica a cererilor. Un flood serios inseamna zeci de mii pps.

1 Like

Da, poate nu are legătură providerul. Mă gândeam totuși. Sunt 2 vps-uri, unul expune un API celălalt este un React ce consumă acel Api. Presupun că scriptul acela de spam a nimerit pe domeniul înregistrat pentru frontend, a făcut ceva crawl și a găsit link către Api, pentru că ambele servere au fost atacate similar.

Ca IP ele sunt apropriate (xx.yy.zz.1n, xx.yy.zz.2n). Daca scriptul lucrează citind secvențial un range de IP-uri atunci poate și alte servere au fost afectate, nu doar ale mele, caz în care numele providerului in titlu face ceva sens. Greșesc?

Doamne ferește. Și cele câteva minute au fost suficiente că sa îmi blocheze serviciile. Astăzi am observat iar atacuri dar serviciile au rezistat (:

Pare că react-routerul de pe frontend răspunde cu 200 și o pagină fără componente in body când scriptul ăla incerca diverse pagini. De asta cred că insistă și nu mă lăsa în pace.

Nu te ajuta doar firewall-ul daca ti se blocheaza serverul, iti trebuie un cookie challenge (captcha de la toti utilizatorii daca serverul e peste un anumit load) ca sa blochezi un scanner fara sa maresti resursele serverului.

Ai grija ca nu cumva sa iti pice din cauza sesiunilor anonime care se duc direct la baza de date cand acceseaza fisiere php.

care php cand el spune :

Ambele ruleaza docker si container nginx , aditional React respectiv Python.

Partea bună: sunt servere de dezvoltare, pot sa distrug tot fără să regret nimic. Lucrez doar eu și încă o persoană, load foaaaarte mic din partea noastră.

Partea rea: daca se intampla pe un server de producție? E drept aici am doar 1gb RAM, poate asta a dus la picaj… dar chiar și așa, scriptul ăla tot mai scanează din când în când și îmi blochează release-urile ((:

Totul este in docker, am certificate pentru https, nu am decât să pun regului in nginx conform rutelelor din React, poate la un moment dat atacatorul va fi descurajat sa mai atace.

Partea neutră: Prima grijă acum este sa înțeleg ce se întâmplă și să aplic din recomandarile acestui thread. Este o experiență până la urmă și câștig ceva cunoștințe. Între timp atacatorul își consumă ceva resurse cu mine și nu cu altă persoană/adresa care chiar ar putea fi exploatată. Câștig mic dar asta este. Yupi-ye!