Bine ați revenit, stimați colegi entuziaști de securitate! Astăzi vă voi arăta cum să spargeți un site WordPress folosind ca exemplu CTF-ul Mr. Robot. Tocmai am lucrat eu însumi prin acest excelent CTF și am învățat o tonă în acest proces. Am vrut să-mi ridic nivelul jocului meu de analiză a vulnerabilității web cu o treaptă și am început cu acest CTF.
Dacă doriți cu adevărat să învățați securitatea cibernetică, vă recomand cu căldură să citiți uriașul meu ghid pentru începători Getting started with Cybersecurity in 2019, unde vă învăț cum să începeți, complet gratuit! De asemenea, merită să verificați și articolul Cele mai bune cărți de hacking în 2019.
DISCLAIMER: Acest „cum să spargi un site WordPress” este un tutorial de hacking etic și se adresează profesioniștilor din domeniul securității. Nu folosiți, repet, nu folosiți aceste tehnici fără acordul scris al părții care le primește. Dacă folosiți acest tutorial într-un context ilegal, s-ar putea să vă aștepte acuzații legale și/sau închisoare. Folosiți aceste tehnici numai într-un mediu de laborator închis.
Un CTF este un așa-numit joc de capturare a steagului, în care scopul dvs. este de a colecta un anumit număr de steaguri (sau chei, de altfel). CTF-urile sunt folosite pentru a vă exersa abilitățile de hacking într-un mediu sigur și legal. Vă pot recomanda Vulnhub ca resursă pentru o selecție de un CTF excelent.
Ok, să începem.
- Pasul 1 – Evaluarea dacă un site web folosește WordPress
- Pasul 2 – Preluarea codului cu Burpsuite
- Pasul 3 – Găsirea numelui de utilizator corect
- Pasul 4 – Bruteforcing Usernames with Hydra
- Pasul 5 – Brute Forcing Parola
- Pasul 6 – Implementarea codului malițios în WordPress
- Pasul 7 – Pornirea unui ascultător Netcat
- Vă rugăm să distribuiți!
Pasul 1 – Evaluarea dacă un site web folosește WordPress
Dacă nu știți dacă un site web folosește WordPress sau nu, există în mare parte o modalitate foarte ușoară de a afla acest lucru.
Puteți tasta pur și simplu: www.addressofthewebsite.com/wp-admin
Ceea ce, în cele mai multe cazuri, va afișa un gui de logare wp-admin, cu excepția cazului în care administratorul l-a dezactivat.
O altă modalitate foarte bună de a verifica dacă un Website folosește WordPress este prin utilizarea wpscan. Wpscan vine preinstalat atât în Kali, cât și în ParrotSec.
wpscan -u www.addressofyourtarget.com
În cazul meu, scanarea VM-ului Mr. Robot relevă următoarele.
După cum puteți vedea, indică în mod clar că site-ul folosește WordPress. De asemenea, vă prezintă 46 de vulnerabilități identificate. Acum, majoritatea hosterilor și versiunile recente de WordPress vor bloca în mod implicit o scanare ca aceasta. Așa că, cel mai probabil, acest lucru va funcționa doar cu versiuni învechite de WordPress fără nicio protecție din partea unui hoster.
Ok, până aici totul este bine. Acum putem verifica acest lucru verificând dacă pagina de autentificare există, navigând la URL-ul site-ului + /wp-admin, astfel:
Și sigur, apare masca de autentificare.
Pasul 2 – Preluarea codului cu Burpsuite
Acum vine partea dificilă, aflarea numelui de utilizator. Ați putea începe cu admin, dar WordPress generează de obicei un nume de utilizator aleatoriu, așa că ar putea fi dificil de aflat și ar putea fi nevoie să faceți niște cercetări suplimentare cu privire la țintă.
În exemplul Mr. Robot, știu că numele de utilizator este Elliot (nu este prea greu de ghicit). Ați putea, de asemenea, să încercați să rulați hydra împotriva câtorva liste de nume de utilizator, dar mai întâi, trebuie să folosim burpsuite pentru a prelua niște cod din pagina de logare.
Porniți burpsuite tastând
sudo burpsuite
Creați un nou proiect temporar folosind valorile implicite Burp.
Navigați la fila Target -> Scope Tab și faceți clic pe Add pentru a include pagina wp-login în domeniu. Selectați Yes (Da) în fereastra de dialog pop-up.
În continuare, mergeți la meniul Preferences (Preferințe) din Firefox și derulați tot drumul în jos până când găsiți Network Proxy (Proxy de rețea). Dați clic pe Settings.
Selectați Manual proxy configuration și introduceți IP-ul 127.0.0.1 și portul 8080. Bifați „Folosiți acest server proxy pentru toate protocoalele”. Faceți clic pe OK.
Înapoi la Burpsuite. Deschideți fila Proxy. Acum reveniți la pagina WP-Login. Introduceți orice nume de utilizator și parolă aleatoare și faceți clic pe Log In. Asigurați-vă că Privacy Badger, uBlock Origins și NoScript sunt dezactivate pentru site.
După ce ați apăsat pe login, întoarceți-vă la Burpsuite și uitați-vă la ieșire.
log=root&pwd=1234&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.1.109%2Fwp-admin%2F&testcookie=1
Acum avem ceva cu care putem alimenta Hydra.
Pasul 3 – Găsirea numelui de utilizator corect
Să ne distrăm puțin pentru a vă face o idee despre cum ați putea afla un nume de utilizator pentru ținta voastră. VM-ul pe care îl folosim pentru acest exemplu, așa cum am menționat mai sus, are ca temă Mr. Robot. Așa că este foarte probabil ca numele de utilizator să fie găsit în niște banalități care au legătură cu Mr. Robot.
În primul rând, întoarceți-vă la Burpsuite și închideți-l. Nu mai avem nevoie de el în acest moment. De asemenea, mergeți înapoi la setările Proxy și dezactivați Proxy-ul din nou.
Acum mă îndrept spre pagina de Wikipedia Mr. Robot: https://en.wikipedia.org/wiki/Mr._Robot
Și voi crea o listă de nume de utilizator exact de pe această pagină folosind CeWL.
Deschideți o nouă fereastră de terminal și tastați
sudo cewl -w usernames.txt -d1 -m4 https://en.wikipedia.org/wiki/Mr._Robot
Să desfacem asta.
- -w usernames.txt – ar trebui să fie destul de clar, acesta este numele listei de cuvinte care va fi creată
- -d1 – Definește adâncimea la care CeWL va cerceta site-ul web. 1 indică faptul că va rămâne exact pe acest site și nu va deschide niciun link de pe el.
- -m4 – Definește lungimea minimă a cuvântului care va fi pus în listă
- https://en.wikipedia.org/wiki/Mr._Robot – evident, site-ul web pe care îl vom cerceta.
Așa că, după cum vedeți, ați putea aplica această tehnică pentru orice site web relevant pentru țintă.
Executarea unei analize rapide
ls
Ne arată, că numele nostru de utilizator.txt a fost creat.
În unele cazuri, aveți noroc folosind wpscan pentru a enumera numele de utilizator, așa că încercați întotdeauna și acest lucru:
wpscan --url http://www.targetwebsite.com --enumerate u
Acum vom folosi Hydra pentru a Bruteforce această listă împotriva paginii wp-login.
Pasul 4 – Bruteforcing Usernames with Hydra
În regulă, este timpul să alimentăm Hydra noastră cu numele de utilizator. Am găsit această metodă particulară pe unul dintre multele Walkthroughs de pe Vulnhub, deși nu-mi amintesc exact care a fost, dar dau credit acolo unde se cuvine. Deschideți o nouă fereastră de terminal și tastați:
hydra -V -L usernames.txt -p whatever 192.168.1.109 http-post-form '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log:F=Invalid username'
Să despărțim acest lucru.
- -V – Verbose
- -L – Numele noastre de utilizator.txt list
- -p whatever – Parola, nu ne pasă, pentru că vrem să aflăm numele de utilizator
- http-post-form – Tipul de atac Brute Force pe care vrem să îl executăm
- /wp-login.php – Calea către formularul de logare
- log = ^USER^&pwd=^PASS^&wp-submit=Log+In – Valorile care vor fi trimise în formular, unde ^USER^ și ^PASS^ sunt spații libere pentru opțiunile noastre -L și -p
- F=Invalid username – Îi spune lui hydra că încercarea a eșuat dacă returnează Invalid username
În regulă, haideți să rulăm comanda, da?
Și sigur, ni se returnează că autentificarea cu numele de utilizator elliot a avut succes (Ceea ce nu a fost, doar a confirmat că formularul web nu a returnat un nume de utilizator invalid).
Așa că mai trebuie să ne dăm seama de parolă. Dar cel puțin avem un nume de utilizator.
Pasul 5 – Brute Forcing Parola
Acum am putea, de asemenea, să folosim Hydra pentru a Brute Force parola utilizatorului, dar eu prefer să folosesc wpscan deoarece sintaxa este mai ușoară.
wpscan --url http://192.168.1.109/wp-login.php --passwords /usr/share/wordlists/rockyou.txt.gz --usernames elliot --wp-content-dir http://192.168.1.109/wp-login.php
rockyou.txt.gz este doar un exemplu, înlocuiți cu orice listă de parole doriți să folosiți.
Și iată, am obținut numele de utilizator și parola.
Pasul 6 – Implementarea codului malițios în WordPress
În regulă, acum că avem acces de administrator la WordPress, există câteva căi pe care le putem urma de aici. Vă voi arăta una dintre cele mai ușoare.
Pe calculatorul care vă atacă mergeți la Places -> File System -> usr -> share -> webshells -> php și deschideți php-reverse-shell.php
Copiați tot conținutul:
Acum, în WordPress, navigați la Appearance -> Editor și selectați șablonul 404.php. Acesta este doar un exemplu, puteți implementa codul în mai multe moduri diferite.
Acum, lipiți codul aici, astfel încât să arate cam așa:
Editați liniile marcate cu galben astfel încât IP-ul să indice spre calculatorul dvs. de atac și alegeți un port.
Pasul 7 – Pornirea unui ascultător Netcat
Acum, din nou pe computerul atacator, pornim un ascultător Netcat:
nc -lvp 443
Apoi veți deschide pagina 404 ca și cum ați merge doar la link-ul: www.yourtargetwebsite.com/404
Și am intrat! Nu numai că am spart contul de administrare WordPress, dar am obținut și acces la serverul în sine. De aici trebuie să vă folosiți abilitățile pentru a obține acces ridicat, dar asta nu ar trebui să mai fie prea greu acum.
Puteți vedea, CTF-urile sunt o modalitate excelentă de a învăța lucruri noi.
Până data viitoare, continuați să hackuiți!
*Toate tehnicile furnizate în tutorialele de pe ceos3c.com sunt destinate doar în scopuri educaționale.
Toate tehnicile predate aici sunt destinate a fi folosite doar într-un mediu închis de laborator sau în consimțământ cu o a doua parte.
Dacă folosiți oricare dintre aceste tehnici în scopuri ilegale, Ceos3c nu poate fi tras la răspundere pentru eventualele consecințe legale.