Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
Log in
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/rootdirective-sec/cve-2026-46645-analysis-lab
भेद्यता विश्लेषणवेब एप्लिकेशन शोषणएपीआई सुरक्षा परीक्षणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubrootdirective-sec/cve-2026-46645-analysis-lab

CVE-2026-46645-Analysis-Lab

Docker-आधारित प्रयोगशाला CVE-2026-46645 को पुनः उत्पन्न करने के लिए, SQLAdmin के ajax_lookup एंडपॉइंट में प्राधिकरण बाईपास। इसमें कमजोर और पैच किए गए लक्ष्य, PoC स्क्रिप्ट, और सुरक्षा अनुसंधान और शिक्षा के लिए मैन्युअल curl पुनरुत्पादन चरण शामिल हैं।

रिपॉजिटरी देखें
193 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-46645 - SQLAdmin ajax_lookup Authorization Bypass

कार्यकारी सारांश

इस रिपॉजिटरी में CVE-2026-46645 को पुन: उत्पन्न करने के लिए एक स्थानीय Docker लैब शामिल है, जो SQLAdmin के ajax_lookup एंडपॉइंट को प्रभावित करने वाली एक प्राधिकरण बाईपास भेद्यता है।

SQLAdmin Starlette और FastAPI अनुप्रयोगों में SQLAlchemy मॉडल के लिए एक प्रशासन इंटरफ़ेस है। कमजोर व्यवहार तब होता है जब कोई एप्लिकेशन is_accessible(request) के साथ किसी ModelView को प्रतिबंधित करता है, लेकिन SQLAdmin का ajax_lookup रूट लुकअप परिणाम लौटाने से पहले उसी एक्सेस-नियंत्रण निर्णय को लागू नहीं करता है।

यह लैब दो SQLAdmin संस्करणों की तुलना करता है:

सेवाSQLAdmin संस्करणउद्देश्ययूआरएल
vuln0.25.0कमजोर लक्ष्यhttp://127.0.0.1:8001
patched0.25.1पैच किया गया तुलना लक्ष्यhttp://127.0.0.1:8002

प्रदर्शित भेद्यता श्रृंखला है:```text Authenticated low-privileged user → restricted SQLAdmin ModelView → ModelView.is_accessible(request) returns False → user directly requests the ajax_lookup endpoint → SQLAdmin 0.25.0 returns relationship lookup data → SQLAdmin 0.25.1 blocks the same request with HTTP 403

यह प्रयोगशाला जानबूझकर एक सरल `Report` / `SecretProject` डेटा मॉडल का उपयोग करती है ताकि प्राधिकरण बाईपास को समझना आसान हो सके। ये मॉडल नाम भेद्यता का मूल कारण नहीं हैं। इनका उपयोग केवल एक नियंत्रित पुनरुत्पादन स्थिति बनाने के लिए किया जाता है।

यह प्रयोगशाला केवल नियंत्रित स्थानीय अनुसंधान, स्रोत-स्तरीय समझ और पोर्टफोलियो प्रदर्शन के लिए डिज़ाइन की गई है।

## सत्यापित तथ्य

| दावा                                                                 | साक्ष्य                                                                                                           | इस प्रयोगशाला में कैसे सत्यापित करें                                                                 |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| SQLAdmin का `ajax_lookup` एंडपॉइंट प्रभावित घटक है।          | सार्वजनिक सलाहकार प्रभावित एंडपॉइंट प्रारूप को `GET /{identity}/ajax/lookup?name=<field>&term=<query>` के रूप में वर्णित करता है। | PoC चलाएँ और `/admin/report/ajax/lookup?name=project&term=Secret` के अनुरोधों का निरीक्षण करें। |
| SQLAdmin `0.25.0` का उपयोग भेद्य तुलना लक्ष्य के रूप में किया जाता है।        | प्रयोगशाला `vuln` कंटेनर में `sqladmin==0.25.0` स्थापित करती है।                                                       | `docker compose exec -T vuln python -m pip show sqladmin` चलाएँ।                            |
| SQLAdmin `0.25.1` का उपयोग पैच किए गए तुलना लक्ष्य के रूप में किया जाता है।           | सार्वजनिक सलाहकार और रिलीज़ नोट `0.25.1` को निश्चित संस्करण के रूप में पहचानते हैं।                                          | `docker compose exec -T patched python -m pip show sqladmin` चलाएँ।                         |
| मूल कारण SQLAdmin के अपस्ट्रीम `Admin.ajax_lookup()` रूट में है। | पैच `ajax_lookup()` में गुम प्रमाणीकरण और `is_accessible(request)` प्रवर्तन जोड़ता है।                 | इस README में दिए गए कमांड के साथ दोनों कंटेनरों के अंदर `Admin.ajax_lookup()` का निरीक्षण करें।    |
| प्रयोगशाला एक प्रतिबंधित `ModelView` बनाती है।                             | `ReportAdmin.is_accessible(request)` जानबूझकर `False` लौटाता है।                                                | `app/main.py` का निरीक्षण करें।                                                                    |
| PoC एक प्रमाणित सत्र का उपयोग करता है।                                | PoC पहले `/admin/login` में लॉग इन करता है, सत्र कुकी रखता है, फिर `ajax_lookup` का अनुरोध करता है।                    | `python3 poc/poc.py --base-url http://127.0.0.1:8001` चलाएँ।                                |
| भेद्य संकेत डेटा एक्सपोज़र है।                               | SQLAdmin `0.25.0` एक प्रतिबंधित दृश्य से HTTP 200 और JSON लुकअप परिणाम लौटाता है।                                 | भेद्य लक्ष्य को `Secret Project Alpha` और `Secret Project Beta` वापस करना चाहिए।     |
| पैच किया गया संकेत पहुँच से इनकार है।                                  | SQLAdmin `0.25.1` उसी प्रमाणित अनुरोध के लिए HTTP 403 लौटाता है।                                             | पैच किए गए लक्ष्य को `403 Forbidden` वापस करना चाहिए।                                         |

## मान्यताएँ और अज्ञात

यह प्रयोगशाला भेद्य आधार रेखा के रूप में `sqladmin==0.25.0` और पैच किए गए आधार रेखा के रूप में `sqladmin==0.25.1` का उपयोग करती है।

प्रयोगशाला प्राधिकरण बाईपास स्थिति पर केंद्रित है जहाँ:```text
A user is authenticated,
the target ModelView is not accessible,
but ajax_lookup is requested directly.

लैब हर संभव SQLAdmin परिनियोजन पैटर्न को पुन: प्रस्तुत करने का प्रयास नहीं करती है। यह जानबूझकर एक छोटा Starlette एप्लिकेशन बनाती है जिसमें एक प्रतिबंधित एडमिन दृश्य होता है ताकि कमजोर और पैच किए गए संस्करणों के बीच व्यवहार का अंतर आसानी से सत्यापित किया जा सके।

Report और SecretProject मॉडल केवल लैब-विशिष्ट ऑब्जेक्ट हैं। ये स्वयं SQLAdmin का हिस्सा नहीं हैं।

PoC विशेषाधिकार वृद्धि, डेटा संशोधन, सत्र चोरी, बाहरी कॉलबैक, स्थायित्व, या गैर-लैब सिस्टम के विरुद्ध हमलों का प्रयास नहीं करता है।

मूल कारण सारांश

मूल कारण SQLAdmin के अपस्ट्रीम Admin.ajax_lookup() रूट में है, इस लैब के एप्लिकेशन कोड में नहीं।

SQLAdmin डेवलपर्स को एडमिन व्यूज़ तक पहुंच को प्रतिबंधित करने की अनुमति देता है, निम्नलिखित को ओवरराइड करके:```python ModelView.is_accessible(request)

अन्य एडमिन रूट्स से अपेक्षा की जाती है कि वे अनुरोध को आगे बढ़ने देने से पहले इस एक्सेस-नियंत्रण निर्णय को लागू करें। उदाहरण के लिए, list, create, details, delete, edit और export जैसे रूट्स जाँचते हैं कि क्या वर्तमान अनुरोध लक्ष्य `ModelView` तक पहुँचने की अनुमति है।

कमजोर `ajax_lookup` रूट ने उसी एक्सेस-नियंत्रण निर्णय को लागू नहीं किया।

`ajax_lookup` एंडपॉइंट का उपयोग SQLAdmin की `form_ajax_refs` सुविधा द्वारा संबंध मानों को गतिशील रूप से लोड करने के लिए किया जाता है। इसका एंडपॉइंट प्रारूप है:

/@pk/str:pk/ajax/lookup

/admin/<identity>/ajax/lookup?name=<field>&term=<query>
```
`ajax_lookup()` में, `ModelView` को लक्षित करता है, क्वेरी स्ट्रिंग से लुकअप फ़ील्ड का नाम और सर्च टर्म पढ़ता है, फिर AJAX लोडर को कॉल करता है और JSON परिणाम लौटाता है। सुरक्षा में कमी यह है कि यह पहले यह जाँच नहीं करता कि वर्तमान अनुरोध उस `ModelView` तक पहुँचने की अनुमति रखता है या नहीं।

सुरक्षा प्रभाव यह है कि एक प्रमाणित उपयोगकर्ता सामान्य UI मार्गों के माध्यम से एक प्रतिबंधित व्यवस्थापक दृश्य तक पहुँचने से अवरुद्ध हो सकता है, लेकिन फिर भी वह उस दृश्य के लिए सीधे AJAX लुकअप एंडपॉइंट का अनुरोध कर सकता है और संबंध लुकअप डेटा प्राप्त कर सकता है।

SQLAdmin `0.25.1` `ajax_lookup()` के अंदर एक्सेस कंट्रोल लागू करके इस समस्या को ठीक करता है। पैच किए गए रूट में `model_view.is_accessible(request)` की जाँच की जाती है और जब लक्ष्य दृश्य सुलभ नहीं होता है तो HTTP 403 लौटाया जाता है।

यह लैब `ReportAdmin.is_accessible(request)` को केवल कमजोर स्थिति को पुन: उत्पन्न करने के लिए `False` लौटाने के लिए परिभाषित करता है। लैब कोड मूल कारण नहीं है। यह एक नियंत्रित परीक्षण वातावरण है जो यह साबित करता है कि SQLAdmin का अपस्ट्रीम `ajax_lookup()` रूट एक्सेस-कंट्रोल निर्णय का सम्मान करता है या नहीं।

अपेक्षित व्यवहार अंतर:```text
sqladmin 0.25.0 -> HTTP 200 with JSON lookup results
sqladmin 0.25.1 -> HTTP 403 Forbidden
```
## स्रोत पैच सारांश

महत्वपूर्ण अपस्ट्रीम पैच `Admin.ajax_lookup()` में प्रमाणीकरण और प्राधिकरण प्रवर्तन का जोड़ना है।

पैच किया गया व्यवहार निम्नलिखित के बराबर है:```python
@login_required
async def ajax_lookup(self, request):
    identity = request.path_params["identity"]
    model_view = self._find_model_view(identity)

    if not model_view.is_accessible(request):
        raise HTTPException(status_code=403)
```
टूल डाउनलोड करें