HackingLab – It’s October 1

EnumerationARP-SCAN
NMAP
NIKTO
LEGION
WebSite EnumerationDIRBUSTER
DIRB
GOBUSTER
Information GatheringWEBSITE BROWSING
ExploitingSCRIPTING (PHP Reverse Shell)
Privilege EscalationSUID

La macchina si scarica all’indirizzo https://download.vulnhub.com/itsoctober/Its_October.ova ed è configurata per acquisire il proprio indirizzo IP in modalità dinamica DHCP.

HackingLab – Kuya 1

EnumerationARP-SCAN
NMAP
NIKTO
LEGION
WebSite EnumerationDIRBUSTER
DIRB
GOBUSTER
Information GatheringWEBSITE BROWSING
DECODING (BRAINFUCK, BASE64)
PCAPNG PACKET DECODING(WIRESHARK)
COMPRESSED FILE Brute ForcingJOHN
SSH HASH Brute ForcingJOHN
Privilege EscalationSSH LOGIN
Password AttacksJOHN

La macchina si scarica all’indirizzo https://download.vulnhub.com/kuya/Kuya.ova ed è configurata per acquisire il proprio indirizzo IP in modalità dinamica DHCP.

HackingLab – Devrandom CTF1

EnumerationARP-SCAN
NMAP
NIKTO
LEGION
WebSite EnumerationDIRBUSTER
DIRB
GOBUSTER
Information GatheringWEBSITE BROWSING
SSH Brute ForcingHYDRA
LEGION
Privilege EscalationSSH LOGIN

PACKAGE ESCALATION

La macchina si scarica all’indirizzo https://download.vulnhub.com/devrandomctf/devrandomCTF-v1.1.ova ed è configurata per acquisire il proprio indirizzo IP in modalità dinamica DHCP.

Exploiting – Fuzzing parte 4

Usare Spike Parte 2

Nella seconda puntata su Spike vediamo come customizzare uno script così da poterlo utilizzare con Vulnserver.

Installiamo quindi come prima cosa le applicazioni sulla macchina target: OllyDBG e Vulnserver (i riferimenti si trovano nell’articolo precedente (https://greyhathacking.wordpress.com/2013/04/06/exploit-fuzzing-3-usare-spike-parte-1/).

Eseguiamo quindi OllyDBG con privilegi di Amministratore e dal debugger lanciamo Vulnserver; per fare questo premiamo F3 (o “File – open”) selezioniamo Vulnserver e in Arguments digitiamo la porta su cui Vulnserver ascolterà le connessioni, ovvero 4444.

Premiamo infine F9 (o “Debug – run”) così da eseguire il programma.

Image

Vale la pena a questo punto di ricordare brevemente come funziona Vulnserver: si tratta di un applicativo scritto ad hoc per effettuare test di verifica di fuzzing o buffer overflow, una volta lanciato il programma questo si mette ad ascoltare su una determinata porta ed accetta una serie di comandi seguiti da stringhe di caratteri.

Per verificarne il funzionamento è sufficiente utilizzare telnet o netcat indicando l’indirizzo ip della macchina target e la porta, nel nostro caso la 4444: nel mio caso <nc 192.168.159.138 4444> oppure <telnet 192.168.159.138 4444>. Basterà a questo punto digitare il comando HELP (tutti i comandi devono essere digitati in maiuscolo) per vedere la lista di comandi che vengono accettati da Vulnserver.

Un comando tipo inviato a Vulnserver sarà: “STATS 1234567890” a cui Vulnserver risponderà con un “STATS VALUE NORMAL”.

Image

Spike, Wireshark e VulnServer

Ora che e’ chiaro il funzionamento di Vulnserver e come interagire con il programma stesso, vediamo come customizzare Spike in modo da tentarne l’exploit.

In primo luogo proviamo un semplice script che non invierà alcun comando particolare ma una stringa di lunghezza sempre maggiore; per fare questo utilizziamo un editor testo e scriviamo i seguenti parametri:

s_readline(); // viene letto l’output inviato da Vulnserver

s_string_variable(“COMMAND”); // invia la stringa a Vulnserver

Salviamo lo script con il nome “vulnserver.spk

Per controllare quali stringhe vengono passate a Vulnserver utilizzeremo Wireshark specificando l’interfaccia di rete su cui effettuare lo sniffing “eth0” e indicando come “Capture Filter” la seguente stringa “host 192.168.159.138 and tcp port 4444” (ovviamente l’ip dovra’ essere sostituito).

Image

Localizziamo con locate “generic_send_tcp” (in kali è disperso in /usr/bin, in Backtrack è sotto /pentest/fuzzers/spike) ed eseguiamo il seguente comando:

/usr/bin/generic_send_tcp 192.168.159.138 4444 vulnserver.spk 0 0

Image

Immediatamente wireshark inizierà a registrare pacchetti sull’interfaccia eth0 e nella shell da cui abbiamo eseguito il comando generic_send_tcp inizieremo a vedere il dettaglio dell’attacco: Spike resterà in attesa dell’output da Vulnserver e quindi invierà la stringa per il buffer overflow (notate nell’output la stringa “Variablesize=” seguita dalla lunghezza della stringa inviata a Vulnserver, questa informazione sarà utile quando riusciremo a crashare l’applicazione). Purtroppo questo attacco non sortirà alcun effetto.

Image

Per poter vedere quale stringa e’ stata inviata a Vulnserver stoppiamo lo sniffing di Wireshark, selezioniamo una riga nel log che abbia un valore di “Lenght” elevato (di almeno un migliaio) clicchiamo sulla riga con il tasto destro e selezioniamo l’opzione “Follow Tcp Stream” si aprirà una finestra contenente i dati relativi ai pacchetti catturati.

Automatizzare l’utilizzo di Spike per Vulnserver

Quello che ora vogliamo fare è scrivere un file script .spk per ogni comando da inviare a Vulnserver, utilizzarli in sequenza e dare comandi aggiuntivi a Spike per ottenere maggiori informazioni sull’attacco in essere; scriveremo quindi una procedura che eseguirà ognuno dei file .spk con il comando generic_send_tcp.

L’applicazione sarà scritta in modo da bloccarsi quando Vulnserver cascherà’.

A questo punto utilizzeremo OllyDBGwireshark e lo script di automazione di Spike per capire cosa ha provocato il crash di Vulnserver; queste informazioni saranno preziosissime se vorremo scrivere un exploit. Importante ricordare che fino ad ora le attività svolte sono di Vulnerability Assessment e non di exploit vero e proprio.

Creiamo gli script

Iniziamo a creare gli script con un editor di testo: creiamo come prima cosa lo script che inviera’ a Vulnserver il comando “HELP” seguito da una stringa. Cloneremo quindi lo script sostituendo a HELP  via via tutti gli altri comandi gestiti da Vulnserver.

Il primo script si chiamerà 00help.spk e risultera’ il seguente:

printf(“Comando inviato HELP nome script eseguito: 00help.spk”); // stampa a video il comando inviato e il nome dello script

s_readline(); // stampa a video la linea inviata da Vulnserver

s_string(“HELP “); // invia il comando HELP a Vulnserver

s_string_variable(“COMMAND”); // invia la stringa per il tentativo di buffer overflow

Creiamo ora una directory ed al suo interno salviamo lo script; sostituiamo a HELP gli altri comandi di Vulnserver e salviamo gli script con una numerazione progressiva e con il nome del comando: 00help.spk, 01stats.spk, 02rtime.spk, 03ltime.spk

Per comodità potete scaricare tutti gli script dal link – https://mega.co.nz/#!AswS2CAT!VhBiiDCAA4eGevxjMiPkAX_dUK5A0zPX-9eybBMJr5g.

Lo script stamperà quindi come prima cosa a video il nome del comando che invierà ed il nome del file stesso, quindi stamperà a video la stringa ricevuta da Vulnserver; invierà quindi il comando HELP seguito dalla stringa di buffer overflow generata automaticamente da Spike.

Creiamo l’applicazione che eseguirà gli script

Per fare questo utilizzeremo il linguaggio Perl; non essendo la programmazione oggetto di questi tutorial non mi soffermerò sulla sintassi della applicazione.

Di seguito l’applicazione

#!/usr/bin/perl

# Una semplice applicazione per eseguire in sequenza i vari script di Spike

$comando_spike = ‘/usr/bin/generic_send_tcp’;

# Controlla che siano passati tutti I parametri

if ($ARGV[4] eq “”) {

die (“utilizzare $0 Indirizzo macchina target, porta, progressivo file spk , skipvar, skipstr\n\n”);

}

# Indica al programma da quale script file partire

$progressivofile = $ARGV[2];

@files = <*.spk>;

# Per ogni file con estensione *.spk esegue il seguente comando

Foreach $file (@files) {

If (! $progressivofile) {

If (system(“$comando_spike $ARGV[0] $ARGV[1] $file $ARGV[3] $ARGV[4]”) ) {

# segnala dove si e’ interrotto il programma

Print “Il programma si e’ interrotto processando il file $file\n”;

}

} else {

$progressivofile–;

}

}

L’applicazione dovrà essere eseguita nella stessa directory in cui sono stati salvati gli script *.spk e marcata come eseguibile con il comando “chmod +x”.

Eseguendo l’applicazione dovremo specificare l’indirizzo ip della macchina con Vulnserver, la porta, da quale script partire “0 = 00help.spk, 1 = 01stats.spk” e poi le variabili skipvar e skipstr descritte nell’articolo precedente.

Per comodità troverete lo script al link: https://mega.co.nz/#!0sxXhQxB!azMCrFlzyx-sMJjSu9VfP2jFA2RT5ntLrZLfTrjI-Bw

Per lanciare l’applicazione quindi scriveremo: “./vulnserver.pl 192.168.159.138 4444 0 0 0

Debuggare Vulnserver

Se non volete aspettare troppo tempo, lanciate l’applicazione con i seguenti parametri:

./vulnserver.pl 192.168.159.138 4444 8 0 0”; verrà eseguito lo script 08kstet.spk che cascherà’ in pochissimo tempo.

Fermate l’applicazione con CTRL-C e come prima cosa esaminate il debugger che mostrerà un errore eseguendo [41414141] e vedrete anche che il registro EIP punterà a [41414141].

Image

Per vedere esattamente quale stringa è stata inviata a Vulnserver basterà utilizzare Wireshark avendo l’accortezza come prima cosa di ordinare i pacchetti catturati con gli ultimi in cima; dopo questo basterà cercare la stringa “Welcome” così da trovare l’ultima volta che Vulnserver ha risposto correttamente. Il pacchetto subito precedente è quello che avrà causato il crash.

HackingLab – Raven

WordPress and DB exploit {contains spoilers}

“Questa è la storia, la Raven Security, vi sfida ad effettuare un Penetration Testing sul proprio server Web al cui interno ha riposto4 file, o flags, che voi dovete trovare ed aprire.
Potete cominciare quando volete.
Buona fortuna.”

La macchina si scarica all’indirizzo https://download.vulnhub.com/raven/Raven.ova ed è configurata per acquisire il proprio indirizzo IP in modalità dinamica DHCP.

EnumerationARP-SCAN
NMAP
NIKTO
Information GatheringWEBSITE BROWSING
WebSite EnumerationDIRBUSTER
DIRB
GOBUSTER
CMS EnumerationWPSCAN
Privilege EscalationSSH LOGIN
SQL LOGIN
SCRIPTING
Password AttacksJOHN