11 KiB
Writable Sys Path +Dll Hijacking Privesc
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε The PEASS Family, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @carlospolopm.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Εισαγωγή
Εάν ανακαλύψετε ότι μπορείτε να γράψετε σε έναν φάκελο διαδρομής συστήματος (σημειώστε ότι αυτό δεν θα λειτουργήσει εάν μπορείτε να γράψετε σε έναν φάκελο διαδρομής χρήστη), είναι πιθανό να μπορείτε να αναβαθμίσετε τα δικαιώματά σας στο σύστημα.
Για να το κάνετε αυτό, μπορείτε να καταχραστείτε μια Διαδρομή Dll Hijacking, όπου θα καταχωρήσετε μια βιβλιοθήκη που φορτώνεται από ένα υπηρεσία ή διεργασία με περισσότερα δικαιώματα από εσάς, και επειδή αυτή η υπηρεσία φορτώνει μια Dll που πιθανόν δεν υπάρχει καν στο σύστημα, θα προσπαθήσει να τη φορτώσει από τη Διαδρομή Συστήματος όπου μπορείτε να γράψετε.
Για περισσότερες πληροφορίες σχετικά με το τι είναι η Διαδρομή Dll Hijacking ελέγξτε:
{% content-ref url="./" %} . {% endcontent-ref %}
Ανέβασμα δικαιωμάτων με Dll Hijacking
Εύρεση ελλιπούς Dll
Το πρώτο πράγμα που χρειάζεστε είναι να αναγνωρίσετε μια διεργασία που εκτελείται με περισσότερα δικαιώματα από εσάς και προσπαθεί να φορτώσει μια Dll από τη Διαδρομή Συστήματος στην οποία μπορείτε να γράψετε.
Το πρόβλημα σε αυτές τις περιπτώσεις είναι ότι πιθανόν αυτές οι διεργασίες ήδη εκτελούνται. Για να βρείτε ποιες Dll λείπουν από τις υπηρεσίες που χρειάζεστε, πρέπει να εκκινήσετε το procmon το συντομότερο δυνατόν (πριν φορτωθούν οι διεργασίες). Έτσι, για να βρείτε τις λείπουσες .dlls, κάντε τα εξής:
- Δημιουργήστε τον φάκελο
C:\privesc_hijacking
και προσθέστε τη διαδρομήC:\privesc_hijacking
στη μεταβλητή περιβάλλοντος System Path. Μπορείτε να το κάνετε χειροκίνητα ή με PS:
# Set the folder path to create and check events for
$folderPath = "C:\privesc_hijacking"
# Create the folder if it does not exist
if (!(Test-Path $folderPath -PathType Container)) {
New-Item -ItemType Directory -Path $folderPath | Out-Null
}
# Set the folder path in the System environment variable PATH
$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
if ($envPath -notlike "*$folderPath*") {
$newPath = "$envPath;$folderPath"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
- Εκκινήστε το
procmon
και πηγαίνετε στιςΕπιλογές
-->Ενεργοποίηση καταγραφής εκκίνησης
και πατήστεΟΚ
στην ειδοποίηση. - Στη συνέχεια, επανεκκινήστε. Όταν ο υπολογιστής επανεκκινηθεί, το
procmon
θα αρχίσει να καταγράφει γεγονότα αμέσως. - Μόλις ξεκινήσει τα Windows, εκτελέστε ξανά το
procmon
, θα σας πει ότι έχει τρέξει και θα σας ζητήσει αν θέλετε να αποθηκεύσετε τα γεγονότα σε ένα αρχείο. Πείτε ναι και αποθηκεύστε τα γεγονότα σε ένα αρχείο. - Αφού δημιουργηθεί το αρχείο, κλείστε το ανοιχτό παράθυρο του
procmon
και ανοίξτε το αρχείο με τα γεγονότα. - Προσθέστε αυτά τα φίλτρα και θα βρείτε όλες τις Dlls που κάποιη διεργασία προσπάθησε να φορτώσει από τον εγγράψιμο φάκελο της διαδρομής του συστήματος:
Λείπουν Dlls
Εκτελώντας αυτό σε ένα εικονικό (vmware) μηχάνημα με Windows 11, πήρα αυτά τα αποτελέσματα:
Σε αυτήν την περίπτωση, τα .exe είναι άχρηστα, οι λείπουσες DLLs ήταν από:
Υπηρεσία | Dll | Εντολή CMD |
---|---|---|
Task Scheduler (Schedule) | WptsExtensions.dll | C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule |
Diagnostic Policy Service (DPS) | Unknown.DLL | C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS |
??? | SharedRes.dll | C:\Windows\system32\svchost.exe -k UnistackSvcGroup |
Αφού βρήκα αυτό, βρήκα αυτήν την ενδιαφέρουσα ανάρτηση σε ιστολόγιο που εξηγεί επίσης πώς να καταχραστείτε το WptsExtensions.dll για ανέλιξη προνομίων. Αυτό είναι αυτό που θα κάνουμε τώρα.
Εκμετάλλευση
Έτσι, για να αναβαθμίσετε τα προνόμια, θα καταχραστούμε τη βιβλιοθήκη WptsExtensions.dll. Έχοντας τη διαδρομή και το όνομα, απλά χρειάζεται να δημιουργήσουμε την κακόβουλη dll.
Μπορείτε να δοκιμάσετε οποιοδήποτε από αυτά τα παραδείγματα. Μπορείτε να εκτελέσετε φορτία όπως: να λάβετε ένα αντίστροφο κέλυφος, να προσθέσετε ένα χρήστη, να εκτελέσετε ένα beacon...
{% hint style="warning" %}
Σημειώστε ότι όχι όλες οι υπηρεσίες τρέχουν με NT AUTHORITY\SYSTEM
, κάποιες τρέχουν επίσης με NT AUTHORITY\LOCAL SERVICE
που έχει λιγότερα προνόμια και δεν θα μπορέσετε να δημιουργήσετε ένα νέο χρήστη καταχρώντας τα δικαιώματά του.
Ωστόσο, αυτός ο χρήστης έχει το προνόμιο seImpersonate
, οπότε μπορείτε να χρησιμοποιήσετε το potato suite για ανέλιξη προνομίων. Έτσι, σε αυτήν την περίπτωση, ένα αντίστροφο κέλυφος είναι μια καλύτερη επιλογή από το να προσπαθήσετε να δημιουργήσετε ένα χρήστη.
{% endhint %}
Τη στιγμή που γράφτηκε αυτό, η υπηρεσία Task Scheduler τρέχει με Nt AUTHORITY\SYSTEM.
Έχοντας δημιουργήσει την κακόβουλη Dll (στην περίπτωσή μου χρησιμοποίησα ένα x64 αντίστροφο κέλυφος και πήρα ένα κέλυφος πίσω, αλλά ο Defender τον σκότωσε επειδή ήταν από το msfvenom), αποθηκεύστε το στον εγγράψιμο φάκελο της διαδρομής του συστήματος με το όνομα WptsExtensions.dll και επανεκκινήστε τον υπολογιστή (ή επανεκκινήστε την υπηρεσία ή κάντε ό,τι χρειάζεται για να επανεκκινήσετε την επηρεασμένη υπηρεσία/πρόγραμμα).
Όταν η υπηρεσία επανεκκινηθεί, η dll θα πρέπει να φορτωθεί και να εκτελεστεί (μπορείτε να επαναχρησιμοποιήσετε το κόλπο του procmon για να ελέγξετε αν η βιβλιοθήκη φορτώθηκε όπως αναμενόταν).
Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
- Εάν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF, ελέγξτε τα [**ΣΧΕΔ