September 24, 2020

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

***Disclaimer: CamCERT own some of the content. Our purpose is pure to help spread the awareness, tips or other information related to security to everyone. Even though every information is true, accurate, completed and appropriate, we make no responsibility nor warranty since everything could go wrong.