Settimana scorsa ho tenuto un talk all’Università di Parma, presso la facoltà
di ingegneria, dal titolo “Vulnerability Assessment and safe coding in web
applications”. Le slide le potete trovare
qui.
L’idea, in tre ore di intervento, era di usare Railsgoat
ed il progetto Owasp Broken Web
Application
per far vedere come l’enumerazione, il saper cogliere dettagli ed indizi ed un
pizzico di fortuna, ci possono portare da un’applicazione web ad una shell di
root.
Sul più bello, ovvero alla terza ora, quando dovevamo armarci, partire e bucare
Railsgoat, il proiettore ha fatto le bizze. Quindi lascio
qui un piccolo walkthrough, dei passi fatti per partire dall’indirizzo IP e
URL, fino ad una shell di root.
Owasp Broken Web Application Project
Il progetto Owasp Broken Web
Application è nato con lo scopo di fornire una macchina virtuale, differente dalla solita metasploitable, per permettere a chiunque di esercitarsi con applicazioni volutamente vulnerabili.
Railsgoat è una di queste. Scritta in Ruby on Rails, vuole simulare un portale aziendale dedicato alla gestione del personale. L’amministratore, avrà a disposizione la form di gestione di alcuni dipendenti e, tra le altre cose, sarà possibile fare l’upload delle polizze sanitarie aziendali, gestire i dati dello stipendio e molto altro.
Durante il talk siamo partiti con solo 2 dati a nostra disposizione:
- l’indirizzo IP del server: 172.16.202.241
- il nome dell’applicazione web: Railsgoat
Setup dell’ambiente
Questa volta avevo entrambe le macchine in esecuzione con VMWare Fusion sotto
Mac OS X. Questo semplicemente perché avevo già pronta la macchina Kali Linux
usata per l’oscp.
L’importante è che mettiate entrambe le macchine in una rete privata e non
siano nattate con il vostro host fisico.
Enumeration
Come prima cosa, andiamo a vedere quali sono i servizi in ascolto sul mio target:
# nmap -sV -oA railsgoat 172.16.202.241
...
# cat railsgoat.nmap
# Nmap 7.50 scan initiated Wed Nov 29 18:09:28 2017 as: nmap -sV -oA railsgoat 172.16.202.241
Nmap scan report for 172.16.202.241
Host is up (0.00052s latency).
Not shown: 991 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu4 (Ubuntu Linux protocol 2.0)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL...)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
143/tcp open imap Courier Imapd (released 2008)
443/tcp open ssl/https?
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
5001/tcp open java-rmi Java RMI
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
8081/tcp open http Jetty 6.1.25
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port5001-TCP:V=7.50%I=7%D=11/29%Time=5A1EE9DD%P=i686-pc-linux-gnu%r(NUL
SF:L,4,"xacxed