១. ព័ត៌មានទូទៅ
ស្វែងយល់អំពី តើអ្វីទៅជាការវាយប្រហារបែប SQL Injection
ការវាយប្រហារ SQL Injection គឺជាវិធីសាស្ត្រមួយនៃការវាយប្រហារទៅលើកកម្មវិធីវេប (web application) ឧ. វេបសាយជាដើម ដើម្បីលួចយកព័ត៌មាន ឬទិន្នន័យសំខាន់ពីអង្គភាពណាមួយ វាអាចជាបច្ចេកទេសមួយដ៏ពេញនិយមសម្រាប់ការវាយប្រហារទៅលើស្រទាប់កម្មវិធី (application layer)។ SQL Injection ធ្វើការវាយប្រហារទៅលើចំនុចខ្សោយនៃកូដដែលបានបងើត Web Applications នោះ អ្នកវាយប្រហារធ្វើការដាក់បញ្ចូលនូវពាក្យបញ្ជា “SQL” ចូលទៅក្នុង ទីតាំងណាមួយ (ឧ. Login Form) ដើម្បីអនុញ្ញាតឲ្យពួកគេមានសិទ្ធចូលទៅកាន់ប្រព័ន្ធរបស់អ្នកបាន។
SQL Injection ប្រើប្រាស់នូវភាសា Structured Query Language (SQL) ដែលជាភាសាមួយដែលត្រូវបានប្រើប្រាស់សម្រាប់ធ្វើការគ្រប់គ្រងទិន្នន័យនៅក្នុង Database ដែលភាគច្រើនប្រើប្រាស់នូវ relational database management systems (RDBMS) ប្រភេទនៃប្រព័ន្ធគ្រប់គ្រង ដែលប្រើប្រាស់នូវ SQL មានដូចជា Microsoft SQL Database, Oracle, MySQL, PostgreSQL និងផ្សេងៗទៀត ។
ខាងក្រោមនេះគឺជាឧទាហរណ៍សាមញ្ញមួយ ដើម្បីទាញយកនូវព័ត៌មានអំពី Table
Select * from table_name;
ឃ្លាខាងលើនេះគឺប្រើប្រាស់នូវនិមិត្តសញ្ញា * ដើម្បីទាញយកនូវទិន្នន័យទាំងអស់ពីក្នុងតារាង “table_name”
២. ដំណើរការនៃការវាយប្រហារ SQL Injection
អ្នកវាយប្រហារមិនត្រឹមតែអាចធ្វើការទាញយកនូវព័ត៌មានពីក្នុងវេបសាយរបស់អ្នកប៉ុណ្ណោះទេ គឺវាអាស្រ័យទៅតាមចំនុចខ្សោយដែលមាននៅក្នុង web application ពេលខ្លះអ្នកវាយប្រហារអាចធ្វើការរំលងនូវការ Login (bypass logins) ដើម្បីភ្ជាប់ទៅកាន់ទិន្នន័យ កែប្រែព័ត៌មានដូចជាការកែប្រែទំព័រមុខ (Web Defacement) លុបទិន្នន័យ ឬអាចធ្វើការបិទនូវម៉ាស៊ីនមេជាដើម ជារឿយៗគឺពេលដែលមានការវាយប្រហារបែបនេះ គឺករណីដែលបានរៀបរាប់អាចនឹងកើតមានឡើង។
ជំហានដំបូងគឺអ្នកវាយប្រហារធ្វើការស្កេននូវវេបសាយដើម្បីស្វែងរកចំនុចខ្សោយ អ្នកវាយប្រហារអាចប្រើប្រាស់បច្ចេកទេស Google Dork ដែលអាចជាវិធីសាស្ត្រដ៏មានប្រសិទ្ធភាពមួយក្នុងការស្វែងរកចំនុចខ្សោយនៃវេបសាយបានដោយងាយៗ បន្ទាប់ពីការរកឃើញអ្នកវាយប្រហារនឹងព្យាយាមស្វែងរកនូវទិន្នន័យទាក់ទងទៅនឹងឈ្មោះ និងពាក្យសំងាត់របស់គណនីនៃអភិបាលគ្រប់គ្រងវេបសាយ (usernames/passwords) ហើយនឹងទិន្នន័យសំខាន់ៗមួយចំនួនទៀត។
ខាងក្រោមជាឧទាហរណ៍ នៃការប្រើប្រាស់ពាកបញ្ជាររបស់ google dork៖
- inurl:index.php?id=
- inurl:gallery.php?id=
- inurl:article.php?id=
- inurl:pageid=
អ្នកអាចសាកល្បងដូចខាងក្រោមដោយវាយបញ្ចូលនូវវេបសាយ និងពាក្យបញ្ជារ
www. [TargetSite.com] + inurl:index.php?id=
source: https://d3eaqdewfg2crq.cloudfront.net/wp-content/uploads/2018/01/image1.png
៣. វិធីសាស្ត្រការពារ
ដំណឹងល្អគឺថា ការវាយប្រហារបែបនេះគឺវាមានងាយស្រួលក្នុងការការពារ និងជៀសវាង មានគម្រោងមួយដែលបានបងើតឡើងដើម្បីធ្វើការការពារទៅលើចំនុចខ្សោយនៃការវាយប្រហារ SQL Injection ដែលមានឈ្មោះថា Open Web Application Security Project (OWASP) វាមាននូវឯកសារបង្ហាញពីការការពារ SQL Injection (SQL Injection Prevention Cheat Sheet) ដែលចង្អុលបង្ហាញនូវចំនុចធំៗ និងវិធីការពារមានដូចខាងក្រោម៖
- Prepared Statements (Parameterized Queries) – Parameterized queries អ្នកអភិវឌ្ឍកូដកម្មវិធីត្រូវធ្វើការកំណត់នូវរាល់ SQL Code ទាំងអស់ ហើយបញ្ជូនរាល់ parameter និមួយៗទៅកាន់ query ដែលអនុញ្ញាតឲ្យ Database អាចចែកឲ្យដាច់ពីគ្នារវាងកូដ និងទិន្នន័យ ទោះបីជាការបញ្ចូលទិន្នន័យប្រភេទអ្វីក៏ដោយ។
- Stored Procedures – គឺត្រូវបានកំណត់ និងរក្សាទុកនៅក្នុង Databases ហើយបន្ទាប់មក ហៅមកពី application វិញ។
- Escaping all User Supplied Input – រាល់ Database និមួយៗគឺមាននូវយន្តការដើម្បីទប់ស្កាត់នូវកូដមិនសមរម្យ (និមិត្តសញ្ញា) ដែលបញ្ជូលដោយអ្នកប្រើប្រាស់ ដែលអាចជៀសផុតនូវការវាយប្រហារបែប SQL Injection មួយចំនួន។
ចំនុចការពារបន្ថែមទៀតរួមមាន៖
១. Least Privilege – ធ្វើការកំណត់សិទ្ធិឲ្យនៅទាបបំផុតដែលផ្តល់ទៅឲ្យគណនី Databases និមួយៗ
២. White List Input Validation – ធ្វើការផ្ទៀងផ្ទាត់នូវការបញ្ចូលព័ត៌មាន ដើម្បីការពារការបញ្ចូលទិន្នន័យមិនសមរម្យ មុនពេលដែលវាដំណើរការដោយកម្មវិធី
៤. វេបសាយពាក់ព័ន្ធ
https://www.acunetix.com/websitesecurity/sql-injection/
https://www.incapsula.com/web-application-security/sql-injection.html/
https://www.owasp.org/index.php/SQL_Injection