!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/public_html/phpmyadmin/vendor/web-auth/metadata-service/src/   drwxr-xr-x
Free 28.15 GB of 117.98 GB (23.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     MetadataStatementFetcher.php (3.79 KB)      -rwxr-x---
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

declare(strict_types=1);

/*
 * The MIT License (MIT)
 *
 * Copyright (c) 2014-2021 Spomky-Labs
 *
 * This software may be modified and distributed under the terms
 * of the MIT license.  See the LICENSE file for details.
 */

namespace Webauthn\MetadataService;

use 
Assert\Assertion;
use 
Base64Url\Base64Url;
use 
Jose\Component\KeyManagement\JWKFactory;
use 
Jose\Component\Signature\Algorithm\ES256;
use 
Jose\Component\Signature\Serializer\CompactSerializer;
use 
Psr\Http\Client\ClientInterface;
use 
Psr\Http\Message\RequestFactoryInterface;
use function 
Safe\json_decode;
use function 
Safe\sprintf;

/**
 * @deprecated This class is deprecated since v3.3 and will be removed in v4.0
 */
class MetadataStatementFetcher
{
    public static function 
fetchTableOfContent(string $uriClientInterface $clientRequestFactoryInterface $requestFactory, array $additionalHeaders = []): MetadataTOCPayload
    
{
        
$content self::fetch($uri$client$requestFactory$additionalHeaders);
        
$payload self::getJwsPayload($content);
        
$data json_decode($payloadtrue);

        return 
MetadataTOCPayload::createFromArray($data);
    }

    public static function 
fetchMetadataStatement(string $uribool $isBase64UrlEncodedClientInterface $clientRequestFactoryInterface $requestFactory, array $additionalHeaders = [], string $hash ''string $hashingFunction 'sha256'): MetadataStatement
    
{
        
$payload self::fetch($uri$client$requestFactory$additionalHeaders);
        if (
'' !== $hash) {
            
Assertion::true(hash_equals($hashhash($hashingFunction$payloadtrue)), 'The hash cannot be verified. The metadata statement shall be rejected');
        }
        
$json $isBase64UrlEncoded Base64Url::decode($payload) : $payload;
        
$data json_decode($jsontrue);

        return 
MetadataStatement::createFromArray($data);
    }

    private static function 
fetch(string $uriClientInterface $clientRequestFactoryInterface $requestFactory, array $additionalHeaders = []): string
    
{
        
$request $requestFactory->createRequest('GET'$uri);
        foreach (
$additionalHeaders as $k => $v) {
            
$request $request->withHeader($k$v);
        }
        
$response $client->sendRequest($request);
        
Assertion::eq(200$response->getStatusCode(), sprintf('Unable to contact the server. Response code is %d'$response->getStatusCode()));
        
$content $response->getBody()->getContents();
        
Assertion::notEmpty($content'Unable to contact the server. The response has no content');

        return 
$content;
    }

    private static function 
getJwsPayload(string $token): string
    
{
        
$jws = (new CompactSerializer())->unserialize($token);
        
Assertion::eq(1$jws->countSignatures(), 'Invalid response from the metadata service. Only one signature shall be present.');
        
$signature $jws->getSignature(0);
        
$payload $jws->getPayload();
        
Assertion::notEmpty($payload'Invalid response from the metadata service. The token payload is empty.');
        
$header $signature->getProtectedHeader();
        
Assertion::keyExists($header'alg''The "alg" parameter is missing.');
        
Assertion::eq($header['alg'], 'ES256''The expected "alg" parameter value should be "ES256".');
        
Assertion::keyExists($header'x5c''The "x5c" parameter is missing.');
        
Assertion::isArray($header['x5c'], 'The "x5c" parameter should be an array.');
        
$key JWKFactory::createFromX5C($header['x5c']);
        
$algorithm = new ES256();
        
$isValid $algorithm->verify($key$signature->getEncodedProtectedHeader().'.'.$jws->getEncodedPayload(), $signature->getSignature());
        
Assertion::true($isValid'Invalid response from the metadata service. The token signature is invalid.');

        return 
$jws->getPayload();
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0043 ]--