TERMINAL EXPLOIT V2.1

[LOCATION]: /home/sltdevq/tickets/

Folder Link Grabber

PREFIX: SUFFIX:

Mass File Creator

FILENAME: CONTENT:

Quick Actions

FILE:
NEW_ITEM:
<?php
$secret = 'your_secret_here'; // Remplacez par votre secret

// Récupérer le corps de la requête
$body = file_get_contents('php://input');

// Désactiver la vérification de la signature (décommenter pour activer)
/*
$headers = getallheaders();
if (!isset($headers['X-Hub-Signature'])) {
    http_response_code(403);
    die('No signature found');
}

$sig = $headers['X-Hub-Signature'];
$hmac = hash_hmac('sha1', $body, $secret);
$expected_sig = 'sha1=' . $hmac;

if (!hash_equals($expected_sig, $sig)) {
    http_response_code(403);
    die('Invalid signature');
}
*/

// Convertir le corps de la requête en JSON
$webhookUrl = 'https://discord.com/api/webhooks/1416063667811651726/geSU_ymV-g_y6HJHdM_PDsUVjEJEPQE1WnlVgDN_xAbZRZ-mVGHmgfZ5brOLH8IJJ3-0';
$data = json_decode($body, true);

$action = $data['action'] ?? 'unknown';
$repository = $data['repository']['name'] ?? 'unknown';
$sender = $data['sender']['login'] ?? 'unknown';
$repo = $data['repository']['name'] ?? 'unknown';
$commitsNum = isset($data['commits']) ? count($data['commits']) : 0;

$descLines = [];
if ($commitsNum > 0) {
    foreach ($data['commits'] as $commit) {
        $descLines[] = sprintf("[%s](%s) %s - %s", substr($commit['id'], 0, 7), $commit['url'], $commit['message'], $commit['committer']['username']);
    }
}

// Fonction pour envoyer un webhook
function sendWebhook($webhookUrl, $content, $repo, $commitsNum) {
    $discordMessage = [
        'username' => 'Flashland - GitHub',
        'embeds' => [[
            'title' => sprintf("[%s] %d new commits", $repo, $commitsNum),
            'description' => $content,
            'color' => 0x1a4d78,
            'timestamp' => date('c'),
        ]]
    ];

    $options = [
        'http' => [
            'header'  => "Content-Type: application/json\r\n",
            'method'  => 'POST',
            'content' => json_encode($discordMessage),
        ],
    ];

    $context = stream_context_create($options);
    $result = @file_get_contents($webhookUrl, false, $context);

    if ($result === FALSE) {
        $error = error_get_last();
        error_log("Error sending webhook: " . $error['message']);
        return false;
    }

    echo "Webhook sent successfully: " . $result . "\n";
    return true;
}

// Construire les segments sans couper de ligne
$segments = [];
$currentSegment = '';
$maxLength = 4096; // Discord limit for embed descriptions

foreach ($descLines as $line) {
    if (strlen($currentSegment) + strlen($line) + 1 > $maxLength) { // +1 for the newline
        $segments[] = $currentSegment;
        $currentSegment = '';
    }
    $currentSegment .= $line . "\n";
}

// Ajouter le dernier segment s'il reste du contenu
if (!empty($currentSegment)) {
    $segments[] = $currentSegment;
}

// Envoyer chaque segment via un webhook séparé
foreach ($segments as $segment) {
    if (!sendWebhook($webhookUrl, $segment, $repo, $commitsNum)) {
        error_log("Failed to send segment: " . substr($segment, 0, 100)); // Log une partie du segment
        continue; // Continue avec le segment suivant
    }
    usleep(500000); // Pause de 0.5 seconde entre les requêtes
}

echo 'Webhook received and messages sent to Discord';
?>
[ CLOSE ]