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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
engagement-mgr — Engagement Manager एक वेब एप्लिकेशन है जो ऑफेंसिव सिक्योरिटी एंगेजमेंट्स को ट्रैक करने के लिए है। इसमें एक आधुनिक UI है, जो Next.js, Prisma, और PostgreSQL के साथ बनाया गया है। | Kitploit
उपकरण/GitHubGitHub/leebaird/engagement-mgr
रक्षात्मक उपकरणभेद्यता विश्लेषणवेब सुरक्षापेनिट्रेशन टेस्टिंगउपयोगिताएँ और फ्रेमवर्कलर्निंग और शिक्षारेड टीमिंगघटना प्रतिक्रिया
GitHubleebaird/engagement-mgr

engagement-mgr

Engagement Manager एक वेब एप्लिकेशन है जो ऑफेंसिव सिक्योरिटी एंगेजमेंट्स को ट्रैक करने के लिए है। इसमें एक आधुनिक UI है, जो Next.js, Prisma, और PostgreSQL के साथ बनाया गया है।

24382 दिन पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
रिपॉजिटरी देखें
साझा करें

Engagement Manager

Engagement Manager आक्रामक सुरक्षा एंगेजमेंट्स को ट्रैक करने के लिए एक वेब एप्लिकेशन है। इसमें Next.js, Prisma, और PostgreSQL के साथ बनाया गया एक आधुनिक UI है। ऐप में एक कैलेंडर, एंगेजमेंट्स, क्लाइंट्स, कॉन्टैक्ट्स, फाइंडिंग्स, और ऑपरेटर्स शामिल हैं।

License: MIT

  • Twitter Follow Lee Baird @discoverscripts
  • Twitter Follow Jay "L1ghtn1ng" Townsend @jay_townsend1

स्क्रीनशॉट्स

Dashboard

विषय-सूची

  • स्क्रीनशॉट्स
  • फाइंडिंग्स लिखना और PDF रिपोर्ट तैयार करना
    • रिपोर्टिंग सुरक्षा और परिनियोजन
    • सत्यापन
  • पूर्वापेक्षाएँ
  • पर्यावरण कॉन्फ़िगरेशन
  • डेटाबेस सेटअप
    • डेवलपमेंट
    • प्रोडक्शन
  • इंस्टॉलेशन
    • स्वचालित सेटअप (Ubuntu)
      • हार्डन्ड सेटअप और बैकअप के लिए अपग्रेड नोट्स
    • मैनुअल सेटअप
  • एप्लिकेशन चलाना
  • प्रोडक्शन परिनियोजन
    • आवश्यकताएँ
    • परिनियोजन चरण
    • प्रोडक्शन चेकलिस्ट
  • डिफ़ॉल्ट क्रेडेंशियल्स
  • सर्वर माइग्रेशन (बैकअप / रिस्टोर / रीसेट)
  • कार्यान्वयन योजना और आर्किटेक्चर
    • टेक्नोलॉजी स्टैक
    • डेटाबेस स्कीमा
    • नए फ़ील्ड जोड़ना
    • सुरक्षा आर्किटेक्चर

फाइंडिंग्स लिखना और PDF रिपोर्ट तैयार करना

  • राइटिंग वर्कस्पेस: Markdown संपादन और सुरक्षित पूर्वावलोकन के लिए किसी फाइंडिंग के Write & review लिंक को खोलें। निजी ड्राफ़्ट 15 सेकंड की निष्क्रियता के बाद या मांग पर सहेजे जाते हैं; वे सर्वर पर संग्रहीत होते हैं, ब्राउज़र के लोकल स्टोरेज में नहीं। दोबारा खोलने के बाद किसी ड्राफ़्ट को स्पष्ट रूप से पुनर्प्राप्त करें। परस्पर विरोधी सेव एडिटर के टेक्स्ट को सुरक्षित रखती हैं और वर्तमान रिवीज़न के साथ तुलना की आवश्यकता होती है। टेक्स्ट रिवीज़न का निरीक्षण और पुनर्स्थापन किया जा सकता है; पुनर्स्थापन हटाए गए साक्ष्य को पुनर्स्थापित नहीं करता।
  • पुन: प्रयोज्य टेम्पलेट्स: शीर्षक, श्रेणी या गंभीरता के आधार पर अनुमोदित शब्दावली खोजें। उपयोगकर्ता टेम्पलेट्स प्रस्तावित कर सकते हैं; प्रशासक उन्हें क्यूरेट और अनुमोदित करते हैं। किसी टेम्पलेट को लागू करने से खाली अवलोकनों, प्रभावित होस्ट्स और साक्ष्य के साथ एक स्वतंत्र एंगेजमेंट फाइंडिंग बनती है, जिससे किसी अन्य एंगेजमेंट के प्रमाण का आकस्मिक पुन: उपयोग रोका जाता है।
  • साक्ष्य: अधिकतम चार PNG/JPEG छवियाँ एक साथ अपलोड या पेस्ट करें, कैप्शन जोड़ें, और राइटिंग वर्कस्पेस में कैप्शन/क्रम संपादित करें। छवियों को डिकोड किया जाता है, मेटाडेटा हटाया जाता है, अधिकतम 2000 × 2000 पिक्सेल तक आकार बदला जाता है, और PNG के रूप में सहेजा जाता है। यदि मूल बाइट्स या मेटाडेटा आवश्यक हो तो मूल फ़ॉरेंसिक साक्ष्य अलग से रखें।
  • समीक्षा: पूर्ण फाइंडिंग्स को Draft/Changes Requested से Ready पर भेजें। वर्तमान लेखक के अलावा एक नियुक्त समीक्षक या प्रशासक अनुमोदन या परिवर्तन का अनुरोध कर सकता है। प्रशासक समीक्षक नियुक्त करते हैं। टेक्स्ट, साक्ष्य और पुनर्स्थापित-रिवीज़न परिवर्तन अनुमोदन को रद्द कर देते हैं। समीक्षा कतार, टिप्पणियाँ, तैयारी चेकलिस्ट और रिवीज़न इतिहास हैंड-ऑफ का समर्थन करते हैं।
  • PDF रिपोर्ट्स: Reports में एक एंगेजमेंट चुनें, उसका कार्यकारी सारांश लिखें, फाइंडिंग्स चुनें/क्रमित करें और सेटिंग्स सहेजें। ड्राफ़्ट PDF स्पष्ट रूप से चिह्नित होते हैं। केवल प्रशासक ही अंतिम PDF जारी कर सकते हैं, और प्रत्येक चयनित फाइंडिंग अनुमोदित होनी चाहिए और तैयारी जाँच पास करनी चाहिए। प्रत्येक जारी किया गया संस्करण अपना PDF, स्पष्ट सामग्री स्नैपशॉट और SHA-256 डाइजेस्ट संग्रहीत करता है; बाद के संपादन इसे पुन: उत्पन्न नहीं करते। पैरेंट एंगेजमेंट को हटाने पर मौजूदा लाइफसाइकल के माध्यम से उसकी रिपोर्ट्स भी हट जाती हैं।
  • स्कैनर इम्पोर्ट्स: किसी एक्सपोर्ट का पूर्वावलोकन करें, फाइंडिंग्स चुनें, फिर पुष्टि करें। इम्पोर्ट्स कभी स्कैन निष्पादित नहीं करते या लक्ष्यों से संपर्क नहीं करते। सर्वर-साइड फिंगरप्रिंटिंग उसी एंगेजमेंट में मेल खाती फाइंडिंग्स को छोड़ देती है; सभी नए रिकॉर्ड Draft के रूप में शुरू होते हैं और एक ऑपरेटर द्वारा जाँचे जाने चाहिए।

एक्सपोर्ट्स प्रति इम्पोर्ट 2 MB और 500 फाइंडिंग्स तक सीमित हैं, प्रति-उपयोगकर्ता पूर्वावलोकन और पुष्टि दर सीमाओं के साथ। एप्लिकेशन कुल मिलाकर अधिकतम 10,000 फाइंडिंग्स और मैनुअल निर्माण, टेम्पलेट्स और स्कैनर इम्पोर्ट्स में एक एंगेजमेंट के लिए 500 स्वीकार करता है। वैश्विक Findings सूची प्रति पृष्ठ 100 पंक्तियाँ लोड करती है, और एंगेजमेंट/रिपोर्ट फाइंडिंग क्वेरीज़ उसी प्रति-एंगेजमेंट सीमा से सीमित हैं। अज्ञात लेआउट स्पष्ट रूप से विफल होते हैं बजाय चुपचाप एक सफल इम्पोर्ट के रूप में माने जाने के। स्कैनर गंभीरताएँ सुझाव हैं: अनुमोदन से पहले उनके संदर्भ की समीक्षा करें। संदर्भित URLs, HTML और एम्बेडेड रिमोट छवियाँ न तो फ़ेच की जाती हैं न निष्पादित की जाती हैं।

रिपोर्ट्स 1–100 फाइंडिंग्स, अधिकतम 100 साक्ष्य छवियाँ (प्रत्येक 5 MB, कुल इनपुट 20 MB), 500 पृष्ठ और 25 MB आउटपुट की अनुमति देती हैं। जारी करना प्रति एंगेजमेंट 50 संस्करणों और पूरे एप्लिकेशन में 1 GB जारी किए गए PDFs तक सीमित है। पूर्वावलोकन और जारी करने की प्रति-उपयोगकर्ता दर सीमाएँ हैं, और एक समय में प्रति एप्लिकेशन प्रक्रिया केवल एक PDF रेंडर स्वीकार किया जाता है। फाइंडिंग्स अधिकतम 1000 रिवीज़न और 500 टिप्पणियाँ बनाए रखती हैं; सीमा तक पहुँचने पर इतिहास को अधिलेखित किए बिना विफल हो जाता है। DejaVu फ़ॉन्ट्स और उनका पुनर्वितरण लाइसेंस assets/fonts में शामिल हैं; परिनियोजन को इन एसेट्स को बनाए रखना चाहिए (Next आउटपुट ट्रेसिंग उन्हें शामिल करती है)।

Next.js Server Actions साक्ष्य अपलोड के लिए एक ही 25mb बॉडी साइज़ सीमा (जो next.config.ts में सेट है) साझा करते हैं। लॉगिन प्रमाणीकरण या डेटाबेस कार्य से पहले 4 KB स्ट्रीमिंग सीमा के साथ एक समर्पित समान-मूल URL-एन्कोडेड रूट का उपयोग करता है।

रिपोर्टिंग सुरक्षा और परिनियोजन

यह मौजूदा साझा प्रमाणित वर्कस्पेस को संरक्षित रखता है, न कि एक नया प्रति-क्लाइंट टेनेंसी मॉडल। सभी नए पृष्ठ, क्रियाएँ और PDF डाउनलोड एक वर्तमान डेटाबेस-समर्थित सत्र की जाँच करते हैं। ड्राफ़्ट उनके स्वामी तक सीमित हैं; समीक्षा, टेम्पलेट अनुमोदन और जारी करने की अनुमतियाँ सर्वर-साइड लागू की जाती हैं। गोपनीय PDF प्रतिक्रियाएँ private/no-store हैं। अंतिम PDFs में केवल एक स्पष्ट रिपोर्ट फ़ील्ड allowlist होती है, कभी भी निजी ड्राफ़्ट, समीक्षा टिप्पणियाँ या असंबंधित एंगेजमेंट्स नहीं।

कार्यान्वयन OWASP Top 10:2025 चेकलिस्ट का उपयोग करता है: एक्सेस जाँच (A01), निजी प्रतिक्रियाएँ और मौजूदा CSP/CSRF नियंत्रण (A02), पिन किए गए डिपेंडेंसीज़ और CI (A03), मौजूदा सत्र/सीक्रेट सुरक्षा के साथ-साथ रिपोर्ट अखंडता जाँच (A04/A08), निष्क्रिय Markdown/XML और पैरामीटरयुक्त डेटाबेस एक्सेस (A05), सीमित प्रोसेसिंग और स्वतंत्र समीक्षा (A06), लाइव सत्र जाँच (A07), सामग्री-रहित ऑडिट इवेंट्स (A09), और विफलता पर क्लीनअप के साथ ट्रांज़ैक्शनल परिवर्तन (A10)। एक डाइजेस्ट आकस्मिक भ्रष्टाचार का पता लगाता है; यह डिजिटल हस्ताक्षर या डेटाबेस प्रशासक से सुरक्षा नहीं है। यह अनुपालन प्रमाणन नहीं है। प्रोडक्शन के लिए अभी भी HTTPS, संरक्षित डेटाबेस/बैकअप स्टोरेज और ऑडिट आउटपुट की परिचालन निगरानी की आवश्यकता है।

इस अपग्रेड को परिनियोजित करने से पहले, एक सामान्य एप्लिकेशन बैकअप लें और npm run db:migrate के साथ एडिटिव 20260904221808_reporting_workflow और 20260906194500_add_revocable_sessions माइग्रेशन लागू करें, फिर Prisma Client पुन: उत्पन्न करें और पुनर्निर्माण करें। मौजूदा फाइंडिंग्स संस्करण 1 पर Draft के रूप में शुरू होती हैं, और मौजूदा ब्राउज़र कुकीज़ को फिर से साइन इन करना होगा ताकि उन्हें सर्वर-समर्थित सत्र ID प्राप्त हो। किसी मौजूदा डेटाबेस को रीसेट न करें। बैकअप में मौजूदा पूर्ण-डेटाबेस एक्सपोर्ट के माध्यम से नई तालिकाएँ और जारी किए गए PDFs शामिल होते हैं।

सत्यापन```bash

npm test npm run lint npx tsc --noEmit --noUnusedLocals --noUnusedParameters npm run build npm audit

root@kitploit:~
`npm test` Node के non-isolated test mode का उपयोग `tsx` के साथ करता है ताकि व्यक्तिगत TypeScript test cases निष्पादित हों, न कि केवल file subprocess की सफलता की रिपोर्ट करें। CI में स्पष्ट assertion totals दिखाई देते रहें।

Database और browser regressions के लिए migrations लागू किए गए एक **समर्पित local database जिसका नाम `reporting_tests` है** की आवश्यकता होती है। ये अपनी fixture rows स्वयं बनाते और हटाते हैं; इन tests को कभी भी किसी application database पर न लगाएँ। `REPORTING_TEST_DATABASE_URL` को उस test database पर सेट करें, फिर चलाएँ:```bash
DATABASE_URL="$REPORTING_TEST_DATABASE_URL" npx prisma migrate deploy
npm run test:reporting
npx playwright install chromium
npm run test:browser

ब्राउज़र सूट पोर्ट 3317 पर एक टेस्ट-ओनली सेशन सीक्रेट के साथ अपना खुद का लूपबैक डेवलपमेंट सर्वर शुरू करता है; यह किसी मौजूदा सर्वर का पुनः उपयोग करने से इंकार करता है। यदि वांछित हो तो REPORTING_TEST_BROWSER को किसी इंस्टॉल किए गए Chromium एक्ज़ीक्यूटेबल पर सेट करें। यह ड्राफ्ट प्राइवेसी, परस्पर विरोधी संपादनों, एविडेंस अपलोड, स्वतंत्र समीक्षा, PDF अनुमतियों/अपरिवर्तनीयता, JavaScript के बिना टेम्पलेट निर्माण, और चयनात्मक डीडुप्लिकेटेड इम्पोर्ट्स का परीक्षण करता है। इंटीग्रेशन टेस्ट वास्तविक ट्रांज़ैक्शनल कॉन्फ्लिक्ट्स और रोलबैक का अभ्यास करते हैं। ये सूट रिमोट-LAN, Safari या प्रोडक्शन-डिप्लॉयमेंट सत्यापन का विकल्प नहीं हैं।

पूर्वापेक्षाएँ

यह एप्लिकेशन Ubuntu पर चलने के लिए डिज़ाइन किया गया है, और इसके लिए निम्नलिखित की आवश्यकता है:```bash sudo apt update && sudo apt install -y nodejs npm postgresql postgresql-client postgresql-contrib zip

root@kitploit:~
`postgresql-client` `pg_dump`, `pg_restore`, और `psql` प्रदान करता है; `zip` बैकअप आर्काइव बनाता है। रिस्टोर एक्सट्रैक्शन को एप्लिकेशन द्वारा सख्त एंट्री और साइज़ वैलिडेशन के साथ संभाला जाता है।

पैकेज इंस्टॉल करने से PostgreSQL हमेशा चलता हुआ नहीं रहता। रोल बनाने या ऐप शुरू करने से पहले सेवा को स्टार्ट और एनेबल करें:```bash
sudo systemctl enable --now postgresql
sudo systemctl status postgresql --no-pager

यदि ऐप बाद में Can't reach database server at 127.0.0.1:5432 के साथ विफल होता है, तो sudo systemctl start postgresql चलाएँ और pg_isready -h 127.0.0.1 -p 5432 से पुष्टि करें।

ऐप के लिए Node.js ^22.12.0 या >=24.0.0 आवश्यक है (package.json में engines देखें)। यदि OS पैकेज पुराना है, तो किसी विश्वसनीय पैकेज स्रोत से एक समर्थित रिलीज़ इंस्टॉल करें जिसके हस्ताक्षर आप setup.sh चलाने से पहले सत्यापित करें।

Environment Configuration

Prisma या ऐप चलाने से पहले प्रोजेक्ट रूट में एक .env फ़ाइल बनाएँ:```bash cat > .env << 'EOF' DATABASE_URL="postgresql://em_admin:em_pass@localhost:5432/engagement_manager?schema=public" JWT_SECRET="replace-with-a-long-random-secret-at-least-32-characters" EOF chmod 600 .env

root@kitploit:~
| वेरिएबल | आवश्यक | नोट्स |
|----------|----------|-------|
| `DATABASE_URL` | हाँ | PostgreSQL कनेक्शन स्ट्रिंग। Prisma `schema=public` क्वेरी पैरामीटर का उपयोग करता है। बैकअप और रिस्टोर एक owner-only अस्थायी pgpass फ़ाइल का उपयोग करते हैं ताकि पासवर्ड subprocess arguments में न रखा जाए। |
| `JWT_SECRET` | प्रोडक्शन में हाँ | कम से कम **32 अक्षर** का होना चाहिए। इसके बिना ऐप प्रोडक्शन में शुरू होने से मना कर देता है। इसे रोटेट करने पर सभी मौजूदा सेशन अमान्य हो जाते हैं। |
| `TRUST_PROXY` | नहीं | इसे `1` (या `true`) पर तभी सेट करें जब ऐप किसी रिवर्स प्रॉक्सी के पीछे हो जो `X-Forwarded-For` / `X-Real-IP` और `X-Forwarded-Host` को **ओवरराइट** करता हो। इस मोड में मौजूद होने पर लॉगिन ऑरिजिन जाँचें `X-Forwarded-Host` का उपयोग करती हैं; इसमें एक पब्लिक होस्ट होना चाहिए, जिसमें उपयोग किए जाने पर नॉन-डिफ़ॉल्ट पोर्ट भी शामिल हो। अन्यथा प्रॉक्सी को पब्लिक `Host` हेडर संरक्षित रखना चाहिए। सटीक प्रति-स्रोत लॉगिन सीमाओं के लिए यह आवश्यक प्रोडक्शन टोपोलॉजी है। जब यह सेट न हो, तो स्पूफ़िंग रोकने के लिए हेडर अनदेखा किए जाते हैं और लॉगिन एक उच्चतर एक-मिनट का साझा फ़ॉलबैक बजट उपयोग करता है ताकि कोई एक क्लाइंट 15-मिनट का ग्लोबल लॉकआउट न लगा सके। |
| `ALLOWED_DEV_ORIGINS` | नहीं | **केवल डेवलपमेंट के लिए।** `/_next` एसेट्स लोड करने के लिए अनुमत अतिरिक्त होस्टनाम (कॉमा-सेपरेटेड)। सर्वर के वर्तमान LAN IPv4 पते स्वतः अनुमत होते हैं। स्थिर DNS नाम के लिए इसका उपयोग करें। प्रोडक्शन बिल्ड इसे अनदेखा करते हैं। |

एक मज़बूत सीक्रेट जनरेट करें:```bash
openssl rand -base64 32

डेटाबेस सेटअप

सुनिश्चित करें कि PostgreSQL पहले से चल रहा है (देखें पूर्वापेक्षाएँ)। स्वचालित ./setup.sh आपके लिए सेवा शुरू कर देता है; नीचे दिए गए मैन्युअल चरण मानते हैं कि यह पहले से चालू है।

विकास

PostgreSQL डेटाबेस और उपयोगकर्ता बनाने के लिए निम्नलिखित कमांड चलाएँ:```bash sudo -u postgres createuser --pwprompt em_admin sudo -u postgres psql -c "ALTER USER em_admin CREATEDB;" sudo -u postgres createdb --owner=em_admin engagement_manager sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE engagement_manager TO em_admin;"

root@kitploit:~
### प्रोडक्शन

एक समर्पित डेटाबेस उपयोगकर्ता का उपयोग करें जिसके पास **न्यूनतम विशेषाधिकार** हों — `CREATEDB` या सुपरयूज़र अधिकार न दें:```bash
sudo -u postgres createuser --pwprompt em_app
sudo -u postgres createdb --owner=em_app engagement_manager

DATABASE_URL को em_app (या आपके चुने हुए उपयोगकर्ता नाम) का उपयोग करने के लिए सेट करें। माइग्रेशन इस उपयोगकर्ता के रूप में npm run db:migrate के माध्यम से चलते हैं।

नोट: डेटाबेस फ़ाइलें PostgreSQL डेटा निर्देशिका (आमतौर पर /var/lib/postgresql/<version>/main/) में संग्रहीत होती हैं।

इंस्टॉलेशन

स्वचालित सेटअप (Ubuntu)

रिपॉज़िटरी रूट से, चलाएँ:```bash chmod +x setup.sh ./setup.sh

root@kitploit:~
स्क्रिप्ट पूर्वापेक्षाएँ इंस्टॉल करती है, PostgreSQL सेवा शुरू और सक्षम करती है, डेटाबेस उपयोगकर्ता नाम और पासवर्ड के लिए प्रॉम्प्ट करती है, एक `chmod 600` `.env` लिखती है, PostgreSQL रोल और डेटाबेस बनाती है, माइग्रेशन लागू करती है, और डिफ़ॉल्ट एडमिन खाता सीड करती है। प्रोडक्शन मोड `npm run build` भी पूरा करता है और केवल प्रोडक्शन स्टार्ट कमांड प्रिंट करता है। यह रिमोट शेल स्क्रिप्ट से Node.js इंस्टॉल नहीं करती; पहले एक समर्थित Node.js रिलीज़ इंस्टॉल करें।

हेडलेस या CI उपयोग के लिए:```bash
sudo install -d -m 700 -o "$USER" /secure
openssl rand -base64 24 > /secure/db-password
chmod 600 /secure/db-password
./setup.sh -y --db-user=em_admin --db-pass-file=/secure/db-password

./setup.sh --help को सभी विकल्पों के लिए चलाएँ।

हार्डन्ड सेटअप और बैकअप के लिए अपग्रेड नोट्स

  • --db-pass=... हटा दिया गया था क्योंकि कमांड-लाइन सीक्रेट्स अन्य प्रक्रियाओं को दिखाई देते हैं। पासवर्ड को केवल-मालिक फ़ाइल में रखें और पुराने आर्ग्युमेंट को --db-pass-file=/secure/db-password से बदलें; ऊपर दिया गया स्वचालित सेटअप उदाहरण कॉपी-पेस्ट के लिए तैयार है।
  • setup.sh अब Node.js इंस्टॉल नहीं करता है। इसे चलाने से पहले किसी विश्वसनीय पैकेज स्रोत से एक समर्थित Node.js रिलीज़ (^22.12.0 या >=24.0.0) इंस्टॉल करें।
  • डिपेंडेंसी इंस्टॉलेशन अब npm ci का उपयोग करता है, इसलिए package-lock.json का मौजूद होना और package.json के साथ सिंक में होना आवश्यक है।
  • लेगेसी .sql बैकअप को रीस्टोर नहीं किया जा सकता। पुराने सर्वर को रिटायर करने से पहले, इसे ऐसे संस्करण में अपग्रेड करें जो संरचित एप्लिकेशन बैकअप बना सके और डेटा को .zip के रूप में पुनः निर्यात कर सके।

मैनुअल सेटअप

  1. Node.js डिपेंडेंसी इंस्टॉल करें: ```bash npm ci
    root@kitploit:~
  2. तालिकाएँ बनाने के लिए डेटाबेस माइग्रेशन चलाएँ: ```bash npx prisma migrate dev
    root@kitploit:~
  3. डिफ़ॉल्ट Admin खाता बनाने के लिए डेटाबेस को सीड करें: ```bash npx prisma db seed
    root@kitploit:~

एप्लिकेशन चलाना

प्रोजेक्ट डायरेक्टरी से, एक कमांड पैकेज अपडेट इंस्टॉल करता है, यदि PostgreSQL बंद है तो उसे शुरू करता है, और ऐप शुरू करता है:```bash ./run.sh

root@kitploit:~
उस विंडो को खुला रखें। यह जो Local या Network address प्रिंट करता है, उसका उपयोग करें।

इसे स्वयं शुरू करने के लिए: PostgreSQL चल रहा होना चाहिए (यदि आवश्यक हो तो `sudo systemctl start postgresql`)। फिर development server शुरू करें:```bash
npm run dev

Startup लूपबैक URL और इस मशीन का LAN पता दोनों प्रिंट करता है:```

  • Local: http://localhost:3000
  • Network: http://192.168.1.20:3000
root@kitploit:~
`npm run dev` और `npm start` `0.0.0.0` को bind करते हैं ताकि Network URL LAN पर काम करे। LAN एक्सेस को केवल विश्वसनीय नेटवर्क पर lab-only मानें। Dev mode पब्लिक इंटरनेट के लिए hardened नहीं है।

यदि आप ऐप को **hostname** (IP नहीं) से खोलते हैं और रिमोट ब्राउज़र एक खाली सफ़ेद पेज दिखाता है, तो उस नाम को `.env` में जोड़ें और पुनः आरंभ करें:```bash
ALLOWED_DEV_ORIGINS=dev.office.example

प्रोडक्शन डिप्लॉयमेंट

आवश्यकताएँ

  • Node.js ^22.12.0 या >=24.0.0 (package.json में engines देखें)
  • PostgreSQL एक न्यूनतम-विशेषाधिकार ऐप उपयोगकर्ता के साथ (Database Setup देखें)
  • ऐप के सामने HTTPS (nginx या Caddy जैसा रिवर्स प्रॉक्सी)। प्रोडक्शन में सेशन कुकीज़ Secure के रूप में चिह्नित होती हैं।
  • uploads/ डायरेक्टरी के लिए स्थायी स्टोरेज (फाइंडिंग स्क्रीनशॉट)

डिप्लॉय चरण

  1. रिपॉज़िटरी क्लोन करें और डिपेंडेंसीज़ इंस्टॉल करें: ```bash npm ci

    root@kitploit:~
  2. उत्पादन मानों (DATABASE_URL, JWT_SECRET ≥ 32 अक्षर) के साथ .env बनाएँ।

  3. डेटाबेस माइग्रेशन लागू करें: ```bash npm run db:migrate

    root@kitploit:~
  4. प्री-डिप्लॉय जाँच चलाएँ: ```bash npm run audit npm run typecheck npm run build

    root@kitploit:~
  5. एप्लिकेशन को NODE_ENV=production के साथ शुरू करें: ```bash NODE_ENV=production npm run start

    root@kitploit:~

एक वास्तविक सर्वर के लिए, इसे एक प्रोसेस मैनेजर (systemd, PM2, आदि) के अंतर्गत चलाएँ और TLS टर्मिनेशन के लिए सामने एक रिवर्स प्रॉक्सी रखें।

  1. डेटाबेस सीड (केवल डेवलपमेंट के लिए) के माध्यम से या बैकअप से रीस्टोर करके पहला एडमिन खाता बनाएँ। ऐप को उपयोगकर्ताओं के सामने उजागर करने से पहले अस्थायी सीड पासवर्ड तुरंत बदलें।

प्रोडक्शन चेकलिस्ट

  • JWT_SECRET कम से कम 32 अक्षरों का है और git में कमिट नहीं किया गया है
  • चल रही प्रक्रिया के लिए NODE_ENV=production सेट है
  • HTTPS कॉन्फ़िगर किया गया है; HTTP HTTPS पर रीडायरेक्ट करता है
  • डेटाबेस उपयोगकर्ता के पास CREATEDB या सुपरयूज़र विशेषाधिकार नहीं हैं
  • uploads/ पर्सिस्टेंट डिस्क पर है और बैकअप में शामिल है
  • यदि एडमिन Backup का उपयोग करते हैं तो backups/ पर्सिस्टेंट डिस्क पर है
  • यदि एडमिन Backup/Restore का उपयोग करेंगे तो pg_dump, pg_restore, और zip उपलब्ध हैं

डिफ़ॉल्ट क्रेडेंशियल

डेटाबेस सीड करने के बाद, आप जनरेट किए गए अस्थायी एडमिन खाते का उपयोग करके लॉग इन कर सकते हैं:

  • उपयोगकर्ता नाम: admin
  • पासवर्ड: npx prisma db seed / npm run db:seed द्वारा एक बार owner-only initial-admin-credentials.txt में लिखा जाता है

नोट: पहले लॉगिन पर आपको यह अस्थायी पासवर्ड बदलना होगा। इसके तुरंत बाद initial-admin-credentials.txt हटा दें। सभी पासवर्ड कम से कम 16 अक्षरों के होने चाहिए और इनमें एक अपरकेस अक्षर, लोअरकेस अक्षर, संख्या, और एक प्रतीक शामिल होना चाहिए।

सर्वर माइग्रेशन (Backup / Restore / Reset)

  • साइडबार प्रत्येक ब्राउज़र की दिनांक प्रारूप और समय क्षेत्र प्राथमिकता को स्थानीय रूप से संग्रहीत करता है। समय क्षेत्र देखने वाले के ऑपरेटिंग सिस्टम का अनुसरण कर सकता है या UTC में टाइमस्टैम्प प्रदर्शित कर सकता है; एंगेजमेंट शेड्यूल दिनांक अपरिवर्तित कैलेंडर दिनांक रहते हैं।
  • एडमिन Admin पृष्ठ (/dashboard/users) से संपूर्ण एप्लिकेशन डेटा का बैकअप और रीस्टोर कर सकता है।
  • इसका उपयोग तब करें जब पुराने सर्वर से नए सर्वर पर जा रहे हों: नए होस्ट पर ऐप क्लोन करें, फिर पुराने होस्ट से बैकअप रीस्टोर करें।

Admin पर, Database पैनल Backup, Restore, और Reset बटन दिखाता है। Users पैनल खातों को सूचीबद्ध करता है और उपयोगकर्ताओं को जोड़ने के लिए New User बटन प्रदान करता है। Appearance पैनल एडमिन को एप्लिकेशन-व्यापी हाइलाइट रंग चुनने देता है।

Backup के लिए आपके एडमिन पासवर्ड की आवश्यकता होती है, फिर एप्लिकेशन निर्देशिका (engagement-mgr/backups/) में backups/ में em-backup-YYYY-MM-DD-HHMM.zip नाम की एक .zip सहेजता है। सफल निर्यात के बाद, Admin पृष्ठ पर Download का उपयोग करें। एक अल्पकालिक हस्ताक्षरित अनुदान HttpOnly कुकी में रखा जाता है और केवल उस एडमिन के लिए काम करता है जिसने बैकअप बनाया था।

  • टाइमस्टैम्प ऐप चलाने वाले सर्वर के स्थानीय समय का उपयोग करता है, बिना सेकंड के। उदाहरण: em-backup-2026-06-02-1430.zip।
पथसामग्री
engagement-manager-backup/database.dumppg_dump से पूर्ण PostgreSQL कस्टम-फ़ॉर्मेट डंप (स्कीमा, टेबल, डेटा, एनम, संबंध)
engagement-manager-backup/uploads/डेटाबेस में संदर्भित फाइंडिंग स्क्रीनशॉट फ़ाइलें
  • Restore केवल Backup द्वारा बनाई गई .zip स्वीकार करता है और वर्तमान डेटाबेस और uploads/ फ़ोल्डर को बदल देता है। ब्राउज़र रीस्टोर 8 MB तक सीमित है ताकि डीकंप्रेशन वेब प्रक्रिया पर एकाधिकार न कर सके। बड़े आर्काइव के लिए, एप्लिकेशन रोकें और एप्लिकेशन उपयोगकर्ता के रूप में npm run db:restore -- /absolute/path/to/em-backup.zip चलाएँ। ऑफ़लाइन कमांड कार्यशील निर्देशिका से .env लोड करता है और .env या वातावरण में एक गैर-रिक्त DATABASE_URL की आवश्यकता होती है। यह 500 MB तक की नियमित फ़ाइलें स्वीकार करता है और प्रत्येक आर्काइव प्रविष्टि को उसकी विस्तारित-आकार सीमा के माध्यम से स्ट्रीम करता है। डेटाबेस रीस्टोर एक ही ट्रांजैक्शन में चलता है; फ़ाइलें इंस्टॉल करने से पहले आर्काइव प्रविष्टि गणना, पथ, संपीड़न अनुपात, और विस्तारित आकार मान्य किए जाते हैं। बैकअप, रीस्टोर, रीसेट, और स्क्रीनशॉट फ़ाइल परिवर्तन एक अनन्य रखरखाव लॉक साझा करते हैं ताकि डेटाबेस कमिट और फ़ाइलसिस्टम स्वैप ओवरलैप न कर सकें। पुष्टि के लिए आपके एडमिन पासवर्ड की आवश्यकता होती है।
  • Reset सभी एप्लिकेशन डेटा मिटा देता है, डिफ़ॉल्ट लाल हाइलाइट रंग बहाल करता है, और admin को फिर से बनाता है। RESET टाइप करने और पुष्टि करने वाले एडमिनिस्ट्रेटर का वर्तमान पासवर्ड फिर से दर्ज करने की आवश्यकता होती है। वह पासवर्ड फिर से बनाए गए खाते का अस्थायी पासवर्ड बन जाता है और पहले लॉगिन पर इसे बदलना होगा।

पुराना सर्वर

  1. Admin उपयोगकर्ता के रूप में लॉग इन करें।
  2. Admin खोलें और Backup पर क्लिक करें (Database के अंतर्गत)।
  3. .zip सहेजें और इसे नए सर्वर पर कॉपी करें (उदाहरण के लिए scp या rsync के साथ): ```bash scp em-backup-2026-06-02-1430.zip user@new-server:/path/to/
    root@kitploit:~

नया सर्वर

  1. पूर्वापेक्षाएँ इंस्टॉल करें और रिपॉज़िटरी क्लोन करें।
  2. DATABASE_URL और JWT_SECRET के साथ .env बनाएँ (पर्यावरण कॉन्फ़िगरेशन देखें)।
  3. एक खाली PostgreSQL डेटाबेस और उपयोगकर्ता बनाएँ (डेटाबेस सेटअप देखें)।
  4. निर्भरताएँ इंस्टॉल करें: npm ci।
  5. माइग्रेशन चलाएँ और एक बार सीड करें ताकि एक Admin साइन इन कर सके। रिस्टोर इस बूटस्ट्रैप डेटा को बैकअप से बदल देता है।
  6. ऐप को प्रोडक्शन मोड में बिल्ड और स्टार्ट करें (प्रोडक्शन डिप्लॉयमेंट देखें): ```bash npm run build NODE_ENV=production npm run start
    root@kitploit:~
  7. initial-admin-credentials.txt (केवल owner के लिए) का उपयोग करके admin के रूप में लॉग इन करें, अस्थायी पासवर्ड बदलें, और credentials फ़ाइल हटा दें।
  8. Admin (/dashboard/users) खोलें, Restore पर क्लिक करें (Database के अंतर्गत), पुराने सर्वर से .zip चुनें, अपना admin पासवर्ड दर्ज करें, और पुष्टि करें।
  9. यदि ऐप पहले से चल रहा था तो उसे पुनः आरंभ करें ताकि वह पुनर्स्थापित डेटा उठा ले।

नोट्स

  • संवेदनशील क्रियाएँ: Backup, Restore, और Reset सभी के लिए admin पासवर्ड की पुनः पुष्टि आवश्यक है। Restore और Reset मौजूदा डेटाबेस पंक्तियों को भी बदल देते हैं और uploads/ निर्देशिका को अधिलेखित कर देते हैं।
  • JWT_SECRET: नए सर्वर पर भिन्न हो सकता है; पुराने सर्वर से मौजूदा ब्राउज़र सत्र स्थानांतरित नहीं होते। उपयोगकर्ता आयातित डेटाबेस के खातों के साथ फिर से साइन इन करते हैं।
  • एप्लिकेशन कोड: नए सर्वर पर git clone (या वही रिवीज़न डिप्लॉय) का उपयोग करें ताकि ऐप उस स्कीमा से मेल खाए जिसकी बैकअप अपेक्षा करता है। यदि पुराने सर्वर ने क्लोन किए गए कोड की तुलना में नया स्कीमा चलाया था, तो आयात करने से पहले संस्करणों को संरेखित करें।
  • उपकरण: Backup और restore के लिए Prerequisites में स्थापित CLI उपकरण आवश्यक हैं।

कार्यान्वयन योजना और आर्किटेक्चर

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

प्रौद्योगिकी स्टैक

  • फुल-स्टैक फ्रेमवर्क: Next.js 16+ (React) जो App Router का उपयोग करता है।
  • डेटाबेस: PostgreSQL।
  • ORM: Prisma।
  • प्रमाणीकरण: सख्त सत्र कुकीज़ (ब्राउज़र बंद होने पर साफ़) और पासवर्ड हैशिंग के लिए Argon2id का उपयोग करते हुए कस्टम कार्यान्वयन। पासवर्ड न्यूनतम 16 वर्णों को लागू करते हैं, अनिवार्य प्रतीकों, संख्याओं, और मिश्रित केस के साथ।
  • स्टाइलिंग: पेज पैनलों पर glassmorphism डार्क-मोड सौंदर्यशास्त्र के साथ वनीला CSS; मोडल Modal.tsx और globals.css में .modal-panel के माध्यम से पूरी तरह से अपारदर्शी हैं।

डेटाबेस स्कीमा

रिपोर्टिंग जोड़: Finding version, reviewStatus, authorId, reviewerId, templateId, और importFingerprint भी संग्रहीत करता है; Screenshot sortOrder संग्रहीत करता है। FindingTemplate समीक्षित पुनः प्रयोग योग्य शब्दावली रखता है; FindingRevision अपरिवर्तनीय टेक्स्ट रिवीज़न रखता है; FindingDraft संघर्ष संस्करणों के साथ प्रति-उपयोगकर्ता निजी ड्राफ्ट रखता है; FindingComment समीक्षा चर्चाओं को रिकॉर्ड करता है; EngagementReport रिपोर्ट शीर्षक, कार्यकारी सारांश और क्रमबद्ध finding IDs रखता है; IssuedReport प्रत्येक जारी संस्करण के लिए एक अपरिवर्तनीय PDF, सामग्री स्नैपशॉट और SHA-256 डाइजेस्ट संग्रहीत करता है। उपयोगकर्ता author/reviewer संबंध SetNull का उपयोग करते हैं; निजी ड्राफ्ट उनके उपयोगकर्ता के हटाए जाने पर हटा दिए जाते हैं। रिपोर्टिंग रिकॉर्ड अपने पैरेंट engagement/finding जीवनचक्र का पालन करते हैं।

  • User: id, username, passwordHash, role (Admin, User), lastPasswordChange, lastLogin, sessions, createdAt, updatedAt.
  • Session: id, userId, expiresAt, createdAt — सर्वर-साइड रिकॉर्ड प्रत्येक हस्ताक्षरित लॉगिन सत्र को लॉगआउट पर व्यक्तिगत रूप से निरस्त करने योग्य बनाते हैं।
  • LoginRateLimit: key, count, — परमाणु स्रोत और पासवर्ड-पुष्टि प्रयास आरक्षण। पासवर्ड सत्यापन की एक सीमित समवर्ती सीमा भी है।

नए फ़ील्ड जोड़ना

किसी मौजूदा मॉडल में नया फ़ील्ड जोड़ने के लिए (उदा., Engagement पर focus):

  1. prisma/schema.prisma खोलें और वांछित मॉडल में फ़ील्ड जोड़ें: ```prisma model Engagement { id String @id @default(uuid()) codeName String focus String? // new field ... }
    root@kitploit:~
  2. prisma/schema.prisma में हर बदलाव के बाद यह करना आवश्यक है: ```bash npx prisma migrate dev --name describe_your_change
    root@kitploit:~

यह एक माइग्रेशन बनाता है, डेटाबेस को अपडेट करता है, और Prisma Client प्रकारों को पुनः जनरेट करता है।

  1. आवश्यकतानुसार किसी भी प्रभावित UI घटकों, फ़ॉर्म, सत्यापन लॉजिक, या सर्वर क्रियाओं को अपडेट करें।

सुरक्षा आर्किटेक्चर

  1. प्रमाणीकरण और खाते: डिफ़ॉल्ट admin खाता Prisma seed के माध्यम से जनरेट किया जाता है। Admin भूमिकाओं के पास सभी रिकॉर्ड्स तक पूर्ण create/edit/delete पहुँच होती है। User भूमिकाएँ findings और screenshots को बना, संपादित और हटा सकती हैं; अन्य सभी एंटिटीज़ (engagements, clients, contacts, operators) उपयोगकर्ताओं के लिए read-only होती हैं। प्रत्येक डैशबोर्ड पृष्ठ गोपनीय डेटा पढ़ने से पहले डेटाबेस के विरुद्ध सत्र को रीफ़्रेश करता है। केवल admins ही Admin पृष्ठ (/dashboard/users) तक पहुँच सकते हैं, खातों का प्रबंधन कर सकते हैं, एप्लिकेशन-व्यापी highlight रंग बदल सकते हैं, और डेटाबेस का बैकअप, पुनर्स्थापन या रीसेट कर सकते हैं। बैकअप, पुनर्स्थापन और रीसेट के लिए पासवर्ड पुनः-पुष्टि आवश्यक है। बैकअप बनाना एक Server Action है; ब्राउज़र डाउनलोड GET /api/db/backup?file=… का उपयोग Admin सत्र और एक HttpOnly कुकी में पाँच मिनट के हस्ताक्षरित grant के साथ करता है।
  2. सत्र प्रबंधन: सत्र HttpOnly, SameSite=Lax कुकीज़ में संग्रहीत jose JWTs और एक मेल खाती सर्वर-साइड Session पंक्ति का उपयोग करते हैं जिसे लॉगआउट निरस्त कर देता है। ब्राउज़र-सत्र व्यवहार बनाए रखने के लिए कुकी समाप्ति को जानबूझकर छोड़ा गया है; हस्ताक्षरित टोकन और डेटाबेस रिकॉर्ड दोनों एक दिन के बाद समाप्त हो जाते हैं। Transactional admission प्रति खाते अधिकतम दस सक्रिय सत्र बनाए रखता है।
टूल डाउनलोड करें
स्कैनर/एक्सपोर्ट परिवारस्वीकृत एक्सपोर्ट
Burp SuiteIssues XML, जिसमें निष्क्रिय आंतरिक स्कीमा DTD भी शामिल है
Nessus / TenableNessus v2 XML (.nessus)
NmapXML; खुले पोर्ट और उनका स्क्रिप्ट आउटपुट सूचनात्मक अवलोकन बनते हैं, अनुमानित भेद्यताएँ नहीं
OpenVAS / Greenboneनेटिव XML रिपोर्ट या GMP get_reports_response
OWASP ZAPसाइट्स और अलर्ट्स के साथ पारंपरिक JSON रिपोर्ट
NucleiJSON Lines (-jsonl)
Qualysस्कैन-परिणाम XML (SCAN/IP संरचना), अलग होस्ट-डिटेक्शन API प्रारूप नहीं
Semgrep / CodeQL और अन्य SARIF उत्पादकSARIF JSON रन, नियम और परिणाम
resetAt
  • ApplicationSetting: highlightColor (Red, Blue, Teal, Green, Purple, या Amber) और updatedAt के साथ सिंगलटन एप्लिकेशन-व्यापी सेटिंग्स रिकॉर्ड।
  • Engagement: id, codeName, clientId, chargeCode, status (Prep, Recon, Testing, Reporting, Complete), focus, type (AI, Code_Review, Firewall, Multi, Pentest, Phishing, Physical, Purple_Team, Red_Team, USB_Drop, Vishing, Web_App, Wireless), location (Internal, External), startPrep, endPrep, startRecon, endRecon, startTesting, endTesting, startReporting, endReporting, outbrief, objectives, targets, exclusions, notes, operators (M:N), contacts/trustedAgents (Contact के साथ M:N), findings, findingContexts, createdAt, updatedAt.
  • Client: id, company (DB कॉलम: companyName), address, city, state, zip, phone (DB कॉलम: phoneNumber), website, notes, contacts, engagements, createdAt, updatedAt.
  • Contact: id, clientId, name, title, email, phone (DB कॉलम: phoneNumber), notes, assignedEngagements, trustedEngagements, createdAt, updatedAt.
  • Finding: id, engagementId (वैकल्पिक), title, category, severity, background, remediation, supportingData (DB कॉलम: supportingLinks), screenshots, engagementContext, createdAt, updatedAt.
  • EngagementFindingContext: id, engagementId, findingId, observation, affectedHosts, createdAt, updatedAt.
  • Screenshot: id, findingId, filePath, description, createdAt.
  • Operator: id, name, title, email, phoneNumber, discord, github, notes, engagements (M:N), createdAt, updatedAt.
  • एप्लिकेशन सुरक्षा:
    • Next.js Edge Proxy (src/proxy.ts) सभी संरक्षित मार्गों पर सत्र जाँच और 90-दिनी पासवर्ड रोटेशन लागू करता है।
    • Next.js Server Actions अंतर्निहित same-origin सुरक्षा के साथ CSRF जोखिम को कम करते हैं।
    • Prisma सभी क्वेरीज़ को parameterize करके SQL injection को स्वचालित रूप से कम करता है।
    • React रेंडर पर HTML तत्वों को स्वचालित रूप से escape करके XSS को कम करता है।
    • Screenshots owner-only अनुमतियों और सीमित aggregate/per-finding कोटा के साथ संग्रहीत किए जाते हैं। विलोपन recoverable pending markers का उपयोग करता है; डैशबोर्ड स्टार्टअप, अपलोड और बैकअप डिस्क फ़ाइलों को डेटाबेस संदर्भों के विरुद्ध reconcile करते हैं, cleanup विफलताएँ audit आउटपुट में दर्ज की जाती हैं, विस्तृत त्रुटियाँ सर्वर लॉग में, और प्रशासकों को एक चेतावनी दिखाई जाती है। विफल डैशबोर्ड reconciliation प्रति प्रक्रिया प्रति मिनट अधिकतम एक बार पुनः प्रयास करता है; अपलोड और बैकअप अभी भी तुरंत स्टोरेज को मान्य करते हैं। प्रमाणित /api/uploads मार्ग IDOR को रोकता है और no-store प्रतिक्रियाएँ लौटाता है।