SQL इंजेक्शन और कमांड इंजेक्शन
जानिए कि हमलावर डेटाबेस क्वेरी या OS कमांड में हेरफेर करने वाले इंजेक्शन पेलोड कैसे बनाते हैं तथा पैरामीटरयुक्त क्वेरी और इनपुट सत्यापन उन्हें कैसे रोकते हैं।
SQL इंजेक्शन और कमांड इंजेक्शन, CoddyKit पर Security+ Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Security+ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Security+ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
SQL Injection क्या है
SQL injection (SQLi) तब होता है जब कोई Attacker किसी Input Field में Malicious SQL Code डालता या 'Inject' करता है और वह बाद में Database Query को भेजा जाता है। क्योंकि Application User Input को सीधे SQL Statement में जोड़ देती है, Database Legitimate Data और Attacker द्वारा दिए गए Commands के बीच अंतर नहीं कर पाता। SQLi लगातार OWASP Top 10 की सबसे खतरनाक Web Vulnerabilities में शामिल रहता है।
Classic SQLi Payload Example
एक Vulnerable Login Query इस तरह दिख सकती है: SELECT * FROM users WHERE username='INPUT' AND password='INPUT'। यदि कोई Attacker Username के रूप में ' OR '1'='1 देता है, तो Query इस तरह बदल जाती है कि WHERE Clause हमेशा True रहती है और Authentication पूरी तरह Bypass हो जाती है। इसे Classic tautology-based injection कहते हैं।
-- Vulnerable query (DO NOT use in production)
SELECT * FROM users
WHERE username = '' OR '1'='1'
AND password = 'anything';
-- Returns ALL rows — auth bypassedSQL Injection के प्रकार
SQL Injection Attacks कई प्रकार के होते हैं: In-band SQLi Results को सीधे HTTP Response में लौटाता है (Error-based या Union-based)। Blind SQLi Boolean True/False Responses या जानबूझकर किए गए Time Delays (SLEEP(5)) के माध्यम से Data का अनुमान लगाता है। Out-of-band SQLi Responses दिखाई न देने पर Data को बाहर भेजने के लिए DNS Lookups जैसे Secondary Channels का उपयोग करता है।
-- Time-based blind SQLi example
SELECT * FROM users
WHERE id = '1' AND SLEEP(5)--';
-- If response is delayed 5s, injection succeededSQLi रोकना: Parameterized Queries
SQL Injection से बचाव का मुख्य उपाय parameterized queries (जिन्हें Prepared Statements भी कहा जाता है) हैं। Parameterized Query में SQL Structure को पहले Compile किया जाता है और User Input को अलग Parameter के रूप में भेजा जाता है — वह कभी भी Query Structure को बदल नहीं सकता। यह तरीका किसी एक Language पर निर्भर नहीं होता और केवल Input Sanitization की तुलना में कहीं अधिक विश्वसनीय है।
# Python example — parameterized query (safe)
import sqlite3
conn = sqlite3.connect('app.db')
cursor = conn.cursor()
username = 'admin'
password = 'secret'
cursor.execute(
'SELECT * FROM users WHERE username=? AND password=?',
(username, password) # parameters, never concatenated
)Defense in Depth के रूप में Input Validation
Parameterized Queries मुख्य बचाव हैं, लेकिन input validation एक महत्वपूर्ण Secondary Layer प्रदान करता है। Allowlist Validation केवल अपेक्षित Characters स्वीकार करता है (उदाहरण के लिए, Username Field के लिए केवल Alphanumeric Characters) और बाकी सबको अस्वीकार कर देता है। Denylist Validation ज्ञात खराब Characters को Block करता है, लेकिन Attackers अक्सर Denylist को Bypass करने के लिए Payloads को Encode या Obfuscate कर देते हैं — इसलिए Allowlists कहीं अधिक मजबूत होती हैं।
Command Injection क्या है
Command injection (OS command injection) तब होता है जब कोई Application बिना Sanitize किए गए User Input को System Shell में भेजती है। Database को Target करने वाले SQL Injection के विपरीत, Command Injection स्वयं Operating System को Target करता है — इससे Attackers को Web Server Process के Privileges के साथ मनमाने Commands run करने की क्षमता मिल जाती है। इसकी Severity Critical मानी जाती है और इससे अक्सर पूरे System का Compromise हो जाता है।
Command Injection Example
किसी User द्वारा दिए गए IP Address को Ping करने वाला Web App संभवतः यह उपयोग कर सकता है: ping -c 1 INPUT। यदि कोई Attacker 8.8.8.8; cat /etc/passwd देता है, तो Shell ; को Command Separator मानकर दोनों Commands run करती है। सामान्य Injection Operators में ;, &&, ||, |, और Backtick Command Substitution शामिल हैं।
# Vulnerable Python (subprocess with shell=True)
import subprocess
user_ip = '8.8.8.8; cat /etc/passwd' # attacker input
subprocess.run('ping -c 1 ' + user_ip, shell=True)
# Safe alternative — avoid shell=True, pass args as list
subprocess.run(['ping', '-c', '1', '8.8.8.8'])Command Injection रोकना
Command Injection से बचने का सबसे सुरक्षित उपाय है user input से OS commands को पूरी तरह call करने से बचना — उसी Goal को पूरा करने वाले Library Functions का उपयोग करें। जब Shell Calls से बचना संभव न हो, तो Arguments को List के रूप में भेजें (कभी भी Concatenated String के रूप में नहीं), Shell Interpretation को Disable करें, Input को Strict Allowlist के आधार पर Validate करें और Processes को उपलब्ध least-privileged User Account के साथ run करें।
OWASP संदर्भ: शीर्ष 10 में इंजेक्शन
OWASP Top 10 में इंजेक्शन (जिसमें SQL, NoSQL, OS और LDAP इंजेक्शन शामिल हैं) को अनुप्रयोग Security के सबसे गंभीर जोखिमों में से एक बताया गया है। OWASP रक्षा की कई परतों वाला दृष्टिकोण अपनाने की सलाह देता है: ऐसे सुरक्षित API का उपयोग करें जो इंटरप्रेटर से बचते हों, Server पर सकारात्मक (अनुमत-सूची) input validation करें, उस इंटरप्रेटर के विशिष्ट syntax का उपयोग करके विशेष वर्णों को escape करें, और बड़े पैमाने पर जानकारी उजागर होने से रोकने के लिए LIMIT जैसे SQL नियंत्रणों का उपयोग करें।
पहचान: WAF और लॉगिंग
Web Application Firewall (WAF) हस्ताक्षर पैटर्न के आधार पर HTTP अनुरोधों की जाँच करके आम इंजेक्शन payload का पता लगा सकता है और उन्हें रोक सकता है। हालांकि, encoding की तरकीबों से WAF को चकमा दिया जा सकता है और यह सुरक्षित coding का विकल्प नहीं है। उचित अनुप्रयोग लॉगिंग — जिसमें query parameters, response codes और error messages दर्ज किए जाते हैं — Security टीमों को घटना की समीक्षा के दौरान इंजेक्शन प्रयासों की पहचान करने में सक्षम बनाती है।
इंजेक्शन हमलों का वास्तविक प्रभाव
इंजेक्शन हमलों के कारण इतिहास में कुछ सबसे बड़े data breach हुए हैं। 2017 के Equifax breach में Web अनुप्रयोग की एक खामी के माध्यम से 147 million records उजागर हुए। 2011 में Sony PlayStation Network पर हुए SQL इंजेक्शन से 77 million accounts प्रभावित हुए। ये घटनाएँ दिखाती हैं कि इंजेक्शन की खामियों का business पर अत्यंत गंभीर प्रभाव पड़ता है: सफल इंजेक्शन हमले के बाद data theft, regulatory fines, प्रतिष्ठा को नुकसान और कानूनी दायित्व—सभी सामने आ सकते हैं।
त्वरित जाँच
इस lesson में पढ़ी गई CompTIA Security+ (SY0-701) अवधारणाओं की अपनी समझ जाँचें।
Lesson का पुनरावलोकन
इस lesson में आपने सीखा: SQL इंजेक्शन database queries में जोड़े गए अस्वच्छ input का शोषण करता है, command इंजेक्शन ; और | जैसे operators के माध्यम से Malicious input को OS shell तक पहुँचाता है, और parameterized queries तथा shell=True से बचना प्राथमिक Defense हैं। अब हम Cross-Site Scripting (XSS) और CSRF हमलों का अध्ययन करेंगे।
एआई शिक्षक के साथ Security+ Academy सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “SQL इंजेक्शन और कमांड इंजेक्शन” पाठ निःशुल्क है?
हाँ — Security+ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “SQL इंजेक्शन और कमांड इंजेक्शन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Security+ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“SQL इंजेक्शन और कमांड इंजेक्शन” में मैं क्या सीखूँगा?
जानिए कि हमलावर डेटाबेस क्वेरी या OS कमांड में हेरफेर करने वाले इंजेक्शन पेलोड कैसे बनाते हैं तथा पैरामीटरयुक्त क्वेरी और इनपुट सत्यापन उन्हें कैसे रोकते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Security+ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Security+ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Security+ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“SQL इंजेक्शन और कमांड इंजेक्शन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Security+ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Security+ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- SQL इंजेक्शन और कमांड इंजेक्शन
- क्रॉस-साइट स्क्रिप्टिंग (XSS) और CSRF
- टूटा हुआ प्रमाणीकरण और असुरक्षित डीसीरियलाइज़ेशन
- सुरक्षित SDLC, SAST और DAST उपकरण