November 15, 2018

Language:

យលដឹងពីការវាយប្រហារ SQL Injection និងការការពារ

១. ព័ត៌មានទូទៅ

ស្វែងយល់អំពី តើអ្វីទៅជាការវាយប្រហារបែប 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