
Panoptic एक ओपन सोर्स पेनेट्रेशन टेस्टिंग टूल है जो पाथ ट्रैवर्सल कमजोरियों के माध्यम से सामान्य लॉग और कॉन्फ़िग फ़ाइलों के लिए सामग्री की खोज और पुनर्प्राप्ति की प्रक्रिया को स्वचालित करता है।

Panoptic एक ओपन सोर्स पेनिट्रेशन टेस्टिंग टूल है जो पाथ ट्रैवर्सल कमजोरियों के माध्यम से सामान्य लॉग और कॉन्फ़िग फ़ाइलों की खोज और पुनर्प्राप्ति को स्वचालित करता है।

--concurrency)--header या
--data मान में FUZZ रखें--base64)/etc/passwd,
बिनलॉग फ़ाइलों के लिए mysql-bin.index पार्स करें--output-format)--resume-file)--config)httpx[socks], rich, rich-argparse, और
tomligit clone https://github.com/lightos/Panoptic.git
cd Panoptic
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
panoptic --version
Windows कमांड प्रॉम्प्ट पर, .venv\Scripts\activate.bat से एक्टिवेट करें;
PowerShell में, .venv\Scripts\Activate.ps1 का उपयोग करें। एडिटेबल इंस्टॉल
--update के लिए Panoptic को इस checkout से जुड़ा रखता है, इसलिए डायरेक्टरी
को यथावत रखें। pip install panoptic न चलाएँ: वह PyPI नाम एक
असंबंधित प्रोजेक्ट का है।
डेवलपमेंट के लिए:
python -m pip install -e ".[dev]"
panoptic --url "http://target/include.php?file=test.txt"
panoptic --url "http://target/include.php?file=test.txt"
panoptic --url "http://target/include.php?file=test.txt&id=1" \
--param file
panoptic --url "http://target/include.php" \
--data "file=test.txt&id=1" --param file
panoptic --url "http://target/view.php/test.txt" --path-based
panoptic --url "http://target/load.php?file=dGVzdC50eHQ=" \
--base64 --auto
panoptic --url "http://target/page.php" \
--header "Cookie: lang=FUZZ" --auto
panoptic --url "http://target/api/load" \
--data '{"file":"FUZZ"}' --auto
panoptic --url "http://target/page.php" \
--header "X-Template: FUZZ" --auto
panoptic --url "http://target/view.php?file=test&type=txt" \
--param file --ext-param type
panoptic --url "http://target/filtered.php?file=test.txt" \
--prefix "....//....//....//....//"
panoptic --url "http://target/include.php?file=test.txt" \
--os "*NIX" --type conf
panoptic --url "http://target/include.php?file=test.txt" \
--software PostgreSQL
panoptic --url "http://target/include.php?file=test.txt" \
--output-format json --output-file results.json \
--resume-file scan.checkpoint
panoptic --url "https://target/include.php?file=test.txt" \
--proxy "socks5://127.0.0.1:9050" --invalid-ssl
panoptic --list software
panoptic --list category
panoptic --list os
panoptic --url "http://target/include.php?file=test.txt" \
--auto --all-versions --concurrency 8
इंजेक्शन बिंदु को चिह्नित करने के लिए --header या --data मानों में
कहीं भी FUZZ रखें। स्कैनिंग के दौरान Panoptic FUZZ को प्रत्येक फ़ाइल पाथ
से बदल देता है। यह उन इंजेक्शन बिंदुओं के परीक्षण को सक्षम बनाता है जिन तक
--param नहीं पहुँच सकता:
| इंजेक्शन प्रकार | उदाहरण |
|---|---|
| कुकी मान | --header "Cookie: theme=FUZZ" |
| कस्टम हेडर | --header "X-Include: FUZZ" |
जब FUZZ मौजूद हो, तो --param आवश्यक नहीं है।
Panoptic स्थायी सेटिंग्स के लिए TOML कॉन्फ़िग फ़ाइलों का समर्थन करता है:
panoptic --url "http://target/include.php?file=test.txt" \
--config ~/.config/panoptic/config.toml
डिफ़ॉल्ट कॉन्फ़िग स्थान: ~/.config/panoptic/config.toml (मौजूद होने पर
स्वचालित रूप से लोड होता है, --config के बिना भी)।
[defaults]
# Any long option name (with dashes as underscores) is accepted here,
# including the target and output destinations.
url = "http://target/include.php?file=test.txt"
concurrency = 8
verbose = true
automatic = true
all_versions = true
output_format = "json"
output_file = "results.json"
log_file = "scan.log"
resume_file = "scan.checkpoint"
[proxy]
url = "socks5://127.0.0.1:9050"
[headers]
user_agent = "Mozilla/5.0"
cookie = "sid=foobar; auth=1"
values = ["X-Forwarded-For: 127.0.0.1"]
प्राथमिकता: CLI आर्ग्स > कॉन्फ़िग फ़ाइल > बिल्ट-इन डिफ़ॉल्ट।
[defaults] तालिका किसी भी स्कैन विकल्प को स्वीकार करती है, केवल प्रदर्शन
ट्यूनिंग ही नहीं। विशेष रूप से आप इन्हें स्थायी रख सकते हैं:
url — डिफ़ॉल्ट टार्गेट (प्रति-रन --url से ओवरराइड करें)output_format, output_file — मशीन-पठनीय परिणाम कहाँ जाते हैंlog_file — कंसोल आउटपुट को फ़ाइल में मिरर करेंresume_file — रिज़्यूम करने योग्य स्कैन के लिए चेकपॉइंट स्थानPanoptic द्वारा लिखी गई संवेदनशील आर्टिफैक्ट्स — लॉग फ़ाइल, परिणाम/सूची
आउटपुट फ़ाइल, और --write-files से सहेजी गई कोई भी फ़ाइलें — POSIX पर केवल-स्वामी
0600 अनुमतियों के लिए बाध्य हैं। O_NOFOLLOW प्रदर्शित करने वाले प्लेटफ़ॉर्म
अंतिम पाथ घटक पर पहले से मौजूद सिमलिंक को परमाणु रूप से अस्वीकार भी करते हैं।
O_NOFOLLOW के बिना प्लेटफ़ॉर्म पर, Panoptic ओपन-पूर्व सिमलिंक/जंक्शन जाँच का
सर्वोत्तम प्रयास करता है, लेकिन यह जाँच रेस को समाप्त नहीं कर सकती।
Windows मोड बिट्स NTFS ACLs कॉन्फ़िगर नहीं करते हैं, इसलिए जब आर्टिफैक्ट्स में
संवेदनशील डेटा हो सकता है तो उचित रूप से प्रतिबंधित डायरेक्टरी का उपयोग करें।
प्रत्येक बूलियन फ़्लैग का --no- समकक्ष होता है, इसलिए कॉन्फ़िग फ़ाइल में true
पर सेट मान को फ़ाइल को संपादित किए बिना एकल रन के लिए बंद किया जा सकता है:
# config.toml sets verbose = true and automatic = true
panoptic --url "http://target/x.php?file=test.txt" --no-verbose --no-auto
चूँकि छोड़ा गया बूलियन फ़्लैग अनसेट रहता है (false पर डिफ़ॉल्ट होने के बजाय),
कॉन्फ़िग मान तब तक उपयोग किया जाता है जब तक आप फ़्लैग या उसके --no- रूप को
स्पष्ट रूप से पास नहीं करते।
HTTP(S) या SOCKS प्रॉक्सी के माध्यम से ट्रैफ़िक रूट करें:
panoptic --url "https://target/x.php?file=test.txt" \
--proxy "socks5://127.0.0.1:9050"
http://, https://, socks5://, socks5h://
(socks5h प्रॉक्सी के माध्यम से DNS हल करता है — Tor के लिए और
स्थानीय DNS लीक से बचने के लिए उपयोगी)। SOCKS4 अंतर्निहित HTTP
क्लाइंट द्वारा समर्थित नहीं है। स्कैन शुरू होने से पहले स्कीम और होस्ट सत्यापित किए जाते हैं।httpx[socks] एक्स्ट्रा से आता है, जो डिफ़ॉल्ट रूप से
इंस्टॉल होता है।HTTP_PROXY / HTTPS_PROXY /
NO_PROXY पर्यावरण चरों का सम्मान करता है। उन्हें बायपास करने और सीधे
कनेक्ट करने के लिए --ignore-proxy पास करें (यह किसी भी env-कॉन्फ़िगर्ड
प्रॉक्सी को भी अक्षम करता है)।--invalid-ssl के साथ मिलाएँ। यह सर्टिफिकेट सत्यापन अक्षम करता है और
अविश्वसनीय नेटवर्क पर असुरक्षित है।--all-versions)कुछ बंडल किए गए पाथ वर्जन टेम्पलेट हैं (उदाहरण के लिए [JBOSS] के रूप में
लिखे गए JBoss रिलीज़ डायरेक्टरी)। डिफ़ॉल्ट रूप से ये टेम्पलेट पंक्तियाँ छोड़
दी जाती हैं, क्योंकि एक शाब्दिक [JBOSS] पाथ कभी भी वास्तविक फ़ाइल से मेल नहीं
खा सकता। --all-versions पास करने पर प्रत्येक टेम्पलेट बंडल किए गए वर्जन सूची
के विरुद्ध विस्तारित होता है, प्रति ज्ञात वर्जन एक ठोस पाथ जोड़ता है — काफी
बड़ा लेकिन कहीं अधिक गहन स्कैन:
panoptic --url "http://target/x.php?file=test.txt" --auto --all-versions
Panoptic किसी पाथ को केवल टार्गेट-नियंत्रित Content-Length हेडर से वर्गीकृत
नहीं करता। यह पूर्ण सामान्यीकृत बॉडी की तुलना अमान्य-पाथ बेसलाइन से करता है।
एक सस्ती समानता ऊपरी सीमा पूर्ण तुलना से तभी बचती है जब वह पहले ही सिद्ध कर
सके कि बॉडी भिन्न हैं; अस्पष्ट प्रतिक्रियाएँ पुनः-क्रमित बॉडी फ़ॉल्स नेगेटिव
से बचने के लिए सटीक अनुपात का उपयोग करती हैं।
--resume-file PATH पूर्ण किए गए केस रिकॉर्ड करता है ताकि एक बाधित स्कैन
वहीं से जारी रह सके जहाँ उसने छोड़ा था:
panoptic --url "http://target/x.php?file=test.txt" \
--resume-file scan.checkpoint
# ... interrupt with Ctrl-C, then re-run the same command to resume
चेकपॉइंट केवल पूर्ण किए गए केस ID और स्कैन परिभाषा (URL, इंजेक्शन पैरामीटर, डिटेक्शन विकल्प, हेडर, कुकी, User-Agent और सटीक केस सेट) का SHA-256 फ़िंगरप्रिंट संग्रहीत करता है। यह कभी भी क्रेडेंशियल, हेडर या URL को प्लेनटेक्स्ट में संग्रहीत नहीं करता।
रिज़्यूम पर, फ़िंगरप्रिंट पुनर्गणना और तुलना की जाती है। यदि स्कैन का अर्थ बदलने
वाली कोई चीज़ भिन्न हो — एक अलग टार्गेट, पैरामीटर, हेडर, कुकी, फ़िल्टर सेट, या
--all-versions टॉगल — तो चेकपॉइंट को चेतावनी के साथ अस्वीकार कर दिया जाता है
और स्कैन नए सिरे से शुरू होता है, ताकि एक पुराना चेकपॉइंट कभी भी किसी भिन्न
स्कैन के केस को मौन रूप से स्किप न कर सके। लीगेसी बेयर-लिस्ट चेकपॉइंट चेतावनी
के साथ स्वीकार किए जाते हैं और वर्तमान स्कैन में मौजूद केस ID तक सीमित होते
हैं; चूँकि उस पुराने प्रारूप में कोई फ़िंगरप्रिंट नहीं है, उपयोगकर्ताओं को इसे
नए लिखे गए प्रारूप से बदल देना चाहिए। विफल (नेटवर्क-त्रुटि) अनुरोधों को
जानबूझकर चेकपॉइंट नहीं किया जाता है ताकि रिज़्यूम पर उन्हें पुनः प्रयास
किया जा सके।
panoptic --version # print the installed version and exit
panoptic --update # fast-forward update from the official GitHub repo
--update केवल उस git checkout से काम करता है जिसका origin रिमोट HTTPS या
SSH उपयोग करता है और आधिकारिक अपस्ट्रीम से मेल खाता है (पुल करने से पहले
सत्यापित किया जाता है, असुरक्षित या छेड़छाड़ किए गए रिमोट कॉन्फ़िगरेशन का
प्रतिरोध करने के लिए)। यह चेकआउट किए गए main ब्रांच को स्पष्ट अपस्ट्रीम
main रेफ से फास्ट-फॉरवर्ड करता है। गैर-checkout इंस्टॉलेशन को आधिकारिक
GitHub आर्काइव से सुरक्षित रूप से रीफ़्रेश किया जा सकता है:
python -m pip install --upgrade https://github.com/lightos/Panoptic/archive/refs/heads/main.zip
Checkout से चलाने पर, बैनर वर्तमान शॉर्ट git रिवीज़न भी दिखाता है।
Panoptic पारंपरिक प्रोसेस एग्ज़िट कोड का उपयोग करता है ताकि इसे स्क्रिप्ट किया जा सके:
0 — सफलता: स्कैन (या --list / --update) पूर्ण हुआ। जो व्यक्तिगत
अनुरोध अपने रीट्राय समाप्त कर लेते हैं, उनके बारे में चेतावनी दी जाती है और
वे रिज़्यूम किए गए स्कैन के लिए पात्र रहते हैं, लेकिन वे अन्यथा सफल रन को
विफल नहीं करते।1 — अमान्य उपयोग: अनुपलब्ध या अमान्य आर्गुमेंट, या कोई इंजेक्ट करने
योग्य पैरामीटर नहीं मिला।2 — परिचालन विफलता: कनेक्ट नहीं कर सकते, कोई मेल खाते टेस्ट केस नहीं,
सभी क्यू किए गए अनुरोध विफल, या कोई वर्कर, चेकपॉइंट, आउटपुट राइट या
कॉन्फ़िगरेशन विफल।130 — उपयोगकर्ता द्वारा बाधित (Ctrl-C / SIGINT)।योगदान का स्वागत है! कृपया GitHub पर issues या pull requests खोलें।
सुरक्षित, प्रतिलिपि योग्य एंड-टू-एंड परीक्षण के लिए, Panoptic LFI Testbed देखें। यह Panoptic के समर्थित इंजेक्शन विधियों और ट्रैवर्सल ट्रांसफ़ॉर्मेशन को कवर करने वाले जानबूझकर असुरक्षित एंडपॉइंट्स प्रदान करता है।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है — विवरण के लिए LICENSE फ़ाइल देखें।
0600 अनुमतियों के साथ संवेदनशील आर्टिफैक्ट्स को
सुरक्षित किया गया और जहाँ OS समर्थन करता है वहाँ अंतिम-घटक सिमलिंक सुरक्षा--update)| JSON बॉडी | --data '{"template":"FUZZ"}' |
| नेस्टेड मान | --header "Cookie: sid=abc; lang=FUZZ" |