PwnLab: init
项目地址:https://download.vulnhub.com/pwnlab/pwnlab_init.ova
是一个打包好的镜像文件
注意:导入 vmx 时一定要选择我已移动,否则没网
使用 Nmap 扫描出开放服务及操作系统版本

本地文件包含
page(PHP 伪协议)
发现 URL 参数是 ?page 的形式来切换不同的页面,推测存在任意文件读取漏洞

尝试任意文件读取无果,换本地文件包含试试
利用伪协议成功读取到源码

解码拿到源码
1 |
|
看看登录的源码,使用了预处理就不能测 SQL 了
但是看到包含了一个 config.php
1 |
|
解码拿到数据库信息
1 | <?php |
Cookie
在首页的源码中我们可以发现 Cookie 是使用的文件包含函数
1 | if (isset($_COOKIE['lang'])) |
但是在 page 参数中,我们的文件会被加上后缀 .php
1 | if (isset($_GET['page'])) |
所以这就是为什么,你通过 page 参数的文件包含漏洞打 RCE 不可行的原因,这里要换 Cookie 来打

弱口令
MySQL
因为前面扫描出开放了 3306 端口,所以尝试连接
1 | mysql --host=192.168.187.161 -u root -p -D Users --ssl=0 |

只有一个用户表,拿到用户名密码

得到三个用户的 Base64 编码密码:
- kent:
Sld6WHVCSkpOeQ==→ 解码为JWzXuBJJNy - mike:
U0lmZHNURW42SQ==→ 解码为SIfdsTEn6I - kane:
aVN2NVltMkdSbw==→ 解码为iSv5Ym2GRo
PWNLAB
使用上面的账号密码登录网站

RCE
Upload(本地文件包含)
利用前面的本地文件包含读取源码
后缀有白名单,MIME 也有白名单
1 |
|
思路是上传一个包含 GIF 头的 PHP 文件,然后利用本地文件包含执行代码
1 | GIF87a |
找到重命名后的文件

这里的文件包含步骤参考上面的第二个参数 Cookie
成功连接上

提权
敏感信息泄露
利用前面爆出的账号密码切换用户

环境变量劫持
发现家目录下面有一个可执行文件,执行发现调用的 cat 命令

通过修改 PATH 环境变量,将恶意 cat 指向 /bin/bash
1 | cd /tmp |
成功提权到 mike 用户

命令执行(&& 绕过)
发现这个用户家目录下面有一个可执行文件
执行后打印用户输入内容

使用 && 拼接命令提权
