Understanding SQL Injection Attack

ស្វែងយល់អំពី តើអ្វីទៅជាការវាយប្រហារបែប SQL Injection

SQL Injection គឺជាវិធីសាស្ត្រមួយនៃការវាយប្រហារទៅលើវិបសាយ (web application) ដើម្បីលួចយកទិន្នន័យពីអង្គភាពរបស់អ្នក។ វាប្រហែលគឺជា បច្ចេកទេសមួយដ៏ពេញនិយមនៃការវាយប្រហារក្នុងស្រទាប់កម្មវិធី (application layer) នៅក្នុងបច្ចុប្បន្នកាលនេះ។ វាគឺជាប្រភេទមួយនៃការវាយប្រហារ ដែលប្រើប្រាស់នូវកង្វៈខាតនៃការសរសេរកូដ នៅក្នុង Web Applications របស់អ្នក ដែលអនុញ្ញាតឲ្យអ្នកវាយប្រហារធ្វើការ ដាក់បញ្ចូលនូវពាក្យបញ្ជា SQL ចូលទៅក្នុង ទីតាំងណាមួយ (ឧ. Login Form) ដើម្បីអនុញ្ញាតឲ្យពួកគេមានសិទ្ធចូលទៅកាន់ប្រព័ន្ធរបស់អ្នកបាន។

Structured Query Language (SQL) គឺជាកម្មវិធីសរសេរកូដមួយ ដែលត្រូវបានប្រើប្រាស់សម្រាប់ធ្វើការគ្រប់គ្រងទិន្នន័យនៅក្នុងដាតាបេស ដែលជាទូទៅ យើងប្រើប្រាស់នូវ relational database management systems (RDBMS)។ ប្រភេទនៃប្រព័ន្ធគ្រប់គ្រង ដែលប្រើប្រាស់នូវ SQL មានដូចជា Microsoft SQL Database, Oracle, MySQL, PostgreSQL, និងផ្សេងៗទៀត ។

ខាងក្រោមនេះគឺជាឧទាហរណ៍សាមញ្ញមួយ ដើម្បីទាញយកនូវព័ត៌មានអំពី ​Table

Select * from table_name

ឃ្លាខាងលើនេះគឺប្រើប្រាស់នូវនិមិត្តសញ្ញា * ដើម្បីទាញយកនូវទិន្នន័យដែលមាននៅក្នុងតារាងណាមួយ ។ ខាងក្រោមនេះគឺជាវិដេអូដែលបង្ហាញពីវិធីសាស្ត្រ នៃការប្រើប្រាស់ SQL Injection ចូលទៅក្នុងវិបសាយរបស់អ្នក។

តើអ្នកវាយប្រហារធ្វើដូចម្តេច?

អ្នកវាយប្រហារមិនត្រឹមតែធ្វើការទាញយកនូវព័ត៌មានពីក្នុងវិបសាយរបស់អ្នកប៉ុណ្ណោះទេ គឺវាអាស្រ័យទៅតាមគោលបំណងនៃអ្នកវាយប្រហារនោះ ដោយវាអាចជា ការរំលងនូវការ Login (bypass logins) ដើម្បីភ្ជាប់ទៅកាន់ទិន្នន័យ ឬធ្វើការកែប្រែព័ត៌មាននៃវិបសាយ (ដូចជាការដាក់ទំព័រដំបូងថ្មីមួយផ្សេងទៀត) ឬអាចធ្វើការបិទនូវម៉ាស៊ីនមេ។ ជារឿយៗគឺពេលដែលមានការវាយប្រហារ គឺករណីទាំងអស់នេះ នឹងកើតមានឡើង។

ជំហានដំបូងអ្នកវាយប្រហារធ្វើការស្កេននូវវិបសាយនោះ ដើម្បីស្វែងរកចំនុចខ្សោយ។ អ្នកជឿឬមិនជឿ ប្រព័ន្ធដែលល្អបំផុតសម្រាប់អ្នកវាយប្រហារគឺ វិបសាយ Google។ ដោយប្រើប្រាស់បច្ចេកវិទ្យា Google Dork អ្នកវាយប្រហារអាចធ្វើការស្វែងរកនូវចំនុចខ្សោយនានាបានដោយងាយ។ បន្ទាប់វិបសាយត្រូវបានរកឃើញ អ្នកវាយប្រហារនឹងព្យាយាមស្វែងរកនូវទិន្នន័យទាក់ទងទៅនឹង usernames/passwords ហើយនឹងទិន្នន័យសំខាន់ៗមួយចំនួនទៀត។

អ្នកអាចចូលទៅក្នុង Google.com ហើយវាយពាក្យបញ្ជាដូចខាងក្រោម ៖

• inurl:index.php?id=
• inurl:gallery.php?id=
• inurl:article.php?id=
• inurl:pageid=

ព័ត៌មានដែលទទួលបានពីការស្វែងរកខាងលើ អ្នកនឹងអាចធ្វើការត្រួតពិនិត្យរកកំហុសឆ្គងនៃវិបសាយនិមួយៗ។

www.TargetSite.com + inurl:index.php?id=

ខាងក្រោមនេះគឺជាវិដេអូដែលបង្ហាញពីវិធីសាស្ត្រក្នុងការប្រើប្រាស់ Blind SQL injection។ កម្មវិធីដែលប្រើប្រាស់នេះមានឈ្មោះថា SQLMap ដែលមានសមត្ថភាពក្នុងការវាយបំបែកពាក្យសម្ងាត់ ​(hashes) ។

វិធីសាស្ត្រការពារ

ដំណឹងល្អគឺថា ការវាយប្រហារបែបនេះគឺវាងាយស្រួលបំផុតដើម្បីការពារ និងជៀសវាង។ គម្រោង Open Web Application Security Project (OWASP) មាននូវឯកសារបង្ហាញពីការការពារ SQL Injection (SQL Injection Prevention Cheat Sheet) ដែលចង្អុលបង្ហាញនូវចំនុចធំៗ និងការការពារ មានដូចខាងក្រោម៖

១. Prepared Statements (Parameterized Queries) – Parameterized queries បង្ខំឲ្យអ្នកអភិវឌ្ឍកូដកម្មវិធី ធ្វើការកំណត់នូវរាល់ SQL Code ទាំងអស់ ហើយបញ្ជូនរាល់ parameter និមួយៗទៅកាន់ query ដែលអនុញ្ញាតឲ្យដាតាបេស អាចចែកឲ្យដាច់ពីគ្នារវាងកូដ និងទិន្នន័យ ទោះបីជាការបញ្ចូលទិន្នន័យប្រភេទអ្វីក៏ដោយ។

២. Stored Procedures – គឺត្រូវបានកំណត់ និងរក្សាទុកនៅក្នុងដាតាបេសខ្លួនឯងផ្ទាល់ ហើយបន្ទាប់មក ហៅមកពី application វិញ ។

៣. Escaping all User Supplied Input – រាល់ដាតាបសេនិមួយៗគឺមាននូវយន្តការដើម្បីទប់ស្កាត់នូវកូដមិនសមរម្យ (និមិត្តសញ្ញា) ដែលបញ្ជូល ដោយអ្នកប្រើប្រាស់ ដែលអាចជៀសផុតនូវការវាយប្រហារបែប SQL Injection មួយចំនួន។

ចំនុចការពារបន្ថែមទៀតរួមមាន៖

១. Least Privilege – ធ្វើការកំណត់សិទ្ធិឲ្យនៅទាបបំផុត ដែលផ្តល់ទៅឲ្យគណនីដាតាបេសនិមួយៗ

២. White List Input Validation – ធ្វើិការផ្ទៀងផ្ទាត់នូវការបញ្ចូលព័ត៌មាន ដើម្បីការពារការបញ្ចូលទិន្នន័យមិនសមរម្យ មុនពេលដែលវាដំណើរការដោយកម្មវិធី

Exit mobile version