SQL ಇಂಜೆಕ್ಷನ್ ದುರ್ಬಲತೆಗಳಿಗಾಗಿ ಪರೀಕ್ಷೆ

SQL ಇಂಜೆಕ್ಷನ್ ದಾಳಿಯು ಕ್ರಿಯಾತ್ಮಕ ವಿಷಯವನ್ನು ಸೃಷ್ಟಿಸಲು ಡೇಟಾಬೇಸ್ ಬ್ಯಾಕೆಂಡ್ ಅನ್ನು ಅವಲಂಬಿಸಿರುವ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಭಾರೀ ಅಪಾಯಗಳನ್ನುಂಟುಮಾಡುತ್ತದೆ. ಈ ವಿಧದ ದಾಳಿಯಲ್ಲಿ, ಹ್ಯಾಕರ್ಸ್ ತಮ್ಮದೇ ಆದ SQL ಆಜ್ಞೆಗಳನ್ನು ದತ್ತಸಂಚಯದಿಂದ ಹೊರಡಿಸಿದವರಲ್ಲಿ ಸೇರಿಸುವ ಪ್ರಯತ್ನದಲ್ಲಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತಾರೆ. ಉದಾಹರಣೆಗಾಗಿ, ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ SQL ಇಂಜೆಕ್ಷನ್ ದಾಳಿಗಳನ್ನು ನೋಡಿ. ಈ ಲೇಖನದಲ್ಲಿ, SQL ಇಂಜೆಕ್ಷನ್ ದಾಳಿಗೆ ಒಳಗಾಗುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ನೀವು ಹಲವಾರು ವಿಧಾನಗಳನ್ನು ನೋಡೋಣ.

ಸ್ವಯಂಚಾಲಿತ SQL ಇಂಜೆಕ್ಷನ್ ಸ್ಕ್ಯಾನಿಂಗ್

ಒಂದು ಸಾಧ್ಯತೆಯೆಂದರೆ HP ನ ವೆಬ್ ಇನ್ಸ್ಪೆಕ್ಟ್, ಐಬಿಎಂನ ಅಪ್ಸ್ಕ್ಯಾನ್ ಅಥವಾ ಕೆನ್ಜಿಕ್ನ ಹೇಲ್ ಸ್ಟಾರ್ಮ್ನಂತಹ ಒಂದು ಸ್ವಯಂಚಾಲಿತ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ದುರ್ಬಲತೆ ಸ್ಕ್ಯಾನರ್ ಅನ್ನು ಬಳಸುತ್ತಿದೆ. ಎಲ್ಲಾ ಉಪಕರಣಗಳು ಸಂಭಾವ್ಯ SQL ಇಂಜೆಕ್ಷನ್ ದೋಷಗಳಿಗೆ ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಸುಲಭ, ಸ್ವಯಂಚಾಲಿತ ಮಾರ್ಗಗಳನ್ನು ನೀಡುತ್ತವೆ. ಆದಾಗ್ಯೂ, ಅವರು ಸಾಕಷ್ಟು ದುಬಾರಿ, ಪ್ರತಿ ಸೀಟಿನಲ್ಲಿ $ 25,000 ವರೆಗೆ ಚಾಲನೆಯಲ್ಲಿರುತ್ತಾರೆ.

ಮ್ಯಾನುಯಲ್ SQL ಇಂಜೆಕ್ಷನ್ ಪರೀಕ್ಷೆಗಳು

ಮಾಡಲು ಕಳಪೆ ಅಪ್ಲಿಕೇಶನ್ ಡೆವಲಪರ್ ಯಾವುದು? ವೆಬ್ ಬ್ರೌಸರ್ಗಿಂತಲೂ ಏನೂ ಉಪಯೋಗಿಸದೆ SQL ಇಂಜೆಕ್ಷನ್ ದೋಷಗಳಿಗಾಗಿ ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ನೀವು ಕೆಲವು ಮೂಲಭೂತ ಪರೀಕ್ಷೆಗಳನ್ನು ನಡೆಸಬಹುದು. ಮೊದಲಿಗೆ, ಎಚ್ಚರಿಕೆಯ ಒಂದು ಪದವೆಂದರೆ: ನಾನು ವಿವರಿಸುವ ಪರೀಕ್ಷೆಗಳು ಮೂಲ SQL ಇಂಜೆಕ್ಷನ್ ಲೋಪಗಳಿಗೆ ಮಾತ್ರ ನೋಡುತ್ತವೆ. ಅವರು ಸುಧಾರಿತ ತಂತ್ರಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದಿಲ್ಲ ಮತ್ತು ಬಳಸಲು ಸ್ವಲ್ಪ ಬೇಸರದವರು. ನೀವು ಅದನ್ನು ನಿಭಾಯಿಸಬಹುದಾದರೆ, ಸ್ವಯಂಚಾಲಿತ ಸ್ಕ್ಯಾನರ್ನೊಂದಿಗೆ ಹೋಗಿ. ಆದಾಗ್ಯೂ, ಆ ಬೆಲೆ ಟ್ಯಾಗ್ ಅನ್ನು ನಿಭಾಯಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಕೈಪಿಡಿಯ ಪರೀಕ್ಷೆಯು ಒಂದು ಉತ್ತಮ ಮೊದಲ ಹಂತವಾಗಿದೆ.

ಅಪ್ಲಿಕೇಶನ್ ದುರ್ಬಲವಾಗಿದೆಯೇ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಸುಲಭ ಮಾರ್ಗವೆಂದರೆ ನಿರುಪದ್ರವಿ ಇಂಜೆಕ್ಷನ್ ದಾಳಿಯ ಪ್ರಯೋಗವಾಗಿದೆ ಅದು ಅದು ಯಶಸ್ವಿಯಾದಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ಗೆ ನಿಜವಾಗಿ ಹಾನಿಯಾಗುವುದಿಲ್ಲ ಆದರೆ ನೀವು ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸಲು ಅಗತ್ಯವಿರುವ ಸಾಕ್ಷಿ ನಿಮಗೆ ಒದಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಒಬ್ಬ ವ್ಯಕ್ತಿಯನ್ನು ಹುಡುಕುವ ಮತ್ತು ಸಂಪರ್ಕ ಮಾಹಿತಿಯ ಪರಿಣಾಮವಾಗಿ ಸರಳ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೊಂದಿದ್ದೀರಾ ಎಂದು ಭಾವಿಸಿ. ಆ ಪುಟವು ಈ ಕೆಳಗಿನ URL ಸ್ವರೂಪವನ್ನು ಬಳಸಬಹುದು:

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

ಕೆಳಗಿನವುಗಳಿಗೆ ಹೋಲುವ ಪ್ರಶ್ನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಪುಟವು ಡೇಟಾಬೇಸ್ ಲುಕಪ್ ಅನ್ನು ಮಾಡುತ್ತದೆ ಎಂದು ನಾವು ಊಹಿಸಬಹುದು:

SELECT ಫೋನ್ FROM ಡೈರೆಕ್ಟರಿ 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 ಹೇಳಿಕೆಯಲ್ಲಿ ಈ ನಕಲಿ ಮೊದಲ ಹೆಸರನ್ನು ಪ್ಲಗ್ ಹಾಕುತ್ತದೆ, ಇದರ ಪರಿಣಾಮವಾಗಿ:

Lastname = 'chapple' ಮತ್ತು firstname = 'mike' ಮತ್ತು (ನಕಲಿನಿಂದ ಎಣಿಕೆ (*) ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಿಕೊಳ್ಳಿ> 0 OR '1' = '1'

ಮೇಲೆ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮೂಲ URL ನಲ್ಲಿ ಸ್ವಲ್ಪ ಭಿನ್ನವಾಗಿದೆ ಎಂದು ನೀವು ಗಮನಿಸಬಹುದು. ಉದಾಹರಣೆಯನ್ನು ಸುಲಭವಾಗಿ ಅನುಸರಿಸಲು ಸುಲಭವಾಗುವಂತೆ ಅವುಗಳ ASCII ಸಮಾನತೆಗಾಗಿ URL- ಎನ್ಕೋಡೆಡ್ ವೇರಿಯಬಲ್ ಅನ್ನು ಪರಿವರ್ತಿಸುವ ಸ್ವಾತಂತ್ರ್ಯವನ್ನು ನಾನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ. ಉದಾಹರಣೆಗೆ,% 3d ಎನ್ನುವುದು '=' ಅಕ್ಷರಕ್ಕಾಗಿ URL- ಎನ್ಕೋಡಿಂಗ್ ಆಗಿದೆ. ಇದೇ ರೀತಿಯ ಉದ್ದೇಶಗಳಿಗಾಗಿ ನಾನು ಕೆಲವು ಸಾಲು ವಿರಾಮಗಳನ್ನು ಸಹ ಸೇರಿಸಿದ್ದೇನೆ.

ಫಲಿತಾಂಶಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು

ಮೇಲಿನ ಪಟ್ಟಿ ಮಾಡಿದ URL ನೊಂದಿಗೆ ವೆಬ್ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಪರೀಕ್ಷೆಯು ಬರುತ್ತದೆ. ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಉತ್ತಮವಾಗಿ ವರ್ತಿಸಿದರೆ, ಪ್ರಶ್ನೆಗೆ ಡೇಟಾಬೇಸ್ಗೆ ಹೋಗುವ ಮೊದಲು ಇದು ಇನ್ಪುಟ್ನಿಂದ ಏಕೈಕ ಉಲ್ಲೇಖಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ಇದು SQL ನ ಗುಂಪನ್ನು ಒಳಗೊಂಡಿರುವ ಮೊದಲ ಹೆಸರಿನೊಂದಿಗೆ ಯಾರಿಗಾದರೂ ವಿಲಕ್ಷಣವಾಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ! ಕೆಳಗಿನ ಒಂದು ರೀತಿಯ ಅಪ್ಲಿಕೇಶನ್ನಿಂದ ನೀವು ದೋಷ ಸಂದೇಶವನ್ನು ನೋಡುತ್ತೀರಿ:

ದೋಷ: ಹೆಸರು ಮೈಕ್ ಮೈಕ್ ಮತ್ತು + ಕಂಡುಬಂದಿಲ್ಲ + (ಆಯ್ಕೆ + ಎಣಿಕೆ (*) + + ನಕಲಿ) +% 3e0 + OR + 1% 3d1 ಚಾಪಲ್!

ಮತ್ತೊಂದೆಡೆ, ಅಪ್ಲಿಕೇಶನ್ SQL ಇಂಜೆಕ್ಷನ್ಗೆ ದುರ್ಬಲವಾಗಿದ್ದರೆ, ಅದು ಹೇಳಿಕೆಯನ್ನು ಡೇಟಾಬೇಸ್ಗೆ ನೇರವಾಗಿ ರವಾನಿಸುತ್ತದೆ, ಇದು ಎರಡು ಸಾಧ್ಯತೆಗಳಲ್ಲಿ ಒಂದನ್ನು ನೀಡುತ್ತದೆ. ಮೊದಲನೆಯದಾಗಿ, ನಿಮ್ಮ ಸರ್ವರ್ ವಿವರವಾದ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದರೆ (ನೀವು ಮಾಡಬಾರದು!), ನೀವು ಈ ರೀತಿ ನೋಡುತ್ತೀರಿ:

ODBC ಚಾಲಕಗಳಿಗೆ ದೋಷ '80040e37' ಮೈಕ್ರೋಸಾಫ್ಟ್ OLE ಡಿಬಿ ಒದಗಿಸುವವರು [ಮೈಕ್ರೋಸಾಫ್ಟ್] [ODBC SQL ಸರ್ವರ್ ಚಾಲಕ] [SQL ಸರ್ವರ್] ಅಮಾನ್ಯವಾದ ವಸ್ತು ಹೆಸರು 'ನಕಲಿ'. /directory.asp, ಸಾಲು 13

ಮತ್ತೊಂದೆಡೆ, ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ವಿವರವಾದ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಪ್ರದರ್ಶಿಸದಿದ್ದರೆ, ನೀವು ಹೆಚ್ಚು ಸಾಮಾನ್ಯ ದೋಷವನ್ನು ಪಡೆಯುತ್ತೀರಿ, ಉದಾಹರಣೆಗೆ:

ಆಂತರಿಕ ಸರ್ವರ್ ದೋಷ ಸರ್ವರ್ ಆಂತರಿಕ ದೋಷ ಅಥವಾ ತಪ್ಪಾದ ಸಂರಚನೆ ಎದುರಿಸಿದೆ ಮತ್ತು ನಿಮ್ಮ ವಿನಂತಿಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದೋಷ ಸಂಭವಿಸಿದ ಸಮಯವನ್ನು ಮತ್ತು ದೋಷವನ್ನು ಉಂಟುಮಾಡಿದ ನೀವು ಮಾಡಿದ ಯಾವುದನ್ನಾದರೂ ತಿಳಿಸಲು ದಯವಿಟ್ಟು ಸರ್ವರ್ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ಈ ದೋಷದ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಸರ್ವರ್ ದೋಷ ಲಾಗ್ನಲ್ಲಿ ಲಭ್ಯವಿರಬಹುದು.

ಮೇಲಿನ ಎರಡು ದೋಷಗಳಲ್ಲಿ ಒಂದನ್ನು ನೀವು ಸ್ವೀಕರಿಸಿದರೆ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ SQL ಇಂಜೆಕ್ಷನ್ ದಾಳಿಗೆ ದುರ್ಬಲವಾಗಿದೆ! SQL ಇಂಜೆಕ್ಷನ್ ಆಕ್ರಮಣಗಳ ವಿರುದ್ಧ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ರಕ್ಷಿಸಲು ನೀವು ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ಕೆಲವು ಹಂತಗಳು: