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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
lighty-sqlinj-demo — CVE-2014-2323 SQL इंजेक्शन का शैक्षिक शोषण प्रदर्शन lighttpd के mod_mysql_vhost में, जिसमें Docker-आधारित लैब शामिल है जो व्यावहारिक भेद्यता विश्लेषण और पैचिंग के लिए है। | Kitploit
उपकरण/GitHubGitHub/cirocosta/lighty-sqlinj-demo
कंटेनर सुरक्षाभेद्यता विश्लेषणवेब एप्लिकेशन शोषणलर्निंग और शिक्षालैब और अभ्यास
GitHubcirocosta/lighty-sqlinj-demo

lighty-sqlinj-demo

CVE-2014-2323 SQL इंजेक्शन का शैक्षिक शोषण प्रदर्शन lighttpd के mod_mysql_vhost में, जिसमें Docker-आधारित लैब शामिल है जो व्यावहारिक भेद्यता विश्लेषण और पैचिंग के लिए है।

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

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

सभी देखें →

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

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

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

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

title: Ep4 - नेटवर्क से संबंधित भेद्यता members:

  • Ciro S. Costa
  • Marcela Terakado date: 10 Nov, 2015

संबंधित भेद्यताएँ:

CVE-2014-2323 [1] was assigned to SQL injection bug.
CVE-2014-2324 [2] was assigned to the path traversal bug.

पुष्टि करें: http://download.lighttpd.net/lighttpd/security/lighttpd_sa_2014_01.txt

  • प्रभावित संस्करण: 1.4.34

प्रस्तुति

  • दोष समझाना
    • शोषण की जाने वाली सेवा प्रस्तुत करना
    • स्रोत कोड में दोष कहाँ है
    • दोष सुधार का पैच
  • एक्सप्लॉइट से संबंधित डेमो तैयार करना
    • एक्सप्लॉइट
    • दोष का सुधार लागू करना
    • फिर से शोषण करने का प्रयास करना
  • lighttpd (lighty)
  • वर्चुअल होस्टिंग
    • Lighttpd सर्वर तैयार करना
  • SQL
    • SQL इंजेक्शन
  • Docker
    • कंटेनर नेटवर्किंग
  • डेमो!
    • Exploit
    • पाथ का सत्यापन

lighttpd (lighty)

शोषण की जाने वाली सेवा Lighttpd है। यह एक ओपनसोर्स (BSD लाइसेंस) वेबसर्वर है जिसे हल्का और तेज़ होने के लिए अनुकूलित किया गया है। यह प्रसिद्ध c10k समस्या (एक सर्वर पर 10 हजार एक साथ कनेक्शनों को कैसे संभालें) के 'प्रूफ-ऑफ-कॉन्सेप्ट' के रूप में उभरा, जिससे उस समय (2003) काफी लोकप्रियता मिली, और वर्तमान में Whatsapp.com, Xkcd द्वारा तथा अतीत में YouTube द्वारा उपयोग किया जाता है। बाज़ार में इसकी स्थिति काफी दिलचस्प है, जैसा कि हम ग्राफ़ में देख सकते हैं:

Lighttpd की स्थिति - ट्रैफ़िक x वेबसाइटों की संख्या

सर्वर कई कनेक्शनों की समस्या से निपटने के लिए इवेंट-आधारित एसिंक्रोनस तंत्रों (kqueue BSDs पर, epoll Linux पर) का उपयोग करता है, जिससे कई थ्रेड्स की आवश्यकता कम हो जाती है, जिसके परिणामस्वरूप बहुत छोटी मेमोरी 'फुटप्रिंट' और बेहतर CPU उपयोग होता है (यह रणनीति Nginx सर्वरों द्वारा भी उपयोग की जाती है, जिनका उपयोग वर्षों में काफी बढ़ गया है):

सर्वर बाज़ार

lighty की एक विशेषता वर्चुअल होस्ट्स का आसान प्रबंधन है।

वर्चुअल होस्टिंग

यह एक ऐसी विधि है जिसका उपयोग एक ही IP पर हल होने वाले एक से अधिक डोमेन नामों को होस्ट करने के लिए किया जाता है, जिससे वेबसाइटों की पेशकश करने वाली कंपनियों की होस्टिंग लागत कम हो जाती है, क्योंकि प्रत्येक वेबसाइट के लिए समर्पित सर्वर आरक्षित करना आवश्यक नहीं है।

यह तकनीक IP-आधारित (प्रत्येक होस्ट के लिए एक इंटरफ़ेस) या नाम-आधारित (इंटरफ़ेस साझा करते हुए प्रत्येक होस्ट के लिए एक नाम) हो सकती है - इस प्रस्तुति में खोजी गई।

Name-Based

: क्लाइंट द्वारा प्रदान किए गए 'Hostname' का उपयोग करके यह पहचानता है कि तदनुसार उत्तर देने के लिए किस सेवा का उपयोग करना है। इस विधि में दो कठिनाइयाँ हैं: सुरक्षित सत्रों (TLS) से निपटने में जटिलताएँ - हैंडशेक सर्वर को Host इंगित करने वाले किसी भी हेडर के पारित होने से पहले किया जाना चाहिए, जिससे हैंडशेक में प्रस्तुत किए जाने वाले प्रमाणपत्र का निर्धारण जटिल हो जाता है। इस समस्या का एक हल TLS का एक एक्सटेंशन है जिसे Server Name Indication (SNI) कहा जाता है, जो हैंडशेक की शुरुआत में नाम प्रस्तुत करने की अनुमति देता है, जिससे सही प्रमाणपत्र का चयन संभव हो जाता है। दूसरी समस्या अच्छी तरह से परिभाषित Host हेडर के बिना कनेक्शन के प्रयास के बारे में है, जिसके परिणामस्वरूप उपयोग की जाने वाली सेवा की अनिश्चितता उत्पन्न होती है।

Virtual Host - redes.io Virtual Host - mac0448.io

IP-Based

: प्रत्येक अनुप्रयोग के लिए अलग-अलग IP का उपयोग करता है। वेबसर्वर को फिर कई भौतिक नेटवर्क इंटरफ़ेस (या एक ही इंटरफ़ेस के अंतर्गत वर्चुअल) के लिए कॉन्फ़िगर किया जाता है और फिर (गंतव्य) IP पते के अनुसार तदनुसार उत्तर देता है।

IP aliasing, हमें प्रत्येक सेवा के लिए वर्चुअल इंटरफ़ेस बनाने की अनुमति देता है।

एक बड़ी कंपनी के मामले में, ग्राहकों की संख्या के आधार पर ऐसी मैपिंग का प्रबंधन करना जटिल हो सकता है। Lighty फिर इस उद्देश्य के लिए डेटाबेस के उपयोग का समर्थन प्रदान करता है, जैसा कि हम आगे दिखाएँगे।

पहले, आइए देखें कि 'हाथ से' एक सर्वर की कॉन्फ़िगरेशन कैसे की जाती है और फिर vhosting कैसे जोड़ा जाता है।

Lighttpd सर्वर तैयार करना

एक बुनियादी lighttpd सर्वर तैयार करना बहुत आसान है। बस इसे इंस्टॉल करें और एक कॉन्फ़िगरेशन फ़ाइल बनाएं जो उपयोग किए जाने वाले पोर्ट को निर्धारित करती है, विशिष्ट अनुरोधों का जवाब कैसे देना है और अन्य कॉन्फ़िगरेशन।

हम एक कॉन्फ़िगरेशन उदाहरण तैयार कर सकते हैं जो केवल स्थिर फ़ाइलों (.html या .txt) के अनुरोध प्राप्त करने से संबंधित है:

server.document-root = "/usr/lighttpd/mysite.com/"
server.port = 80

mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain"
)

अब कल्पना करें कि हम वेबसाइटों की बिक्री पर आधारित व्यवसाय बनाना चाहते हैं और खरीदार को स्वयं का डोमेन प्रदान करते हैं। लागत कम करने के लिए हम प्रत्येक ग्राहक के लिए vhosts बनाना चाहते हैं। मान लें कि नेटवर्किंग पाठ्यक्रम तीन वेबसाइटें खरीदना चाहता है: redes.io, mac0448.io और mac5910.io। हमारी कंपनी फिर डोमेन पंजीकृत करती है, सभी हमारे एकमात्र सर्वर के IP की ओर इंगित करते हैं, जिसमें एक ही इंटरफ़ेस है।

ps: चूंकि हम इसका अनुकरण करना चाहते हैं, हम /etc/hosts फ़ाइल को बदल सकते हैं:

172.17.0.2 redes.io
172.17.0.2 mac0448.io
172.17.0.2 mac5910.io

एक ही IP से हल करते हुए ग्राहकों की विभिन्न वेबसाइटों की सेवा करने में सक्षम होने के लिए, हम सर्वर को मैन्युअल रूप से कॉन्फ़िगर कर सकते हैं:

server.document-root = "/usr/lighttpd/default/"
server.port = 80

mimetype.assign = (
  ".html" => "text/html",
  ".txt" => "text/plain"
)

$HTTP["host"] == "redes.io" {
  server.document-root = "/usr/lighttpd/redes/"
} else $HTTP["host"] == "mac0448.io" {
  server.document-root = "/usr/lighttpd/mac0448/"
} else $HTTP["host"] == "mac5910.io" {
  server.document-root = "/usr/lighttpd/mac5910/"
}

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

mod_mysql_vhost मॉड्यूल के साथ हम अपने सर्वर को ऐसे मैपिंग के लिए जिम्मेदार mysql डेटाबेस से जोड़ सकते हैं। फिर हम डेटाबेस का नाम, इसे अपने नेटवर्क में कैसे पाया जाए, और खोज करने के लिए कौन सा कमांड उपयोग करना है, निर्दिष्ट करते हैं।

server.modules = (
	"mod_accesslog",
	"mod_mysql_vhost"
)

mysql-vhost.db		= "NOME_DO_BANCO"
mysql-vhost.user	= "USUARIO"
mysql-vhost.pass	= "SENHA"

(!!!!!!!!!!!!!!!)
mysql-vhost.sql		= "SELECT docroot FROM domains WHERE domain='?';"
(!!!!!!!!!!!!!!!)

mysql-vhost.hostname	= "HOSTNAME"
mysql-vhost.port	= "PORTA"

SQL

SQL रिलेशनल डेटाबेस के प्रबंधन के लिए एक घोषणात्मक भाषा है, जिसका उपयोग (...) आदि में किया जाता है।

TODO

  • SELECT
  • INSERT
  • UPDATE
  • DELETE
  • DROP
  • (...)

TODO

समस्याएँ इस तथ्य के कारण उत्पन्न होती हैं कि SQL का उपयोग करने वाली डेटाबेस प्रबंधन प्रणालियाँ मान लेती हैं कि डाले गए कमांड व्यवस्थापक के ज्ञान वाले कमांड होंगे और उनके द्वारा अच्छी तरह से प्रबंधित किए जाएँगे। यह धारणा हमेशा सत्य नहीं होती है, क्योंकि DB प्रणाली के साथ इंटरैक्ट करने वाली प्रणालियों में विफलता दोष उत्पन्न कर सकती है, विशेष रूप से वेब पर, जहाँ उपयोगकर्ता के साथ इंटरैक्शन अधिक होता है।

SQL इंजेक्शन

SQL कमांड के साथ समस्या तब उत्पन्न होती है जब कमांड को उपयोगकर्ता द्वारा उत्पन्न टेक्स्ट का उपयोग करके बनाने का इरादा होता है, चाहे वह उपयोगकर्ता नाम, पासवर्ड या कोई अन्य गतिशील सामग्री हो।

(TODO)

कैसे हल करें? Escaping।

हमारे कॉन्फ़िगरेशन में, उदाहरण के लिए, हमारे पास एक बड़ी खामी है:

mysql-vhost.sql		= "SELECT docroot FROM domains WHERE domain='?';"
टूल डाउनलोड करें