એસક્યુએલ ઇન્જેક્શન નબળાઈઓ માટે પરીક્ષણ

એસક્યુએલ ઇન્જેક્શન હુમલા વેબ કાર્યક્રમોને જબરજસ્ત જોખમો ઉભા કરે છે જે ગતિશીલ સામગ્રી પેદા કરવા માટે ડેટાબેઝ બેકએન્ડ પર આધાર રાખે છે. આ પ્રકારના હુમલામાં, હેકરો વેબ એપ્લિકેશનને ચાવીરૂપ ડેટાબેઝ દ્વારા જારી કરેલા પોતાના એસક્યુએલ આદેશો દાખલ કરવા પ્રયાસ કરે છે. ઉદાહરણ તરીકે, ડેટાબેઝ પર લેખ એસક્યુએલ ઇન્જેક્શન હુમલાઓ જુઓ. આ લેખમાં, અમે તમારી વેબ એપ્લિકેશન્સને ચકાસવા માટે ઘણી રીતો પર એક નજર કરીએ છીએ કે તે એસક્યુએલ ઇન્જેક્શન હુમલાઓ પ્રત્યે સંવેદનશીલ છે કે નહીં તે નક્કી કરે છે.

સ્વયંસંચાલિત એસક્યુએલ ઇન્જેક્શન સ્કૅનિંગ

એક શક્યતા સ્વચાલિત વેબ એપ્લિકેશન નબળાઈ સ્કેનરનો ઉપયોગ કરી રહી છે, જેમ કે એચપીના વેબઇન્સ્પેક્ટ, આઇબીએમની એપસ્કેન અથવા સેનઝિકના હેઇલસ્ટ્રોમ. આ ટૂલ્સ બધા સંભવિત એસક્યુએલ ઇન્જેક્શન નબળાઈઓ માટે તમારા વેબ એપ્લિકેશન્સનું પૃથ્થકરણ કરવા માટે સરળ, સ્વયંચાલિત રીતે પ્રદાન કરે છે. જો કે, તેઓ એકદમ ખર્ચાળ છે, પ્રત્યેક બેઠક દીઠ 25,000 ડોલર સુધી ચાલી રહ્યાં છે.

જાતે એસક્યુએલ ઇન્જેક્શન ટેસ્ટ

નબળા એપ્લિકેશન ડેવલપર કરવા શું છે? વેબ બ્રાઉઝર કરતાં વધુ કંઇ ઉપયોગ કરીને તમે એસક્યુએલ ઇન્જેક્શન નબળાઈઓ માટે તમારા વેબ એપ્લિકેશન્સનું મૂલ્યાંકન કરવા માટે ખરેખર કેટલાક મૂળભૂત પરીક્ષણો ચલાવી શકો છો. સૌ પ્રથમ, સાવધાનીનો શબ્દ: જે પરીક્ષણો હું વર્ણવે છે તે ફક્ત મૂળ એસક્યુએલ ઇન્જેક્શન ભૂલો માટે જુઓ. તેઓ અદ્યતન તકનીકો શોધી શકશે નહીં અને વાપરવા માટે કંટાળાજનક છે. જો તમે તેને પરવડી શકો છો, સ્વયંચાલિત સ્કેનર સાથે જાઓ. તેમ છતાં, જો તમે તે કિંમત ટેગને નિયંત્રિત કરી શકતા નથી, તો મેન્યુઅલ પરીક્ષણ એ પહેલું પગલું છે.

એપ્લિકેશન નબળા છે કે કેમ તે મૂલ્યાંકન કરવાનો સૌથી સરળ રીત નિરુપદ્રવી ઈન્જેક્શન હુમલાઓનો પ્રયોગ કરે છે જે ખરેખર તમારા ડેટાબેઝને નુકસાન કરશે નહીં જો તેઓ સફળ થશે પરંતુ તમને કોઈ પુરાવા આપશે કે તમારે કોઈ સમસ્યા સુધારવાની જરૂર છે. ઉદાહરણ તરીકે, ધારો કે તમારી પાસે એક સરળ વેબ એપ્લિકેશન છે જે ડેટાબેઝમાં વ્યક્તિગત દેખાય છે અને પરિણામે સંપર્ક માહિતી પૂરી પાડે છે. તે પૃષ્ઠ નીચેના URL ફોર્મેટનો ઉપયોગ કરી શકે છે:

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

અમે એમ ધારણ કરી શકીએ છીએ કે આ પેજ નીચે મુજબની ક્વેરીનો ઉપયોગ કરીને ડેટાબેઝ લૂકઅપ કરે છે:

ડિરેક્ટરીમાંથી ફોન પસંદ કરો જ્યાં lastname = 'chapple' અને firstname = 'mike'

ચાલો આ સાથે થોડી પ્રયોગ કરીએ. ઉપર અમારા ધારણાથી, અમે URL પર એક સરળ ફેરફાર કરી શકીએ છીએ જે એસક્યુએલ ઇન્જેક્શન હુમલાઓ માટે પરીક્ષણ કરે છે:

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

જો વેબ એપ્લિકેશન એસક્યુએલ ઇન્જેક્શન સામે યોગ્ય રીતે સુરક્ષિત ન રહી હોય, તો તે ડેટાબેઝ વિરુદ્ધ એક્ઝિક્યુટ કરેલા એસક્યુએલ સ્ટેટમેન્ટમાં આ નકલી ફર્સ્ટ નામને ફક્ત પ્લગ કરે છે:

ડિરેક્ટરીમાંથી ફોન પસંદ કરો જ્યાં અંતિમ નામ = 'chapple' અને firstname = 'mike' અને (નકલી માંથી ગણતરી (*))> 0 અથવા '1' = '1'

તમે જોશો કે ઉપરનું વાક્યરચના એ મૂળ URL કરતાં થોડું અલગ છે. મેં એએસસીઆઈઆઇ સમકક્ષ માટે URL-encoded વેરીએબલને રૂપાંતર કરવાની સ્વાતંત્ર્યને લીધે ઉદાહરણને અનુસરવાનું સરળ બનાવ્યું છે. ઉદાહરણ તરીકે,% 3d એ '=' અક્ષર માટે URL- એન્કોડિંગ છે. મેં સમાન હેતુ માટે કેટલાક લાઇન બ્રેક્સ પણ ઉમેર્યા છે.

પરિણામોનું મૂલ્યાંકન

જ્યારે તમે ઉપર સૂચિબદ્ધ URL સાથે વેબપૃષ્ઠ લોડ કરવાનો પ્રયાસ કરો ત્યારે પરીક્ષણ આવે છે. જો વેબ એપ્લિકેશન સારી રીતે વર્તવામાં આવે છે, તો ડેટાબેસને ક્વેરી પૂરો પાડવા પહેલાં તે ઇનપુટમાંથી એક જ અવતરણ બહાર કાઢી નાખશે. આ ફક્ત એક અજાણ્યા લુકઅપમાં પરિણમશે જેનું પ્રથમ નામ છે જેમાં એસક્યુએલનો સમૂહ છે! તમે નીચેની એક જેવી એપ્લિકેશનથી ભૂલ સંદેશો જોશો:

ભૂલ: નામ માઇક + + અને + + (+ + + + + + + + + નકલી દ્વારા પસંદ કરો) +% 3e0 + અથવા + 1% 3d1 ચેપલ સાથે કોઈ વપરાશકર્તા મળ્યું નથી!

બીજી તરફ, જો એપ્લિકેશન એસક્યુએલ ઇન્જેક્શન માટે સંવેદનશીલ હોય, તો તે ડેટાબેઝમાં સીધું જ સ્ટેટમેન્ટ પસાર કરશે, જે બે શક્યતાઓ પૈકીની એક છે. પ્રથમ, જો તમારા સર્વર પાસે વિગતવાર ભૂલ સંદેશાઓ સક્ષમ છે (જે તમારે ન જોઈએ!), તો તમે આના જેવું કંઈક જોશો:

ODBC ડ્રાઇવર્સ ભૂલ '80040e37' માટે Microsoft OLE DB પ્રદાતા [માઈક્રોસોફ્ટ] [ઓડીબીસી SQL સર્વર ડ્રાઈવર] [SQL સર્વર] અમાન્ય ઓબ્જેક્ટ નામ 'નકલી'. /directory.asp, રેખા 13

બીજી બાજુ, જો તમારું વેબ સર્વર વિગતવાર ભૂલ સંદેશા દર્શાવતું નથી, તો તમને વધુ સામાન્ય ભૂલ મળશે, જેમ કે:

આંતરિક સર્વર ભૂલ સર્વરને એક આંતરિક ભૂલ અથવા ખોટી ગોઠવણી મળી છે અને તમારી વિનંતી પૂર્ણ કરવામાં અક્ષમ છે કોઈ ભૂલ આવી હોય તે સમયની જાણ કરવા માટે સર્વર સંચાલકનો સંપર્ક કરો અને કોઈ ભૂલ જેણે ભૂલ કરી હોય તે તમે કરી શક્યા હોત. આ ભૂલ વિશે વધુ માહિતી સર્વર ભૂલ લોગમાં ઉપલબ્ધ હોઇ શકે છે.

જો તમને ઉપરોક્ત બે ભૂલોમાંથી કોઈ એક પ્રાપ્ત થાય, તો તમારી અરજી એસક્યુએલ ઇન્જેક્શન હુમલા માટે સંવેદનશીલ છે! એસક્યુએલ ઇન્જેક્શન હુમલાઓ સામે તમારા કાર્યક્રમોને સુરક્ષિત કરવા માટે તમે કેટલાક પગલાં લઈ શકો છો: