SQL ఇంజెక్షన్ ప్రమాదాల కోసం పరీక్ష

SQL ఇంజెక్షన్ దాడులు డైనమిక్ కంటెంట్ను ఉత్పత్తి చేయడానికి ఒక డేటాబేస్ బ్యాకెండ్పై ఆధారపడిన వెబ్ అనువర్తనాలకు విపరీతమైన నష్టాలను కలిగిస్తాయి. ఈ విధమైన దాడిలో, డేటాబేస్ జారీ చేయబడిన వారి స్వంత SQL ఆదేశాలను ఇంజెక్ట్ చేసే ప్రయత్నంలో హ్యాకర్లు ఒక వెబ్ అప్లికేషన్ను సవరించవచ్చు. ఉదాహరణకు, డేటాబేస్లో SQL ఇంజెక్షన్ దాడిని చూడండి. ఈ వ్యాసంలో, మీ వెబ్ అప్లికేషన్లను వారు SQL ఇంజెక్షన్ దాడులకు గురవుతున్నారో లేదో నిర్ధారించడానికి మీరు అనేక మార్గాల్లో పరిశీలించి ఉంటారు.

ఆటోమేటెడ్ SQL ఇంజెక్షన్ స్కానింగ్

HP యొక్క WebInspect, IBM యొక్క AppScan లేదా Cenzic's Hailstorm వంటి ఒక స్వయంచాలక వెబ్ అప్లికేషన్ దుర్బలత్వం స్కానర్ను ఒక అవకాశం ఉపయోగిస్తుంది. ఈ ఉపకరణాలు సంభావ్య SQL ఇంజెక్షన్ దుర్బలత్వాల కోసం మీ వెబ్ అప్లికేషన్లను విశ్లేషించడానికి అన్ని సులభమైన, ఆటోమేటెడ్ మార్గాలు అందిస్తాయి. అయితే, వారు చాలా ఖర్చుతో ఉన్నారు, సీటుకు $ 25,000 వరకు నడుస్తారు.

మాన్యువల్ SQL ఇంజెక్షన్ టెస్ట్

ఏమి ఒక పేద అప్లికేషన్ డెవలపర్ ఏమిటి? మీరు ఒక వెబ్ బ్రౌజర్ కంటే ఏమీ ఉపయోగించకుండా SQL Injection Vulnerabilities కోసం మీ వెబ్ అనువర్తనాలను విశ్లేషించడానికి మీరు కొన్ని ప్రాధమిక పరీక్షలను నిజంగా అమలు చేయగలరు. మొదట, హెచ్చరిక యొక్క ఒక పదం: ప్రాథమిక SQL ఇంజెక్షన్ లోపాలు మాత్రమే నేను చూసే పరీక్షలు. అవి అధునాతన మెళుకువలను గుర్తించవు మరియు ఉపయోగించడానికి కొంతవరకు దుర్భరమైన ఉంటాయి. మీరు దానిని కొనుగోలు చేయగలిగితే, ఆటోమేటెడ్ స్కానర్తో వెళ్ళండి. అయితే, మీరు ఆ ధర ట్యాగ్ను నిర్వహించలేకపోతే, మాన్యువల్ పరీక్ష అనేది గొప్ప మొదటి అడుగు.

ఒక దెబ్బతింటుంది అనేది దెబ్బతినడిందా అని విశ్లేషించడానికి సులభమైన మార్గం ఏమిటంటే ప్రమాదకర ఇంజెక్షన్ దాడులతో ప్రయోగాలు చేయటం, అవి విజయవంతం అయినప్పటికీ మీ డేటాబేస్కు హాని కలిగించవు కానీ మీరు సమస్యను సరిచేయవలెనని సాక్ష్యాలు అందిస్తాయి. ఉదాహరణకు, ఒక డేటాబేస్లో ఒక వ్యక్తిని కనిపించే ఒక సాధారణ వెబ్ అనువర్తనం మరియు దాని ఫలితంగా సంప్రదింపు సమాచారాన్ని అందిస్తుంది అనుకుందాం. ఈ పేజీ క్రింది URL ఫార్మాట్ను ఉపయోగించవచ్చు:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

ఈ పేజీ ఒక డేటాబేస్ లుక్అప్ ను అమలు చేస్తుందని మేము అనుకోవచ్చు.

డైరెక్టరీ నుండి ఫోన్ను ఎంచుకోండి WHERE lastname = 'chapple' మరియు firstname = 'mike'

ఈ బిట్తో ప్రయోగాన్ని లెట్. పైన మా ఊహ తో, మేము SQL ఇంజెక్షన్ దాడులకు పరీక్షలు URL కు ఒక సాధారణ మార్పు చేయవచ్చు:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

వెబ్ అప్లికేషన్ సరిగా SQL ఇంజెక్షన్ నుండి రక్షించబడకపోతే, ఇది కేవలం ఈ ఫేక్ మొదటి పేరును డేటాబేస్కు వ్యతిరేకంగా అమలుచేసిన SQL స్టేట్మెంట్లో ప్లగ్స్ చేస్తుంది, దీని ఫలితంగా:

డైరెక్టరీ నుండి ఫోన్ను ఎంచుకోండి WHERE lastname = 'chapple' మరియు firstname = 'mike' AND (నకిలీ నుండి సంఖ్యను (*) ఎంచుకోండి)> OR OR '1' = '1'

పైన ఉన్న వాక్యనిర్మాణం అసలు URL లో కన్నా కొద్దిగా భిన్నమైనదని మీరు గమనించవచ్చు. నేను ఉదాహరణకు అనుసరించండి సులభంగా వారి ASCII సమానమైన కోసం URL- ఎన్కోడ్ వేరియబుల్ మార్పిడి స్వేచ్ఛ తీసుకుంది. ఉదాహరణకు,% 3d అనేది '=' అక్షరానికి URL- ఎన్కోడింగ్. నేను ఇదే ప్రయోజనాల కోసం కొన్ని లైన్ బ్రేక్లను కూడా జోడించారు.

ఫలితాలు మూల్యాంకనం చేయడం

పైన పేర్కొన్న URL తో వెబ్పేజీని లోడ్ చేయడానికి మీరు ప్రయత్నించినప్పుడు పరీక్ష వస్తుంది. వెబ్ అప్లికేషన్ బాగా ప్రవర్తించినట్లయితే, ఇది డేటాబేస్కు ప్రశ్నకు ముందు ఇన్పుట్ నుండి సింగిల్ కోట్స్ను తీసివేస్తుంది. ఇది కేవలం SQL యొక్క ఒక సమూహం కలిగి మొదటి పేరుతో ఎవరైనా కోసం అదృష్టము లుక్ చేస్తుంది! క్రింద ఉన్న ఒకదానితో పోలిస్తే మీరు ఒక దోష సందేశాన్ని చూస్తారు:

లోపం: పేరు మైక్ + మరియు + (యూజర్ + నకిలీ నుండి * + (+) + ఎంచుకోండి +% 3e0 + లేదా + 1% 3d1 చాపెల్!

మరోవైపు, SQL ఇంజెక్షన్కు దెబ్బతింటున్నట్లయితే, అది డేటాబేస్కు ప్రత్యక్షంగా స్టేట్మెంట్కు పాస్ అవుతాయి, ఫలితంగా రెండు అవకాశాలలో ఒకటి. మొదట, మీ సర్వరులో వివరణాత్మక లోపం సందేశాలు ఉంటే (మీరు కాకూడదు!), మీరు ఇలాంటిదే చూస్తారు:

ODBC డ్రైవర్ల కోసం Microsoft OLE DB ప్రొవైడర్ '80040e37' [మైక్రోసాఫ్ట్] [ODBC SQL సర్వర్ డ్రైవర్] [SQL సర్వర్] చెల్లని వస్తువు పేరు 'నకిలీ'. / directory.asp, line 13

మరోవైపు, మీ వెబ్ సర్వర్ వివరణాత్మక లోపం సందేశాలను ప్రదర్శించకపోతే, మీకు మరింత సాధారణ దోషం వస్తుంది:

అంతర్గత సర్వర్ లోపం సర్వర్ అంతర్గత లోపం లేదా తప్పు కాన్ఫిగరేషన్ను ఎదుర్కొంది మరియు మీ అభ్యర్థనను పూర్తి చేయలేకపోయింది. లోపం సంభవించిన సమయం గురించి తెలియజేయడానికి సర్వర్ నిర్వాహకుడిని సంప్రదించండి మరియు దోషాన్ని కలిగించిన ఏదైనా మీరు చేసిన వాటిని గురించి సంప్రదించండి. ఈ లోపం గురించి మరింత సమాచారం సర్వర్ లోపం లాగ్లో అందుబాటులో ఉండవచ్చు.

మీరు పైన ఉన్న రెండు దోషాలలో ఒకదాన్ని స్వీకరించినట్లయితే, మీ అప్లికేషన్ SQL ఇంజెక్షన్ దాడికి గురవుతుంది! SQL Injection దాడులకు వ్యతిరేకంగా మీ అనువర్తనాలను సంరక్షించడానికి మీరు తీసుకోగల కొన్ని దశలు ఉన్నాయి: