
CVE-2025-2945 के लिए एक्सप्लॉइट और परीक्षण स्टैंड
यह CVE-2025-2945 पर मेरा शोध है। इस रिपॉजिटरी में postgress और असुरक्षित pgadmin के साथ एक परीक्षण स्टैंड, साथ ही एक एक्सप्लॉइट शामिल है।
उपयोगी लिंक:
pgAdmin बैकएंड में, जो Python में लिखा गया है, दो एंडपॉइंट हैं जिनमें उचित सैनिटाइज़ेशन की कमी है। एंडपॉइंट हैं:
/sqleditor/query_tool/download - query_commited पैरामीटर/cloud/deploy - high_availability पैरामीटरआइए sqleditor के कोड को देखें:
for key, value in data.items():
if key == 'query':
sql = value
if key == 'query_commited':
query_commited = (
eval(value) if isinstance(value, str) else value
)
यहाँ हम देखते हैं कि query_commited का मान सीधे eval() फ़ंक्शन को पास किया जाता है। आप eval के दस्तावेज़ देख सकते हैं।
pgacloud के कोड को भी देखें:
def _create_google_postgresql_instance(self, args):
credentials = self._get_credentials(self._scopes)
service = discovery.build('sqladmin', 'v1beta4',
credentials=credentials)
high_availability = \
'REGIONAL' if eval(args.high_availability) else 'ZONAL'
यहाँ भी यही समस्या है।
इन एंडपॉइंट्स तक पहुँचने के लिए अभी भी मान्य क्रेडेंशियल्स और pgadmin तक पहुँच आवश्यक है। लेकिन कोई भी हमलावर, जो इसे एक्सेस कर सकता है, eval को कोई भी मान पास कर सकता है। जो किसी भी Python वन-लाइनर को निष्पादित करने के बराबर है।
एक्सप्लॉइटेशन काफी सीधा है। exploit/src/main.py देखें। रिवर्स शेल पाने के लिए कॉन्फ़िग अपडेट करना न भूलें।
स्टैंड सेटअप करने के लिए यह चलाएँ:
cd stand
docker compose up -d
बस इतना ही। pgAdmin अब http://localhost:8080 पर उपलब्ध है। डिफ़ॉल्ट क्रेडेंशियल्स हैं:
[email protected]
admin
बेझिझक .env फ़ाइल और stand/init-db/01-init.sql को संपादित करें।
I3r1h0n द्वारा निर्मित।