Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
Strumenti/GitHubGitHub/cirocosta/lighty-sqlinj-demo
Sicurezza dei ContenitoriAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebApprendimento e FormazioneLab e Pratica
GitHubcirocosta/lighty-sqlinj-demo

lighty-sqlinj-demo

Dimostrazione educativa dello sfruttamento dell'iniezione SQL CVE-2014-2323 in mod_mysql_vhost di lighttpd, con laboratorio basato su Docker per l'analisi pratica della vulnerabilità e l'applicazione delle patch.

Vedi Repository
8910 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

title: Ep4 - Vulnerabilità relativa alle reti members:

  • Ciro S. Costa
  • Marcela Terakado date: 10 Nov, 2015

Vulnerabilità correlata:

CVE-2014-2323 [1] was assigned to SQL injection bug.
CVE-2014-2324 [2] was assigned to the path traversal bug.

Conferma: http://download.lighttpd.net/lighttpd/security/lighttpd_sa_2014_01.txt

  • Versione affetta: 1.4.34

Presentazione

  • Spiegare la falla
    • presentare il servizio da esplorare
    • dove, nel codice sorgente, si trova la falla
    • patch di correzione della falla
  • Preparare demo relative all'exploit
    • Exploit
    • Applicare la correzione della falla
    • Provare a sfruttarla di nuovo
  • lighttpd (lighty)
  • Hosting Virtuale
    • Preparare un server Lighttpd
  • SQL
    • SQL injection
  • Docker
    • Networking dei container
  • Demo!
    • Exploit
    • Verifica del Path

lighttpd (lighty)

Il servizio da esplorare è Lighttpd. È un webserver open source (licenza BSD) ottimizzato per essere leggero e veloce. Nacque come 'proof-of-concept' del famoso problema c10k (come gestire 10.000 connessioni simultanee su un server), guadagnando quindi molta popolarità all'epoca (2003), ed è attualmente utilizzato da Whatsapp.com, Xkcd e, in passato, Youtube. Il suo posizionamento sul mercato è piuttosto interessante, come possiamo verificare nel grafico:

Posizionamento Lighttpd - Traffico x Quantità di Siti Web

Il server cerca di gestire il problema delle molte connessioni tramite l'uso di meccanismi asincroni basati su eventi (kqueue su BSD, epoll su Linux), riducendo la necessità di più thread, risultando quindi in un'impronta di memoria molto più ridotta e un migliore utilizzo della CPU (strategia utilizzata anche dai server Nginx, il cui uso è aumentato significativamente nel corso degli anni):

Mercato dei Server

Una delle funzionalità di lighty è la facile gestione dei virtual host.

Hosting Virtuale

Si tratta di un metodo utilizzato per ospitare più di un nome di dominio la cui risoluzione avviene su un unico IP, riducendo i costi di hosting per le aziende che cercano di offrire siti web, poiché non è necessario riservare un server dedicato per ogni sito web.

La tecnica può essere basata su IP (un'interfaccia per ogni host) o basata sul nome (un nome per ogni host, condividendo l'interfaccia) - esplorata in questa presentazione.

Basato sul nome

: utilizza l'Hostname fornito dal client per identificare quale servizio usare per rispondere di conseguenza. Tale metodo presenta due difficoltà: complicazioni nel gestire sessioni sicure (TLS) - l'handshake deve avvenire prima di qualsiasi passaggio di intestazione che indichi l'Host al server, complicando quindi la determinazione di quale certificato presentare durante l'handshake. Una soluzione a questo problema è un'estensione al TLS chiamata Server Name Indication (SNI) che consente di presentare il nome all'inizio dell'handshake, permettendo quindi la scelta del certificato corretto. Un secondo problema riguarda il tentativo di connessione senza un'intestazione Host ben definita, che comporta l'indeterminazione del servizio da utilizzare.

Host virtuale - redes.io Host virtuale - mac0448.io

Basato su IP

: utilizza IP separati per ogni applicazione. Il webserver viene quindi configurato per più interfacce di rete fisiche (o virtuali sulla stessa interfaccia) e risponde in modo corrispondente in base all'indirizzo IP (di destinazione).

IP aliasing consente di creare interfacce virtuali per ogni servizio.

Nel caso di una grande azienda, amministrare tale mappatura può diventare complesso a seconda del numero di clienti. Lighty offre quindi supporto all'uso di un database per questa finalità, come mostreremo in seguito.

Prima, vediamo come fare "a mano" la configurazione di un server e poi aggiungere il vhosting.

Preparare un server Lighttpd

Preparare un server di base lighttpd è molto facile. Basta eseguire l'installazione e creare un file di configurazione che imposti la porta da usare, come rispondere a determinate richieste e altre configurazioni.

Possiamo preparare un esempio di configurazione che gestisce solo la ricezione di richieste di file statici (.html o .txt):

server.document-root = "/usr/lighttpd/mysite.com/"
server.port = 80

mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain"
)

Immaginate ora di voler creare un'attività basata sulla vendita di siti web e di offrire un dominio proprio all'acquirente. Per minimizzare i costi, vogliamo quindi creare vhosts per ogni cliente. Diciamo che il corso della disciplina di reti desidera acquisire tre siti web: redes.io, mac0448.io e mac5910.io. La nostra azienda registra quindi i domini, tutti puntanti all'IP del nostro unico server, con una sola interfaccia.

ps: poiché vogliamo simulare questo, possiamo modificare il file /etc/hosts:

172.17.0.2 redes.io
172.17.0.2 mac0448.io
172.17.0.2 mac5910.io

Per essere in grado di servire i diversi siti web dei clienti risolvendo da un singolo IP, possiamo quindi configurare il server a mano:

server.document-root = "/usr/lighttpd/default/"
server.port = 80

mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain"
)

$HTTP["host"] == "redes.io" {
  server.document-root = "/usr/lighttpd/redes/"
} else $HTTP["host"] == "mac0448.io" {
  server.document-root = "/usr/lighttpd/mac0448/"
} else $HTTP["host"] == "mac5910.io" {
  server.document-root = "/usr/lighttpd/mac5910/"
}

Ma, come possiamo immaginare, questo può diventare un problema man mano che vogliamo gestire molti clienti e fornire configurazioni diverse per ogni sito web, come citato in precedenza.

Con il modulo mod_mysql_vhost possiamo quindi collegare il nostro server a un database mysql responsabile di tale mappatura. Specifichiamo quindi il nome del database, come trovarlo nella nostra rete e quale comando usare per effettuare la ricerca.

server.modules = (
	"mod_accesslog",
	"mod_mysql_vhost"
)

mysql-vhost.db		= "NOME_DO_BANCO"
mysql-vhost.user	= "USUARIO"
mysql-vhost.pass	= "SENHA"

(!!!!!!!!!!!!!!!)
mysql-vhost.sql		= "SELECT docroot FROM domains WHERE domain='?';"
(!!!!!!!!!!!!!!!)

mysql-vhost.hostname	= "HOSTNAME"
mysql-vhost.port	= "PORTA"

SQL

SQL è un linguaggio dichiarativo per amministrare database relazionali, essendo utilizzato (...) ecc.

TODO

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • DROP
  • (...)

TODO

I problemi sorgono quindi dal fatto che i sistemi di gestione dei database che utilizzano SQL presuppongono che i comandi inseriti siano comandi noti all'amministratore e da lui ben gestiti. Tale presupposto non è sempre vero, poiché i sistemi che interagiscono con il sistema di database possono presentare falle, soprattutto sul web, dove l'interazione con l'utente è elevata.

SQL Injection

Scarica lo strumento